Существует несколько преимуществ для использования Solr 1.4 (out-of-the-box фасетирующий поиск, группировку, репликацию, http администрирование по сравнению с luke...).
Даже если я встраиваю функциональность поиска в свое JAVA-приложение, я мог бы использовать SolrJ для предотвращения компромисса HTTP при использовании Solr. SolrJ рекомендуют вообще?
Так, когда Вы рекомендовали бы использовать "чистый-Lucene"? Это имеет лучшую производительность или требует меньшего количества RAM? Действительно ли это лучше тестируемый единицей?
PS: Я знаю об этом вопросе.
Если у вас есть веб-приложение, используйте Solr - я пробовал интегрировать оба, и Solr проще. В противном случае, если вам не нужны функции Solr (наиболее важным является фасетный поиск), используйте Lucene.
Если вы хотите полностью встроить функциональность поиска в ваше приложение и не хотите поддерживать отдельный процесс, как Solr, использование Lucene, вероятно, предпочтительнее. Например, настольное приложение может нуждаться в некоторой поисковой функциональности (как Eclipse IDE, использующая Lucene для поиска документации). Вероятно, вы не захотите, чтобы такое приложение запускало такой тяжелый процесс, как Solr.
Я удивлен, что никто не упомянул NRT - поиск в реальном времени, доступный с Lucene, но не с Solr (пока).
Вот одна ситуация, когда мне нужно использовать Lucene.
Учитывая набор документов, найдите в них наиболее употребительные термины.
Здесь мне нужно получить доступ к векторам терминов каждого документа (используя низкоуровневые API TermVectorMapper). С Lucene это довольно просто.
Другой вариант использования - это очень специализированное упорядочение результатов поиска. Например, я хочу, чтобы поиск по имени автора (который написал несколько книг) приводил к поиску одной книги из каждого магазина в первых 10 результатах. В этом случае я найду результаты из каждого книжного магазина и, чтобы показать окончательные результаты, я выберу по одному результату из каждого книжного магазина. Здесь вы, по сути, выполняете несколько поисков для получения окончательных результатов. Определенно помогает доступ к низкоуровневым API lucene.
Еще одна причина выбрать Lucene заключалась в том, чтобы как можно скорее получить новые вкусности. Это больше не так, поскольку они оба были объединены и будут синхронные выпуски.