Задать вопрос
@agentx001

Как обрабатывать большие базы данных?

Всем привет!
Делаю небольшой сервис по поиску книг. Имеется объемная (600 000 строк) база данных, примерно такая:
5bcc52267febe041372095.png
Сейчас поиск ведется исключительно по полю Title таблицы Books. Поисковый запросы выглядит вот так:
"SELECT * FROM `Books` WHERE `Title` LIKE '%война%'  AND `Title` LIKE '%мир%'  DESC LIMIT 15

То есть если задать поиск по фразе "толстой война мир" результата не будет. Если же поиск выполнять по словам с условием OR то из базы дынных найдется все кроме того что нужно.
Я хочу добавить в таблицу Books еще один столбец AuthorTitle в котором будет запись вида "толстой война мир". Написал для этого скрипт на node.js, но столкнулся с тем что все это обрабатывается достаточно медленно. И на проход по всей базе данных может уйти несколько суток. Возможно, существуют какие-то инструменты для подобных задач?
Как вообще правильнее всего реализовывать подобный поиск? Может лучше не добавлять столбец AuthorTitle, а делать поиск по таблице Authors и среди книг конкретного автора искать уже с условием OR?
Буду рад любым советам, мнениям и рекомендация. Спасибо :)
  • Вопрос задан
  • 149 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Sphinx вам в руки и будет счастье
Ответ написан
Комментировать
index0h
@index0h
PHP, Golang. https://github.com/index0h
Mysql не предназначен для полнотекстового поиска. Забудьте про существование like.
Под вашу задачу вполне может зайти elasticsearch.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы