我在Java 5环境中使用Lucene 3.0.1。 我一直在研究这个问题,但文档没有给出任何直接的答案。
使用搜索方法
TopFieldDocs search(Weight weight, Filter filter, int nDocs, Sort sort)
我总是需要提供最大数量的搜索结果 nDocs 。
如果我想获得所有匹配结果怎么办?感觉就像将 nDocs 设置为Integer.MAX_VALUE
是一种执行此操作的hacky方法(并且会导致速度和内存性能下降?)。
其他任何有想法的人?
答案 0 :(得分:6)
您正在使用a search method返回查询的顶部 n 匹配。
有other (more low-level) methods没有限制,它在文档中说“应用程序只应在需要所有匹配文档时使用它。高级搜索API(搜索,查询, int))通常更有效率,因为它会跳过非高得分的命中。“。
因此,如果您确实需要所有文档,则可以使用低级API。我怀疑在高性能API上传递一个非常高的限制会对性能产生很大影响。如果您需要所有文档(并且确实存在很多文档),那么无论哪种方式都会很慢,尤其是在涉及排序的情况下。