2010-05-18 7 views
18

Существует несколько преимуществ использования Solr 1.4 (поиск фацетирования, группировка, репликация, http-администрация против luke, ...).Ситуации, которые предпочитают Apache Lucene над Solr?

Даже если я внедряю функцию поиска в своем приложении Java, я мог бы использовать SolrJ, чтобы избежать компрометации HTTP при использовании Solr. Является ли SolrJ рекомендуемым вообще?

Итак, когда вы порекомендуете использовать «чисто-Lucene»? Имеет ли он лучшую производительность или требует меньше оперативной памяти? Является ли это более надежным?

PS: Я знаю this question.

+1

здесь есть другие «сравнения» http://www.lucenetutorial.com/lucene-vs-solr.html и http://www.lucidimagination.com/solutions/software/choosing-lucene-solr – Karussell

+0

есть еще один взгляд на http://www.findbestopensource.com/article-detail/lucene-vs-solr – Karussell

ответ

4

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

+0

Что вы имеете в виду с тяжелым? Что касается CPU/RAM или поддерживающего материала? – Karussell

+0

Что касается физических ресурсов, то да. И есть время запуска Solr, которое, вероятно, было бы неприемлемым в настольном приложении. –

+1

Но я никогда не экспериментировал с EmbeddedSolrServer. Это может быть интересным способом встраивания Solr. –

6

Если у вас есть веб-приложение, используйте Solr - я пробовал интегрировать оба, и Solr проще. В противном случае, если вам не нужны функции Solr (тот, который приходит на ум как наиболее важный, - это фасетный поиск), затем используйте Lucene.

+0

Вы использовали подход SolrJ или HTTP? Я попытался внедрить lucene в webapp, и это было довольно легко. – Karussell

+0

Я использовал Solrj, поэтому мне не нужно было делать HTTP-запросы из приложения. Честно говоря, я не помню, что мешало, так что, возможно, я что-то делал где-то глупо. –

+0

Спасибо за ответ.А как насчет модульного тестирования легко настроить RAMDirectory, как я могу сделать с lucene? – Karussell

2

Вот одна из ситуаций, когда я должен использовать Lucene.

Учитывая набор документов, найдите наиболее распространенные термины в них.

Здесь мне нужно получить доступ к векторам условий каждого документа (используя низкоуровневые API-интерфейсы TermVectorMapper). С Люцене это довольно легко.

Другой вариант использования предназначен для очень специализированного заказа результатов поиска. Для exmaple я хочу найти имя автора (который написал несколько книг), чтобы привести к одной книге из каждого магазина в первых 10 результатах. В этом случае я найду результаты из каждого книжного магазина и покажу окончательные результаты. Я выберу один результат из каждого книжного магазина. Здесь вы, по сути дела, выполняете несколько запросов для получения конечных результатов. Доступ к низкоуровневым API lucene определенно помогает.

Еще одна причина, по которой нужно ехать в Луценю, - это получить новые лакомства как можно скорее. Это уже не так, поскольку оба они были объединены, и будут синхронные релизы.

+0

Что касается TermVectorMapper -> Знаете ли вы, если это возможно с Solr? Что касается примера порядка поиска: не удалось ли это сделать с помощью функции группировки Solr: http://blog.jteam.nl/2009/10/20/result-grouping-field-collapsing-with-solr/ – Karussell

+0

TVMapper - это ядро к Люцене. Зачем проходить дополнительный слой, когда вы можете напрямую читать из источника? И я точно не ищу группировку. Я хочу получить все результаты от каждого книжного магазина, но я хочу, чтобы заказ был близким приближением кругового движения с некоторыми дополнительными критериями. –

2

Я удивлен, что никто не упоминает NRT - поиск в режиме реального времени, доступный с Lucene, но не с Solr (пока).

+0

действительно? вот ссылка http://wiki.apache.org/lucene-java/NearRealtimeSearch ... Я думал, что он доступен для solr тоже – Karussell

+0

@ Karussell: см. https://issues.apache.org/jira/browse/SOLR -1606 –

+0

Спасибо Маурицио! – Karussell

0

Используйте Solr, если вас больше интересует масштабируемость, чем производительность, и используйте Lucene, если вас больше беспокоит производительность, чем масштабируемость.

+0

Этот вопрос - 4-летняя btw ... смотрите в ElasticSearch! – Karussell