22 namespace Lucene.Net.Search
43 internal InOrderTopScoreDocCollector(
int numHits):base(numHits)
47 public override void Collect(
int doc)
49 float score = scorer.Score();
52 System.Diagnostics.Debug.Assert(score !=
float.NegativeInfinity);
53 System.Diagnostics.Debug.Assert(!
float.IsNaN(score));
56 if (score <= pqTop.Score)
63 pqTop.Doc = doc + docBase;
65 pqTop = pq.UpdateTop();
68 public override bool AcceptsDocsOutOfOrder
77 internal OutOfOrderTopScoreDocCollector(
int numHits):base(numHits)
81 public override void Collect(
int doc)
83 float score = scorer.Score();
86 System.Diagnostics.Debug.Assert(!
float.IsNaN(score));
90 if (score < pqTop.Score || (score == pqTop.Score && doc > pqTop.Doc))
96 pqTop = pq.UpdateTop();
99 public override bool AcceptsDocsOutOfOrder
117 if (docsScoredInOrder)
119 return new InOrderTopScoreDocCollector(numHits);
123 return new OutOfOrderTopScoreDocCollector(numHits);
128 internal int docBase = 0;
143 return EMPTY_TOPDOCS;
150 float maxScore = System.Single.NaN;
153 maxScore = results[0].
Score;
157 for (
int i = pq.Size(); i > 1; i--)
161 maxScore = pq.Pop().Score;
164 return new TopDocs(internalTotalHits, results, maxScore);
167 public override void SetNextReader(
IndexReader reader,
int base_Renamed)
169 docBase = base_Renamed;
172 public override void SetScorer(
Scorer scorer)
174 this.scorer = scorer;