Shelvacu

Поисковая система для базы данных MySQL с элементами ~ 15 тыс.


База данных Mysql Поисковый движок Софт

Мне нужна библиотека, которую я могу использовать с моим сайтом, в которой я могу ввести заголовок и описание всех элементов, которые у меня есть, а затем ввести условия поиска на естественном английском языке и получить соответствующие результаты. Я очень хочу заглянуть в платные или даже SaaS-решения, а также с открытым исходным кодом.


Чтобы избежать проблемы X / Y , вот моя проблема:

У меня есть эта база данных, которые продаются на сайте электронной коммерции. Люди хотят найти предметы, а наверху есть панель поиска. Прежде чем я попал сюда, он просто взял каждое ключевое слово и сделал запрос, похожий на

 SELECT name,description,price,etc... FROM products WHERE name LIKE '%keyword1%' OR name LIKE '%keyword2%' OR description LIKE '%keyword1%' OR description LIKE '%keyword2%' 

Затем я изменил его, чтобы использовать индекс FULLTEXT MySQL как по имени, так и по описанию, а затем реализовал решение доморощенного для анализа строк типа «4 фута» как в запросе, так и в заголовке и сопоставлять их как измерения, а не как голой текст. Даже сейчас многие продукты не появляются, когда они должны или слишком далеко вниз по списку. В конце концов, я понял, что кто-то сделал это раньше, и я должен использовать их код вместо того, чтобы пытаться сделать это сам, так как я уже слишком много времени погрузил в это.

Basil Bourque
FYI, 15 000 наименований товаров не являются «большой» суммой практически для любой базы данных.

Shelvacu
@BasilBourque достаточно справедливо, я отредактировал соответственно.

Ответы


Mario Zannone

Возможно, полезно использовать Apache Solr или ElasticSearch .

Вы можете установить их самостоятельно, или вы можете использовать поставщика SaaS, предлагающего их.


DejanLekic

MariaDB / MySQL уже имеет (отличный) полнотекстовый поиск . Я рекомендую сначала попробовать использовать эту, а не какую-то стороннюю библиотеку.

Shelvacu
Как я уже упоминал в своем вопросе, я уже пытался использовать индекс полнотекстового поиска. Он работает хорошо, но не является полнофункциональным, чтобы соответствовать моим потребностям, и мне пришлось добавить к нему, что быстро стало очень грязным. В частности, он не может искать номера деталей с тире и не позволяет мне расставлять приоритеты по некоторым ключевым словам по сравнению с другими.

Смотри также