Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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

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