Полнотекстовый поиск Solr в рабочей среде — что лучше пакетное решение sunspot:solr или отдельное решение tomcat+solr?

Некоторое время мы используем драгоценный камень Solr от sunspot в режиме разработки. Теперь приложение необходимо перенести в производственную среду.

Есть ли какие-либо недостатки в настройке solr в производственной среде с использованием встроенного гема sunspot?

Мне вообще нравится идея tomcat + solr, но ее сложнее настроить.

Собрать драгоценный камень Sunspot в комплекте очень просто. При условии, что у нас есть 1 проект rails в 3 этапа (постановка, производство, контроль качества), 2 сервера приложений и один сервер db/solr, необходимо :

  1. отправить проект rails на сервер db
  2. запустить solr на сервере db в рабочей среде с пакетом exec rake sunspot:solr:start for (мы просто используем разные порты для каждого экземпляра solr)
  3. переиндексировать с помощью rake sunspot:solr:reindex
  4. измените sunspot.yml для сервера приложений, чтобы они подключались к серверу БД через определенный порт этапа

Вышеприведенное применимо для X экземпляров производственных/постановочных солров.

Tomcat6 + Sunspot не так прост и эффективен с точки зрения времени и результата. Насколько я понимаю (поправьте меня) нужно :

  1. Установите и поддерживайте Tomcat на сервере БД
  2. При условии, что мы хотим иметь 3 инстанса solr — разворачиваем 3 solr wars с отдельными solr’ами (или используем многоядерный solr, который довольно сложно настроить)
  3. развернуть проект rails на сервере db
  4. Каждый раз, когда мы меняем нашу схему/конфигурацию/что-то еще в рельсах, мы должны позаботиться о создании solr xmls и confs и скопировать их в веб-приложения tomcat.
  5. Измените каталоги в solr conf/xml, чтобы они указывали на индексные файлы и т. д.
  6. Перезагружайте экземпляр приложения tomcat solr при каждом развертывании на рельсах, что включает в себя некоторые сценарии и «не-рельсовый» подход к процедуре развертывания :)

person wojciechz    schedule 12.12.2012    source источник


Ответы (1)


Я сделал что-то подобное в последнее время и должен был ответить на те же вопросы. Мое проблемное пространство выглядело как наличие двух языков (так что желательно два ядра и, возможно, больше для других вариантов поиска в будущем), необходимость индексировать данные по нескольким таблицам и аспектам поиска / подсчета, частично в иерархических структурах, таких как группы продуктов и иерархические теги, такие как car_brand/ модель/тип/год_сборки.

Насколько я видел, солнечное пятно работает лучше всего (только), если у вас есть относительные «плоские» данные, в лучшем случае просто нужно определить для одной модели, какие поля использовать. В тот момент, когда вам нужно объединить несколько моделей в единый документ для фасетов, это становится затруднительным. (Но так как я не использовал Sunspot, я не могу точно сказать). Вы можете (и должны) по-прежнему использовать гем rsolr для связи с Solr. Но если вы используете Sunspot в разработке, скорее всего, он вам все равно подойдет.

Для получения подробной информации о коте:

  1. Установите и поддерживайте Tomcat на сервере БД

да, немного работы, но можно справиться

  1. При условии, что мы хотим иметь 3 инстанса solr — разворачиваем 3 solr wars с отдельными solr’ами (или используем многоядерный solr, который довольно сложно настроить)

Я использовал многоядерник. Это не очень сложно настроить. В любом случае вам лучше немного узнать о конфигурации Solr. Самая большая часть многоядерности — это просто наличие двух подкаталогов, содержащих по существу один и тот же набор файлов конфигурации XML.

  1. развернуть проект rails на сервере db

все равно придется это сделать :)

  1. Каждый раз, когда мы меняем нашу схему/конфигурацию/что-то еще в рельсах, мы должны позаботиться о создании solr xmls и confs и скопировать их в веб-приложения tomcat.

Да, написать несколько сценариев. В качестве альтернативы у вас может быть репозиторий git, содержащий папки tomcat/solr и папку проекта Rails, или символические ссылки на эти папки. Я еще не нашел хорошего решения, и мне приходится время от времени копировать кое-что.

  1. Измените каталоги в solr conf/xml, чтобы они указывали на индексные файлы и т. д.

да, несколько символических ссылок могут упростить задачу

  1. Перезагружайте экземпляр приложения tomcat solr при каждом развертывании на рельсах, что включает в себя некоторые сценарии и «не-рельсовый» подход к процедуре развертывания :)

Только если развертывание действительно изменит что-либо, связанное с вашим поиском. Имейте несколько сценариев. Существуют решения для развертывания Rails, которые могли бы помочь, но, поскольку я не против сделать несколько вещей вручную, я не стал устанавливать.

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

person thorsten müller    schedule 12.12.2012
comment
это решение показано здесь: internetmodulation.com/2011/ 10.01. - person wojciechz; 12.12.2012