Я хотел бы вычислить оценки для небольшого количества документов (а не для всей коллекции) для данного запроса. Моя попытка, как показано ниже, возвращает 0 баллов за каждый документ, хотя запросы, с которыми я тестирую, были получены из терминов в документах, которые я пытаюсь оценить. Я использую Lucene 3.0.3.
List<Float> score(IndexReader reader, Query query, List<Integer> newDocs ) {
List<Float> scores = new List<Float>();
IndexSearcher searcher = reader.getSearcher();
Collector collector = TopScoreDocCollector.create(newDocs.size(), true);
Weight weight = query.createWeight(searcher);
Scorer scorer = weight.scorer(reader, true, true);
collector.setScorer(scorer);
float score = 0.0f;
for(Integer d: newDocs) {
scorer.advance(d);
collector.collect(d);
score = scorer.score();
System.out.println( "doc: " + d + "; score=" + score);
scores.add( new Float(score) );
}
return scores;
}
Я явно что-то упускаю при настройке скоринга, но из исходного кода Lucene не могу понять, что это может быть.
Заранее спасибо,
Gene