TopDocCollectorpublic class TopDocCollector extends HitCollector A {@link HitCollector} implementation that collects the top-scoring
documents, returning them as a {@link TopDocs}. This is used by {@link
IndexSearcher} to implement {@link TopDocs}-based search.
This may be extended, overriding the collect method to, e.g.,
conditionally invoke super() in order to filter which
documents are collected. |
Fields Summary |
---|
private int | numHits | private float | minScore | int | totalHits | PriorityQueue | hq |
Constructors Summary |
---|
public TopDocCollector(int numHits)Construct to collect a given number of hits.
this(numHits, new HitQueue(numHits));
| TopDocCollector(int numHits, PriorityQueue hq)
this.numHits = numHits;
this.hq = hq;
|
Methods Summary |
---|
public void | collect(int doc, float score)
if (score > 0.0f) {
totalHits++;
if (hq.size() < numHits || score >= minScore) {
hq.insert(new ScoreDoc(doc, score));
minScore = ((ScoreDoc)hq.top()).score; // maintain minScore
}
}
| public int | getTotalHits()The total number of documents that matched this query. return totalHits;
| public org.apache.lucene.search.TopDocs | topDocs()The top-scoring hits.
ScoreDoc[] scoreDocs = new ScoreDoc[hq.size()];
for (int i = hq.size()-1; i >= 0; i--) // put docs in array
scoreDocs[i] = (ScoreDoc)hq.pop();
float maxScore = (totalHits==0)
? Float.NEGATIVE_INFINITY
: scoreDocs[0].score;
return new TopDocs(totalHits, scoreDocs, maxScore);
|
|