поиск по комбинации структурированных критериев и свободного текста / ключевого слова / фразы - NOSQL против Lucene / Sphinx - PullRequest
1 голос
/ 20 сентября 2010

у нас есть приложение eMall, основанное в основном на основной таблице MySQL размером ~ 500 тыс. Строк (с таблицами подробностей, в которых хранятся поля без возможности поиска, и другими связанными таблицами с информацией о магазине и т. Д.).

Сегодня пользователи могут выполнять поиск на основе определенной структурированнойданные о продукте (например, бренд, категория, цена, конкретный магазин и т. д.).

Мы также хотели бы поддерживать поиск по ключевым словам в сочетании со структурированными данными.

Мы также хотим повысить производительностьнаше приложение и рассматриваем наши варианты инфраструктуры для достижения как функциональных требований поиска по ключевым словам, так и технических требований повышения скорости:

Lucene, Sphinx и т. д. для индексации всех продуктов?БД NoSQL (монго, кушетка и т. Д.), Используемый в качестве промежуточного уровня кэширования перед MySQL?БД NOSQL для замены MySQL?

Комбинация вышеперечисленного?

В случае Lucene и Sphinx - насколько они гибки с точки зрения объединения структурированных критериев?Или нам нужно сначала запустить текстовый поиск, а затем отфильтровать результаты по второму структурированному запросу на MySQL?

Любые подсказки или уроки, извлеченные из вашего собственного опыта, будут более чем приветствоваться!

заранее спасибо

Ответы [ 2 ]

3 голосов
/ 20 сентября 2010

Я предлагаю вам использовать Solr - Включает поиск по ключевым словам на основе Lucene. Вы можете использовать фасеты и фильтры для структурированных данных о продукте. 500 K предметов кажутся размером, с которым Solr может справиться довольно легко. Это можно считать базой данных NoSQL, и ее проще использовать, чем чистый Lucene. Вы можете перейти к соответствующим соображениям в Полнотекстовая поисковая система против СУБД .

1 голос
/ 23 сентября 2010

Я использую Sphinx для полнотекстового поиска, аналогичного вашим требованиям (поиск по свободному тексту и структурированным атрибутам), с несколькими ГБ данных и 5 миллионами строк в MySQL. Я очень доволен производительностью и надежностью (даже ни одного простоя).

Преимущество использования Sphinx в том, что оно предназначено для использования с MySQL, поэтому его очень легко настроить. Обычно вы можете подготовить всю систему менее чем за час, так почему бы не попробовать?

...