private class LRUQueryCache.CachingWrapperWeight extends ConstantScoreWeight
Weight.DefaultBulkScorer
Modifier and Type | Field and Description |
---|---|
private Weight |
in |
private QueryCachingPolicy |
policy |
private java.util.concurrent.atomic.AtomicBoolean |
used |
parentQuery
Constructor and Description |
---|
CachingWrapperWeight(Weight in,
QueryCachingPolicy policy) |
Modifier and Type | Method and Description |
---|---|
BulkScorer |
bulkScorer(LeafReaderContext context)
Optional method, to return a
BulkScorer to
score the query and send hits to a Collector . |
private DocIdSet |
cache(LeafReaderContext context) |
private boolean |
cacheEntryHasReasonableWorstCaseSize(int maxDoc) |
void |
extractTerms(java.util.Set<Term> terms)
Expert: adds all terms occurring in this query to the terms set.
|
boolean |
isCacheable(LeafReaderContext ctx) |
Matches |
matches(LeafReaderContext context,
int doc)
Returns
Matches for a specific document, or null if the document
does not match the parent query
A query match that contains no position information (for example, a Point or
DocValues query) will return MatchesUtils.MATCH_WITH_NO_TERMS |
Scorer |
scorer(LeafReaderContext context)
Returns a
Scorer which can iterate in order over all matching
documents and assign them a score. |
ScorerSupplier |
scorerSupplier(LeafReaderContext context)
Optional method.
|
private boolean |
shouldCache(LeafReaderContext context)
Check whether this segment is eligible for caching, regardless of the query.
|
explain, score
private final Weight in
private final QueryCachingPolicy policy
private final java.util.concurrent.atomic.AtomicBoolean used
CachingWrapperWeight(Weight in, QueryCachingPolicy policy)
public void extractTerms(java.util.Set<Term> terms)
Weight
Weight
was created with needsScores == true
then this
method will only extract terms which are used for scoring, otherwise it
will extract all terms which are used for matching.extractTerms
in class ConstantScoreWeight
public Matches matches(LeafReaderContext context, int doc) throws java.io.IOException
Weight
Matches
for a specific document, or null
if the document
does not match the parent query
A query match that contains no position information (for example, a Point or
DocValues query) will return MatchesUtils.MATCH_WITH_NO_TERMS
private boolean cacheEntryHasReasonableWorstCaseSize(int maxDoc)
private DocIdSet cache(LeafReaderContext context) throws java.io.IOException
java.io.IOException
private boolean shouldCache(LeafReaderContext context) throws java.io.IOException
java.io.IOException
public ScorerSupplier scorerSupplier(LeafReaderContext context) throws java.io.IOException
Weight
ScorerSupplier
, which allows to know the cost of the Scorer
before building it. The default implementation calls Weight.scorer(org.apache.lucene.index.LeafReaderContext)
and
builds a ScorerSupplier
wrapper around it.scorerSupplier
in class Weight
java.io.IOException
Weight.scorer(org.apache.lucene.index.LeafReaderContext)
public Scorer scorer(LeafReaderContext context) throws java.io.IOException
Weight
Scorer
which can iterate in order over all matching
documents and assign them a score.
NOTE: null can be returned if no documents will be scored by this query.
NOTE: The returned Scorer
does not have
LeafReader.getLiveDocs()
applied, they need to be checked on top.
scorer
in class Weight
context
- the LeafReaderContext
for which to return the Scorer
.Scorer
which scores documents in/out-of order.java.io.IOException
- if there is a low-level I/O errorpublic boolean isCacheable(LeafReaderContext ctx)
true
if the object can be cached against a given leafpublic BulkScorer bulkScorer(LeafReaderContext context) throws java.io.IOException
Weight
BulkScorer
to
score the query and send hits to a Collector
.
Only queries that have a different top-level approach
need to override this; the default implementation
pulls a normal Scorer
and iterates and
collects the resulting hits which are not marked as deleted.bulkScorer
in class Weight
context
- the LeafReaderContext
for which to return the Scorer
.BulkScorer
which scores documents and
passes them to a collector.java.io.IOException
- if there is a low-level I/O error