- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть чудная БД.
key - text
wordstat - int
id - int (AI)
записей больше 20кк (пока перегоняю, точно не известно).
Делаю на mysql, но есть сомнения, в правильности этого выбора
Выборки будут:
select from where key like '%some_string%'
Если вкинуть сразу 500-1000 ключей на like, то есть предположение, что все загнется.
В принципе памяти много на машине, наверное, есть какой-то вариант загнать всё в память и там уж выполнять поиск. (скопировать в таблицу type MEMORY)
Возможно есть иные технические решения для подобных размеров
like '%some_string%' и при одном ключе будет грузить все на 100% и работать медленно. сделать тыщу выборок это вообще будет нереально. нужны индексы, но хз как в такой ситуации их применить.
А именно LIKE %some_string% ?
Может подойдет алгоритм поиска по словам?
Например если some_string = bb то
aaa bb cc - находит
bb cc - находит
aa bbc cc - не находит.
P.S. А вообще у мускуля есть индекс типа FULLTEXT именно для LIKE %some_string% только я к сожалению никогда не задумывался как именно и насколько эффективно он работает.
пример.
Есть множество записей:
(подобного типа)
Мне надо для сайта найти все ключи ноутбук
like - тут видится единственный вариант.
500 - просто для скорости, 1 раз закинул задачу и пусть себе скрипт ищет.
А в сторону всяких sphinx, elasticsearch не смотрели? Они же там и морфологию умеют и как раз для поиска по словам заточены.
elasticsearch
должно помочь
(подобного типа)
Мне надо для сайта найти все ключи ноутбук
like - тут видится единственный вариант.
Хорошо, а если по "ноутбук" будет находить "три ноутбука", но не будет находить "три зеленыхноутбуков" - так подойдет?
мне нужны все вхождения, потому слово режется до минимума.
Допустим для сайта по драйверам из это базы мы начнем искать: like '%драйвер%' итд...
sphinx - раньше юзал (чудная вещь), но на малых базах, не уверен, что он спокойно осилит 4Гб и будет быстрее like из memory
Соответственно и создал тему, вдруг у кого есть подобный опыт
TF-Studio, стоит сначала с базой поработать, привести её к удобному виду, создать индексы, определить исходную форму слов...
а уже потом делать выборки и обновления :)
TF-Studio, в качестве примера: есть elasticsearch база на прим. 50кк документов. общий размер - 40ГБ. вчера нужна была выборка по префиксу ХХХ, т.е. находится
XXXYYY AAAA
AAAA XXXYYY
я делал выборки по 1000 штук, время на 1 - 0,2 секунды
сервер hetzner с 32ГБ РАМ
like '%xxx%' не использует индексы, поэтому никак нельзя так делать. а вот like 'xxx%' использует - поэтому вам надо бить по словам таблицу или использовать полнотекстовый поиск.