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

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

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

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

PS:我知道这个问题 。

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

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

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

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

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

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

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

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

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