我在 Java 5 环境中使用 Lucene 3.0.1。 我一直在研究这个问题,但文档没有给出任何直接的答案。
使用搜索方法
TopFieldDocs search(Weight weight, Filter filter, int nDocs, Sort sort)
我总是需要提供最大数量的搜索结果 nDocs。
如果我想要所有匹配的结果怎么办?感觉将 nDocs 设置为 Integer.MAX_VALUE
是一种很老套的方法(会导致速度和内存性能下降?)。
还有谁知道吗?
最佳答案
您正在使用 a search method返回查询的前 n 个命中。
有other (more low-level) methods没有限制,它在文档中说“应用程序应该只在需要所有匹配文档时才使用它。高级搜索 API (search(Query, int)) 通常更有效,因为它跳过非高分命中。”。
所以如果你真的需要所有文档,你可以使用低级API。我怀疑将真正高的限制传递给高级 API 是否会对性能产生很大影响。如果您需要所有文档(并且确实有很多文档),无论哪种方式都会很慢,尤其是在涉及排序的情况下。
关于java - 我可以让 Lucene 返回无限数量的搜索结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4999998/