更喜欢Apache Lucene而不是Solr的情况?

时间:2010-05-18 10:43:17

标签: java search lucene solr solrj

使用Solr 1.4(开箱即用的分面搜索,分组,复制,http管理与luke,......)有几个优点。

即使我在我的Java应用程序中嵌入了搜索功能,我也可以使用SolrJ来避免在使用Solr时进行HTTP权衡。是否推荐过SolrJ?

那么,你什么时候推荐使用“纯Lucene”?它有更好的性能还是需要更少的RAM?它是否可以更好地进行单元测试?

PS:我知道this question

5 个答案:

答案 0 :(得分:6)

如果您有一个Web应用程序,请使用Solr - 我尝试集成两者,而Solr更容易。否则,如果你不需要Solr的功能(想到最重要的是分面搜索),那么就使用Lucene。

答案 1 :(得分:4)

如果您想在搜索应用程序中完全嵌入搜索功能,并且不想维护像Solr这样的单独进程,那么使用Lucene可能更可取。例如,桌面应用程序可能需要一些搜索功能(例如使用Lucene搜索其文档的Eclipse IDE)。您可能不希望这种应用程序启动像Solr这样繁重的过程。

答案 2 :(得分:2)

这是我必须使用Lucene的一种情况。

给出一组文件,找出其中最常见的术语。

在这里,我需要访问每个文档的术语向量(使用TermVectorMapper的低级API)。使用Lucene非常容易。

另一个用例是搜索结果的非常专业的排序。例如,我想要搜索一个作者姓名(谁写了多本书),从前10个结果中的每个商店得到一本书。在这种情况下,我会找到每家书店的结果并显示最终结果,我会从每家书店中选择一个结果。在这里,您实际上是在进行多次搜索以生成最终结果。访问lucene的低级API肯定有帮助。

去Lucene的另一个原因是尽快获得新的好东西。这已不再适用,因为它们已经合并,并且会有同步版本。

答案 3 :(得分:2)

我很惊讶没人提到NRT - 近实时搜索,可用Lucene,但不是Solr(还)。

答案 4 :(得分:0)

如果您更关注可伸缩性而不是性能,请使用Solr;如果您更关注性能而不是可伸缩性,请使用Lucene。