如何对特定文档的特定查询进行评分?

时间:2016-02-02 15:06:11

标签: lucene

在Lucene 5.4中,我有文档查询对象,我想使用一些simillarity函数(即BM25)为此文档评分此查询。

我该怎么做?我完成工作的方式是循环搜索所有结果并将文档与我要评估的文档进行比较。

1 个答案:

答案 0 :(得分:2)

要获取给定查询的特定文档的评分详细信息,您需要使用IndexSearcher.explain()。这提供了许多关于评分算法如何运作的有用细节。你可以从带有Explanation.getValue()的解释中得到最终得分(在根节点,如果你开始使用getDetails导航,那些子节点将不会返回相同的值):

IndexSearcher searcher  = new IndexSearcher(reader);
//Make sure you set the Similarity to the correct algorithm
searcher.setSimilarity(new BM25Similarity());
Explanation explain = searcher.explain(myQuery, myDocID);
float score = explain.getValue();