Package org.apache.lucene.search
Class BulkScorer
java.lang.Object
org.apache.lucene.search.BulkScorer
- Direct Known Subclasses:
ConstantScoreQuery.ConstantBulkScorer
,Weight.DefaultBulkScorer
This class is used to score a range of documents at once, and is returned by
Weight.bulkScorer(org.apache.lucene.index.LeafReaderContext)
. Only queries that have a more optimized means of scoring across a range of
documents need to override this. Otherwise, a default implementation is wrapped around the Scorer
returned by Weight.scorer(org.apache.lucene.index.LeafReaderContext)
.-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract long
cost()
Same asDocIdSetIterator.cost()
for bulk scorers.void
score
(LeafCollector collector, Bits acceptDocs) Scores and collects all matching documents.abstract 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 aftermax
.
-
Constructor Details
-
BulkScorer
public BulkScorer()
-
-
Method Details
-
score
Scores and collects all matching documents.- Parameters:
collector
- The collector to which all matching documents are passed.acceptDocs
-Bits
that represents the allowed documents to match, ornull
if they are all allowed to match.- Throws:
IOException
-
score
public abstract int score(LeafCollector collector, Bits acceptDocs, int min, int max) throws IOException Collects matching documents in a range and return an estimation of the next matching document which is on or aftermax
.The return value must be:
- >=
max
, DocIdSetIterator.NO_MORE_DOCS
if there are no more matches,- <= the first matching document that is >=
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; }
- Parameters:
collector
- The collector to which all matching documents are passed.acceptDocs
-Bits
that represents the allowed documents to match, ornull
if they are all allowed to match.min
- Score starting at, including, this documentmax
- Score up to, but not including, this doc- Returns:
- an under-estimation of the next matching doc after max
- Throws:
IOException
- >=
-
cost
public abstract long cost()Same asDocIdSetIterator.cost()
for bulk scorers.
-