我有一个使用 lucene 进行搜索的应用程序。搜索空间有数千个。在这数千个搜索中,我只得到了一些结果,大约 20 个(这是正常的并且是预期的)。
然而,当我将搜索空间减少到只有那 20 个条目时(即我只对这 20 个条目建立索引并忽略其他所有内容......这样开发会更容易),我得到相同的 20 个结果,但顺序不同(和评分) 。
我尝试通过 Field#setOmitNorms(true) 禁用范数因子,但仍然得到不同的结果?
是什么导致了评分的差异?
Thanks
请参阅 Lucene 的评分文档相似度API http://lucene.apache.org/java/2_9_1/api/all/org/apache/lucene/search/Similarity.html。我的赌注是两种情况之间 idf 的差异(numDocs 和 docFreq 都不同)。为了确定,请使用解释() http://lucene.apache.org/java/2_9_1/api/all/org/apache/lucene/search/Searcher.html#explain%28org.apache.lucene.search.Query,%20int%29函数来调试分数。
编辑:用于获取解释的代码片段:
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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)