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 Scorer.skipTo(int) and uses skipTo() on the given Scorers.

Field Summary

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

Constructor Summary

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

Method Summary

protected boolean
advanceAfterCurrent()
Advance all subscorers after the current document determined by the top of the scorerQueue.
int
doc()
Explanation
explain(int doc)
Gives and explanation for the score of a given document.
boolean
next()
int
nrMatchers()
Returns the number of subscorers matching the current document.
float
score()
Returns the score of the current document matching the query.
boolean
skipTo(int target)
Skips to the first match beyond the current whose document number is greater than or equal to a given target.

Methods inherited from class org.apache.lucene.search.Scorer

doc, explain, getSimilarity, next, score, score, score, skipTo

Field Details

nrMatchers

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

subScorers

protected final List subScorers
The subscorers.

Constructor Details

DisjunctionSumScorer

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

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.

Method Details

advanceAfterCurrent

protected boolean advanceAfterCurrent()
            throws IOException
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.
To Do:
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()
Overrides:
doc in interface Scorer

explain

public Explanation explain(int doc)
            throws IOException
Gives and explanation for the score of a given document.
Overrides:
explain in interface Scorer
To Do:
Show the resulting score. See BooleanScorer.explain() on how to do this.

next

public boolean next()
            throws IOException
Overrides:
next in interface Scorer

nrMatchers

public int nrMatchers()

score

public float score()
            throws IOException
Overrides:
score in interface Scorer

skipTo

public boolean skipTo(int target)
            throws IOException
Overrides:
skipTo in interface Scorer
Parameters:
target - The target document number.
Returns:
true iff there is such a match.

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