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

Lucene 如何对特定文档的特定查询进行评分?,lucene,Lucene,在Lucene 5.4中,我有一个文档和一个查询对象,我想使用一些相似性函数(即BM25)对此文档的查询进行评分 我该怎么做?我完成这项工作的方法是循环搜索所有结果,并将文档与我要评估的文档进行比较。若要获取给定查询的特定文档的评分详细信息,请使用。这提供了许多关于评分算法如何操作的有用细节。您可以从解释中获得最终分数(在根节点,如果您开始使用getDetails进行导航,则这些子节点将不会返回相同的值): IndexSearcher searcher=新的IndexSearcher(阅读器);

在Lucene 5.4中,我有一个文档和一个查询对象,我想使用一些相似性函数(即BM25)对此文档的查询进行评分


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

若要获取给定查询的特定文档的评分详细信息,请使用。这提供了许多关于评分算法如何操作的有用细节。您可以从解释中获得最终分数(在根节点,如果您开始使用getDetails进行导航,则这些子节点将不会返回相同的值):

IndexSearcher searcher=新的IndexSearcher(阅读器);
//确保将相似性设置为正确的算法
searcher.setSimilarity(新的BM25Similarity());
解释=searcher.explain(myQuery,myDocID);
浮动分数=explain.getValue();

我不确定你问的问题是否清楚。似乎您想要的东西可以通过您自己的BM25
org.apache.lucene.analysis.Analyzer
实现。或者您应该尝试编写自己的
org.apache.lucene.search.suggest.Lookup
。IndexSearcher将返回多个文档。我想针对一个特定的查询为一个文档打分。@VitorAlc–ntaraBatista-对不起,我似乎误解了你的问题。我已经重写了我的答案,我相信它现在应该能更好地解决你的问题。