使用Solr 1.4(开箱即用的分面搜索,分组,复制,http管理与luke,......)有几个优点。
即使我在我的Java应用程序中嵌入了搜索功能,我也可以使用SolrJ来避免在使用Solr时进行HTTP权衡。是否推荐过SolrJ?
那么,你什么时候推荐使用“纯Lucene”?它有更好的性能还是需要更少的RAM?它是否可以更好地进行单元测试?
PS:我知道this question。
答案 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。