我想输出文件的分数.我为此写的代码是:
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);
}
Run Code Online (Sandbox Code Playgroud)
但输出是NaN.我想知道如何获得文档的分数.
小智 11
除了daulets之外,你必须在indexSearcher中启用评分:
...
searcher.setDefaultFieldSortScoring(true, true);
...
Run Code Online (Sandbox Code Playgroud)
我认为这就是你的意思,但是那样它应该更清楚:)
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[] filterScoreDosArray = docs.topDocs().scoreDocs;
for (int i = 0; i < filterScoreDosArray.length; ++i) {
int docId = filterScoreDosArray[i].doc;
Document d = is.doc(docId);
System.out.println((i + 1) + ". " + d.get("docno")+" Score: "+ filterScoreDosArray[i].score);
}
Run Code Online (Sandbox Code Playgroud)
尝试这个。
| 归档时间: |
|
| 查看次数: |
9492 次 |
| 最近记录: |