Когда рассматривать Solr - PullRequest
       4

Когда рассматривать Solr

31 голосов
/ 10 февраля 2011

Я работаю над приложением, которое должно выполнять интересные действия с поиском, включая полнотекстовый поиск, выделение совпадений, поиск по фасетам и т. Д. *

Набор данных, вероятно, будет между 3000-10000 записей с 20-30 полями на каждом, и все хранится в MySQL.Профиль трафика сайта, скорее всего, будет небольшого размера.

Все эти требования могут быть выполнены (неуклюже) в MySQL, но в какой момент (с точки зрения размера данных и уровней трафика)) стоит ли смотреть на более сфокусированные технологии, такие как Solr или Sphinx?

Ответы [ 3 ]

43 голосов
/ 10 февраля 2011

Этот вопрос требует ответа на очень широкий вопрос во всех аспектах.Очень хорошо есть определенные особенности, которые могут сделать одну систему превосходящей другую для особого случая использования, но я хочу охватить основы здесь.

Я рассмотрю исключительно Solr как пример для нескольких поисковых систем, которые работаютпримерно так же.

Я хочу начать с некоторых неопровержимых фактов:

  • Вы не можете полагаться на Solr / Lucene в качестве защищенной базы данных.Есть список фактов, почему, но они в основном состоят из отсутствующих опций восстановления, отсутствия сложных транзакций, возможных осложнений и т. Д. Если вы решите использовать solr, вам нужно заполнить свой индекс из другого источника, например таблицы SQL.На самом деле solr идеально подходит для хранения документов, которые содержат данные из нескольких таблиц и отношений, которые в противном случае потребовали бы создания сложных объединений.

  • Solr / Lucene обеспечивает потрясающий анализ текста / основы/ озвучивание полнотекстового поиска / функции нечеткости.То, что вы просто не можете сделать с MySQL.На самом деле полнотекстовый поиск в MySql ограничен MyIsam, а оценка очень тривиальна и ограничена.Взвешивание полей, усиление документов по определенным метрикам, оценка результатов на основе близости фраз, соответствие точности и т. Д. - очень тяжелая работа, почти невозможная.

  • В Solr / Lucene у вас есть документы.Вы не можете действительно хранить отношения и процесс.Конечно, вы можете индексировать ключи других документов в многозначном поле некоторого документа, чтобы таким образом вы могли хранить отношения 1: n и делать это обоими способами, чтобы получить n: n, но с дополнительными данными.Не поймите меня неправильно, это прекрасно и эффективно для многих целей (например, для какого-то каталога товаров, в котором вы хотите хранить дистрибьюторов для продуктов и искать только те детали, которые есть у определенных дистрибьюторов или что-то в этом роде).Но вы достигли конца возможностей с HAS / HAS NOT.Вы не можете делать что-то вроде «получить все продукты, которые доступны по крайней мере у 3 дистрибьюторов».

  • Solr / Lucene обладает очень хорошими функциями огранки и анализа результатов поиска.Например: после очень широкого поиска, в котором было 40000 обращений, вы можете отобразить, что вы получите только 3 попадания, если уточните свой поиск, указав комбинацию, в которой это поле имеет это значение, а это поле - это значение.Вещи, которые требуют дополнительных запросов в MySQL, выполняются эффективно и удобно.

Итак, давайте подведем итог

  • МощностьLucene - это поиск / анализ текста.Это также невероятно быстро из-за обратной структуры индекса.Вы действительно можете сделать много пост-обработки и удовлетворить другие потребности.Несмотря на то, что он ориентирован на документы и не имеет «запросов к графам», как тройные хранилища в SPARQL, базовые отношения N: M можно хранить и запрашивать.Если ваше приложение ориентировано на поиск текста, вам определенно следует выбрать Solr / Lucene, если у вас нет веских причин, таких как очень сложные запросы фильтра многомерного диапазона, поступить иначе.

  • Если у вас нет текстового поиска, а есть что-то, где можно что-то указать и щелкнуть, но не вводить текст, возможно, лучше использовать старые добрые реляционные базы данных.

9 голосов
/ 10 сентября 2015

Используйте Solr, если:

  • Вы не хотите подчеркивать свою базу данных.
  • Получите действительно полнотекстовый поиск.
  • Выполнение молниеносного поиска.

В настоящее время я поддерживаю новостной сайт с 5 миллионами пользователей в месяц, с MySQL в качестве основного хранилища данных и Solr в качестве поисковой системы.

5 голосов
/ 23 декабря 2015

Solr работает как волшебство для полнотекстовой индексации, чего трудно достичь с помощью Mysql. Можно использовать сочетание Mysql и Solr: Mysql для операций CRUD и Solr для поиска.
Я работал с одним из лучших в Индии онлайн-порталом объявлений о недвижимости, который использовал Solr для поиска (а ранее использовал Mysql). Миграция сократила время поиска в несколько раз.
Solr легко интегрируется с Mysql:

  • Solr Full Dataimport можно использовать для импорта данных из таблиц Mysql в коллекции Solr.
  • Импорт Solr Delta можно запланировать на коротких частотах для загрузки последних данных из коллекций Mysql в Solr.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...