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

标签 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 是一种很老套的方法(会导致速度和内存性能下降?)。

还有谁知道吗?

最佳答案

您正在使用 a search method返回查询的前 n 个命中。

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

所以如果你真的需要所有文档,你可以使用低级API。我怀疑将真正高的限制传递给高级 API 是否会对性能产生很大影响。如果您需要所有文档(并且确实有很多文档),无论哪种方式都会很慢,尤其是在涉及排序的情况下。

关于java - 我可以让 Lucene 返回无限数量的搜索结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4999998/

相关文章:

ruby-on-rails - Elasticsearch 和 Rails : Using ngram to search for part of a word

Lucene.net 模糊短语搜索

Java:多线程访问主线程变量/方法

java - 来自给定 wsdl 文件的 "java form generator"

java - POM 丢失,没有可用的依赖信息,未找到 cfg.xml

java - 需要有关字符串搜索设计的建议

c - 在 C 中使用 strtok 进行字符串解析

java - 为什么这个 int 不递增?

java - ElasticSearch 全文搜索

java - 如何在lucene中进行增量备份?