Lucene:如何获得文档的分数

Lucene:如何获得文档的分数,lucene,Lucene,我想输出文档的分数。我为此编写的代码是: IndexReader reader = IndexReader.open(FSDirectory.open(indexDir)); IndexSearcher searcher = new IndexSearcher(reader); Analyzer analyzer = new IKAnalyzer(); QueryParser parser = new QueryParser(Version.LUCENE_31, "title",

我想输出文档的分数。我为此编写的代码是:

IndexReader reader = IndexReader.open(FSDirectory.open(indexDir));
IndexSearcher searcher = new IndexSearcher(reader);
Analyzer analyzer = new IKAnalyzer();
QueryParser parser = new QueryParser(Version.LUCENE_31, "title",
            analyzer);
Query q = null;
q = parser.parse("MacOS");
TopDocs docs = searcher.search(q, 10);
ScoreDoc[] hits = docs.scoreDocs;
for(int i=0;i<hits.length;++i){
  System.out.println(hits[i].score);
}
IndexReader=IndexReader.open(FSDirectory.open(indexDir));
IndexSearcher search=新的IndexSearcher(阅读器);
Analyzer Analyzer=新的IKAAnalyzer();
QueryParser parser=新的QueryParser(Version.LUCENE_31,“title”,
分析仪);
查询q=null;
q=parser.parse(“MacOS”);
TopDocs=searcher.search(q,10);
ScoreDoc[]点击次数=docs.scoreDocs;

对于(int i=0;i要打印分数,我应该设置DefaultFieldSortCoring(true,true)

IndexReader=IndexReader.open(FSDirectory.open(indexDir));
IndexSearcher search=新的IndexSearcher(阅读器);
Analyzer Analyzer=新的IKAAnalyzer();
QueryParser parser=新的QueryParser(Version.LUCENE_31,“title”,analyzer);
查询q=null;
q=parser.parse(“MacOS”);
TopDocs=searcher.search(q,10);
ScoreDoc[]过滤器CoredosArray=docs.topDocs().scoreDocs;
对于(int i=0;i

试试这个。

除此之外,您还必须在indexSearcher中启用评分:

...
searcher.setDefaultFieldSortScoring(true, true);
...

我想这就是你的意思,雷米,但这样应该更清楚:)

这是获得文件分数的正确方法。您的查询是什么样子的?@jpountz我已经粘贴了所有代码,请帮我检查一下。谢谢你,你能粘贴调用IndexSearcher的结果吗?解释一下吗?@jpountz嗨,我已经解决了。要打印分数,我应该设置DefaultFieldSortCoring(真的,真的)。很高兴你解决了你的问题。但这意味着您是在字段上排序,而粘贴的代码中并非如此!最近的版本中没有你救了我的命
...
searcher.setDefaultFieldSortScoring(true, true);
...