Поисковая система - Lucene или Solr - PullRequest
52 голосов
/ 09 сентября 2009

Нам необходимо интегрировать поисковую систему в наше программное обеспечение для управления каталогом продукции. Ожидается, что в каталоге будет более 4-5 млн. грн. записи с реляционными данными распределены по нескольким таблицам. Наша платформа разработки - Asp.Net 3.5, и мы провели предварительную работу над Lucene и сочли ее хорошей. Тем не менее, мы только что узнали о Solr и искали несколько практических советов, чтобы сравнить Lucene & Solr с точки зрения реализации, сроков, регулярного обслуживания, производительности и возможностей. Любое руководство или указатели были бы действительно полезны. Благодарю.

Ответы [ 6 ]

41 голосов
/ 09 сентября 2009

Lucene:

Apache Lucene - это высокопроизводительная, полнофункциональная библиотека для поиска текста, полностью написанная на Java. Эта технология подходит практически для любого приложения, требующего полнотекстового поиска

Solr:

Solr - это поисковый сервер с открытым исходным кодом, основанный на поисковой библиотеке Lucene Java, с API-интерфейсами XML / HTTP и JSON, выделением совпадений, граненым поиском, кэшированием, репликацией, интерфейсом веб-администрирования и ...

По сути, Lucene встроен в Solr и является чисто библиотекой полнотекстового поиска с целью внедрения в проекты, дающие им возможности полнотекстового поиска. Solr имеет гораздо больше функций и возможностей администрирования, позволяя осуществлять поиск в структурированных данных без необходимости писать какой-либо пользовательский код, загружать данные из CSV-файлов, допускать синтаксический анализ ввода данных пользователем, выполнять фасетный поиск, выделять сопоставленный текст в результатах и ​​получать результаты поиска в различных форматах. форматов (XML, JSON, ...). Проверьте страницу Функции Solr и посмотрите, относится ли какая-либо функция к вашему проекту.

18 голосов
/ 10 сентября 2009

Я должен согласиться с Эндрю Клеггом. Я думаю, что когда многие типы Java Developer смотрят на Lucene vs Solr, Lucene выглядит более дружелюбно, потому что это просто библиотека (POJJ: Plain Old Java Jar!), Как и любая другая библиотека, и она выглядит простой для встраивания, в отличие от сложности стоящий Solr как отдельный процесс, который связывается по сложному HTTP.

Однако я думаю, что для почти всех случаев использования поиска Solr - правильный подход. Потому что большая часть сложности поиска заключается не в прямой начальной интеграции, а в нечетких областях настройки поиска, масштабирования для удовлетворения спроса и поддержки ваших индексов, которые переходят из мира, ориентированного на разработчиков, в мир систем. И Solr прекрасно справляется со всеми этими задачами.

6 голосов
/ 10 сентября 2009

Как говорит dcruz, Solr в любом случае использует Lucene, так что это недопустимое сравнение.

Lucene - это инструментарий для создания поисковых приложений, Solr - это поисковое приложение, созданное с помощью Lucene.

IMO, вы бы с ума сошли , а не , чтобы использовать Solr, так как он предоставляет вам множество «слесарных операций», которые вы должны будете написать сами в противном случае - например, настраиваемый обработчик импорта данных для отстой данные из ваших RDBMS или репозиториев XML.

Кроме того, он предоставляет вам интерфейс веб-администратора и другие навороты.

2 голосов
/ 21 мая 2010

Следует учитывать, насколько сложно будет настроить приложение, когда вы смешиваете эти две среды (Java / .NET).Если вы используете библиотеки Lucene.NET, вы можете ограничить необходимые установки внешних зависимостей, что упрощает развертывание.

Еще одна вещь, которую следует учитывать: нужны ли вам дополнительные функции, которые предлагает Solr?Интерфейс (еще) веб-администратора, вероятно, великолепен, но расширяет границы риска.Установка Java и другого сервиса означает больше управления патчами.Если вы придерживаетесь .NET, только ваша стратегия исправления может быть стандартной моделью обновления Windows.

Конечно, развертывание вашей реализации с использованием Lucene.NET будет иметь собственные затраты на разработку и обслуживание, но, по моему опыту, это былопрямо вперед и с ним легко работать.

1 голос
/ 17 сентября 2009

Позвольте мне немного сместить ваше внимание: вы готовы к изменениям в архитектуре вашего продукта? И Lucene, и Solr реализованы на Java. Таким образом, вы в конечном итоге запустите еще один веб-контейнер для его размещения (и, следовательно, потеряете, так сказать, чистоту платформы). В то время как Lucene был портирован на .NET ( Lucene.NET проект ), Solr был не настолько далеко, насколько я знаю. Если вы используете SQL Server (что, вероятно, с учетом вашей платформы), вы можете вместо этого рассмотреть полнотекстовый поиск SQL Server - он имеет почти те же функции (не такие многофункциональные, как Lucene / Solr, но в любом случае) и обычно (в большинстве случаев) гораздо проще включить в существующее приложение. Кроме того, вы получаете выгоду от упрощенного обслуживания (оно поставляется вместе с вашей базой данных), а также от пребывания на одной платформе.

1 голос
/ 09 сентября 2009

Мы точно в такой же ситуации, как и вы. К сожалению, я не был непосредственно вовлечен в процесс оценки, но в конце мы собираемся использовать Solr, интегрированный с Lucene.

Основным преимуществом является разнообразие форматов, как описано в dcruz. Таким образом, вы можете запросить у своего Solr-Consumer и вернуть результаты поиска в виде XML-данных, которые можно легко проанализировать и отобразить на веб-странице.

...