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

时间:2011-02-15 04:52:01

标签: java search lucene max resultset

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

使用搜索方法

TopFieldDocs    search(Weight weight, Filter filter, int nDocs, Sort sort) 

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

如果我想获得所有匹配结果怎么办?感觉就像将 nDocs 设置为Integer.MAX_VALUE是一种执行此操作的hacky方法(并且会导致速度和内存性能下降?)。

其他任何有想法的人?

1 个答案:

答案 0 :(得分:6)

您正在使用a search method返回查询的顶部 n 匹配。

other (more low-level) methods没有限制,它在文档中说“应用程序只应在需要所有匹配文档时使用它。高级搜索API(搜索,查询, int))通常更有效率,因为它会跳过非高得分的命中。“。

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