gpt4 book ai didi

java - lucene返回的结果是否少于预期

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:53:10 24 4
gpt4 key购买 nike

抱歉标题模糊。这是我的问题。我正在使用以下代码从 lucene 搜索中检索结果

scoreDoc[] hits = results.scoreDocs;
int numTotalHits = results.totalHits;
for (int i = 0; i < numTotalHits; i++) {
int docId = hits[i].doc;
Document d = searcher.doc(docId);
System.out.println(i+":File name is: "+d.get("filename"));
System.out.println(i+":File content is: "+d.get("contents"));
}

现在这段代码有时会弹出一个异常,说明索引超出了数组边界。所以我使用了下面的代码,它不会导致任何异常

scoreDoc[] hits = results.scoreDocs;
int numTotalHits = results.totalHits;
for (int i = 0; i < numTotalHits-1; i++) {
int docId = hits[i].doc;
Document d = searcher.doc(docId);
System.out.println(i+":File name is: "+d.get("filename"));
System.out.println(i+":File content is: "+d.get("contents"));
}

这是否意味着 results.totalHits 返回 results.totalHits-2 个搜索结果?

谢谢你..

最佳答案

totalHits 是匹配你查询的文档总数,这通常不同于你从lucene中得到的文档数,它是你在hits<中得到的 数组。

这是为什么呢?想想一个搜索引擎:你执行一个查询,一百万个文档匹配,但你只在一个页面中返回其中的 10 或 20 个。一百万将是您从 lucene 返回的 totalHits,但您将仅向 lucene 询问前 10 或 20 个文档,这些文档将在 hits 数组中返回。

totalHitshits.length 相同的情况只有一种:当您的查询匹配的文档数量少于或等于您询问的文档数量时对于执行查询时,在下面的示例中为 10:

TopDocs results = searcher.search(query, 10);

关于java - lucene返回的结果是否少于预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15566349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com