org.apache.lucene.search

Class DisjunctionSumScorer

public class DisjunctionSumScorer extends Scorer

A Scorer for OR like queries, counterpart of Lucene's ConjunctionScorer. This Scorer implements {@link Scorer#skipTo(int)} and uses skipTo() on the given Scorers.
Field Summary
protected intnrMatchers
The number of subscorers that provide the current match.
protected ListsubScorers
The subscorers.
Constructor Summary
DisjunctionSumScorer(List subScorers, int minimumNrMatchers)
Construct a DisjunctionScorer.
DisjunctionSumScorer(List subScorers)
Construct a DisjunctionScorer, using one as the minimum number of matching subscorers.
Method Summary
protected booleanadvanceAfterCurrent()
Advance all subscorers after the current document determined by the top of the scorerQueue.
intdoc()
Explanationexplain(int doc)
Gives and explanation for the score of a given document.
booleannext()
intnrMatchers()
Returns the number of subscorers matching the current document.
floatscore()
Returns the score of the current document matching the query.
booleanskipTo(int target)
Skips to the first match beyond the current whose document number is greater than or equal to a given target.

Field Detail

nrMatchers

protected int nrMatchers
The number of subscorers that provide the current match.

subScorers

protected final List subScorers
The subscorers.

Constructor Detail

DisjunctionSumScorer

public DisjunctionSumScorer(List subScorers, int minimumNrMatchers)
Construct a DisjunctionScorer.

Parameters: subScorers A collection of at least two subscorers. minimumNrMatchers The positive minimum number of subscorers that should match to match this query.
When minimumNrMatchers is bigger than the number of subScorers, no matches will be produced.
When minimumNrMatchers equals the number of subScorers, it more efficient to use ConjunctionScorer.

DisjunctionSumScorer

public DisjunctionSumScorer(List subScorers)
Construct a DisjunctionScorer, using one as the minimum number of matching subscorers.

Method Detail

advanceAfterCurrent

protected boolean advanceAfterCurrent()
Advance all subscorers after the current document determined by the top of the 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.
On entry the scorerQueue has at least minimumNrMatchers available. At least the scorer with the minimum document number will be advanced.

Returns: true iff there is a match.
In case there is a match, currentDoc, currentSumScore, and nrMatchers describe the match.

UNKNOWN: Investigate whether it is possible to use skipTo() when the minimum number of matchers is bigger than one, ie. try and use the character of ConjunctionScorer for the minimum number of matchers.

doc

public int doc()

explain

public Explanation explain(int doc)
Gives and explanation for the score of a given document.

UNKNOWN: Show the resulting score. See BooleanScorer.explain() on how to do this.

next

public boolean next()

nrMatchers

public int nrMatchers()
Returns the number of subscorers matching the current document. Initially invalid, until {@link #next()} is called the first time.

score

public float score()
Returns the score of the current document matching the query. Initially invalid, until {@link #next()} is called the first time.

skipTo

public boolean skipTo(int target)
Skips to the first match beyond the current whose document number is greater than or equal to a given target.
When this method is used the {@link #explain(int)} method should not be used.
The implementation uses the skipTo() method on the subscorers.

Parameters: target The target document number.

Returns: true iff there is such a match.

Copyright © 2000-2008 Apache Software Foundation. All Rights Reserved.