Lucene: как получить оценку документа - PullRequest
5 голосов
/ 19 марта 2012

Я хочу вывести оценку документов. Код, который я пишу для этого:

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);
}

но вывод NaN. Я хочу знать, как получить оценку документа.

Ответы [ 3 ]

11 голосов
/ 30 августа 2012

дополнительно к даулетам, и вы должны включить оценку в indexSearcher:

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

Я думаю, это то, что вы имели в виду, remy, но так должно быть яснее:)

4 голосов
/ 05 апреля 2012
        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);
        }

попробуйте это.

0 голосов
/ 21 марта 2012

Чтобы напечатать счет, я должен установить defaultFieldSortScoring (true, true)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...