我可以让Lucene返回无限数量的搜索结果吗?

Lar*_*ren 4 java lucene search resultset max

我在Java 5环境中使用Lucene 3.0.1.我一直在研究这个问题,但文档没有给出任何直接的答案.

使用搜索方法

TopFieldDocs    search(Weight weight, Filter filter, int nDocs, Sort sort) 
Run Code Online (Sandbox Code Playgroud)

我总是需要提供最大数量的搜索结果nDocs.

如果我想获得所有匹配结果怎么办?这感觉就像设置nDocsInteger.MAX_VALUE是一种哈克的方式做到这一点(并会导致速度和内存性能的下降?).

其他任何有想法的人?

Thi*_*ilo 6

您正在使用搜索方法返回查询的前n个匹配.

还有其他(更低级别)方法没有限制,并且在文档中说"应用程序应该只在需要所有匹配文档时使用它.高级搜索API(搜索,查询, int))通常更有效率,因为它跳过非高得分的命中."

因此,如果您确实需要所有文档,则可以使用低级API.我怀疑在高性能API上传递一个非常高的限制会对性能产生很大影响.如果您需要所有文档(并且确实存在很多文档),那么无论哪种方式都会很慢,尤其是在涉及排序的情况下.