使用不同搜索空间大小的不同lucene搜索结果

Fra*_*See 2 java lucene size search scoring

我有一个使用lucene进行搜索的应用程序.搜索空间数以千计.搜索这些数千,我只得到几个结果,大约20(这是好的和预期).

但是,当我将我的搜索空间减少到只有那20个条目时(即我只将那20个条目编入索引并忽略其他所有内容......这样开发会更容易),我得到相同的20个结果,但顺序不同(和得分) .

我尝试通过Field #setOmitNorms(true)禁用规范因子,但我仍然得到不同的结果?

什么可能导致得分差异?

谢谢

Yuv*_*l F 5

请参阅Lucene的Similarity API中的评分文档.我敢打赌这两种情况之间的idf差异(numDocs和docFreq都不同).为了确定,请使用explain()函数调试分数.

编辑:用于获取解释的代码片段:

TopDocs hits = searcher.search(query, searchFilter, max);
ScoreDoc[] scoreDocs = hits.scoreDocs;
for (ScoreDoc scoreDoc : scoreDocs) {
  String explanation = searcher.explain(query, scoreDoc.doc).toString();
  Log.debug(explanation);
}
Run Code Online (Sandbox Code Playgroud)