奇怪的返回记录数 求解!

87271833 2010-02-08
TopDocs topDocs = isearcher.search(query, 8  );
8代表返回最靠前的8条记录,lucene3的API说明书也是这么说的
可是用topDocs.totalHits查询居然不是8 而是9 我的索引正好有相关的9条记录他都查到了 导致我下面for (int i = 0; i < topDocs.totalHits; i++)
循环出错 越界了 这说明他的确只返回了8条记录 但是topDocs.totalHits却等于9
那么我循环就不可以用i < topDocs.totalHits来判断了


我现在在循环前加了判断
int n = topDocs.totalHits;
if (n > 8  ) {
n = 8;
} else {
}
for (int i = 0; i < n; i++)
这样就没错了

不过我觉得这个设计不好 还要自己加判断
fanjun 2010-02-10
totalHits返回总共的匹配数,跟你限制了返回数量无关
TonyLian 2010-02-10
totalHits是总命中数,看到Googole提示你的吗“搜索XXXX得到4,500,000件结果”

for(int i=0; i<topDocs.scoreDocs.length; i++)
Global site tag (gtag.js) - Google Analytics