Поисковая система - Lucene или Solr

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

Ответ 1

Lucene:

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

Solr:

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

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

Ответ 2

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

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

Ответ 3

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

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

IMO, вы бы с ума сошли, чтобы не использовать Solr, поскольку он предоставляет вам множество "сантехники", которые вам придется писать в противном случае - как настраиваемый обработчик импорта данных для извлечения данных из вашей СУБД или Хранилища XML.

Плюс это дает вам интерфейс веб-администратора и другие колокола и свистки.

Ответ 4

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

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

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

Ответ 5

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

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

Ответ 6

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