protected static class ConstantScoreQuery.ConstantBulkScorer extends BulkScorer
BulkScorer
so that if the CSQ
wraps a query with its own optimized top-level
scorer (e.g. BooleanScorer) we can use that
top-level scorer.Modifier and Type | Field and Description |
---|---|
(package private) BulkScorer |
bulkScorer |
(package private) float |
theScore |
(package private) Weight |
weight |
Constructor and Description |
---|
ConstantBulkScorer(BulkScorer bulkScorer,
Weight weight,
float theScore) |
Modifier and Type | Method and Description |
---|---|
long |
cost()
Same as
DocIdSetIterator.cost() for bulk scorers. |
int |
score(LeafCollector collector,
Bits acceptDocs,
int min,
int max)
Collects matching documents in a range and return an estimation of the
next matching document which is on or after
max . |
private LeafCollector |
wrapCollector(LeafCollector collector) |
score
final BulkScorer bulkScorer
final Weight weight
final float theScore
public ConstantBulkScorer(BulkScorer bulkScorer, Weight weight, float theScore)
public int score(LeafCollector collector, Bits acceptDocs, int min, int max) throws java.io.IOException
BulkScorer
max
.
The return value must be:
max
,DocIdSetIterator.NO_MORE_DOCS
if there are no more matches,max
otherwise.min
is the minimum document to be considered for matching. All
documents strictly before this value must be ignored.
Although max
would be a legal return value for this method, higher
values might help callers skip more efficiently over non-matching portions
of the docID space.
For instance, a Scorer
-based implementation could look like
below:
private final Scorer scorer; // set via constructor public int score(LeafCollector collector, Bits acceptDocs, int min, int max) throws IOException { collector.setScorer(scorer); int doc = scorer.docID(); if (doc < min) { doc = scorer.advance(min); } while (doc < max) { if (acceptDocs == null || acceptDocs.get(doc)) { collector.collect(doc); } doc = scorer.nextDoc(); } return doc; }
score
in class BulkScorer
collector
- The collector to which all matching documents are passed.acceptDocs
- Bits
that represents the allowed documents to match, or
null
if they are all allowed to match.min
- Score starting at, including, this documentmax
- Score up to, but not including, this docjava.io.IOException
private LeafCollector wrapCollector(LeafCollector collector)
public long cost()
BulkScorer
DocIdSetIterator.cost()
for bulk scorers.cost
in class BulkScorer