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

时间:2009-11-16 13:13:19

标签: java search lucene size scoring

我有一个使用lucene进行搜索的应用程序。搜索空间数以千计。搜索成千上万的搜索结果,我只得到了一些结果,大约20个(这是可以预期的)。

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

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

什么可能导致得分差异?

由于

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:2)

评分取决于索引中的所有文件:

  

总的来说,背后的想法   向量空间模型(VSM)就是更多   查询词出现在一个中的时间   文件相对数量   这个词出现在所有的时代   集合中的文档,该文档与查询的相关性越高。

来源:Apache Lucene - Scoring