TopDocs.totalHits与Indexsearcher.search

时间:2018-05-16 10:22:09

标签: java lucene

我想使用Lucene索引(版本4.3.1)找到查询的总命中数。

我明白我必须使用https://lucene.apache.org/core/5_3_0/core/org/apache/lucene/search/IndexSearcher.html#search(org.apache.lucene.search.Query,%20int)

的搜索方法之一
public TopDocs search(Query query,
             int n) - Finds the top n hits for query.

在TopDocs中,我可以看到 totalHits 字段 https://lucene.apache.org/core/5_3_0/core/org/apache/lucene/search/TopDocs.html#totalHits

但我无法理解 'n' search()参数对 TopDocs.totalHits <的影响/强>

例如:如果我设置n = 1000,那么它是TopDocs.totalHits将是&lt; = n?

在我的一次跑步中,我传球n = 1但是在那次搜索中,TopDocs.totalHits是29。

请有人请点亮。

1 个答案:

答案 0 :(得分:1)

  

如果我设置n = 1000,那么它是TopDocs.totalHits将是&lt; = n?

是。使用“n”,您可以定义您感兴趣的结果数量.TopDocs.totalHits反映了有效的命中数。

通常搜索所有文档并不是很有用,因为它可能会导致性能问题。除此之外,用户可能对所有结果不感兴趣 - &gt;有分页或过滤的地方。

如果您想搜索所有结果,您需要使用收集器和此搜索方法:

public void search(Query query, Collector results)

根据您的收藏家,您可以获得所有搜索结果或点击次数或点击次数。