ConjunctionScorer
.
/// This Scorer implements {@link Scorer#SkipTo(int)} and uses skipTo() on the given Scorers.
///
/// After each to call to next() or skipTo()
/// currentSumScore
is the total score of the current matching doc,
/// nrMatchers
is the number of matching scorers,
/// and all scorers are after the matching doc, or are exhausted.
///
DisjunctionScorer
.minimumNrMatchers
is bigger than
/// the number of subScorers
,
/// no matches will be produced.
/// ConjunctionScorer
.
///
public DisjunctionSumScorer(System.Collections.IList subScorers, int minimumNrMatchers) : base(null)
{
nrScorers = subScorers.Count;
if (minimumNrMatchers <= 0)
{
throw new System.ArgumentException("Minimum nr of matchers must be positive");
}
if (nrScorers <= 1)
{
throw new System.ArgumentException("There must be at least 2 subScorers");
}
this.minimumNrMatchers = minimumNrMatchers;
this.subScorers = subScorers;
}
/// DisjunctionScorer
, using one as the minimum number
/// of matching subscorers.
/// scorerQueue
.
/// PriorityQueue
that orders by {@link Scorer#Doc()}. scorerQueue
.
/// Repeat until at least the minimum number of subscorers match on the same
/// document and all subscorers are after that document or are exhausted.
/// scorerQueue
has at least minimumNrMatchers
/// available. At least the scorer with the minimum document number will be advanced.
///