Class LRUQueryCache.CachingWrapperWeight
- java.lang.Object
-
- org.apache.lucene.search.Weight
-
- org.apache.lucene.search.ConstantScoreWeight
-
- org.apache.lucene.search.LRUQueryCache.CachingWrapperWeight
-
- All Implemented Interfaces:
SegmentCacheable
- Enclosing class:
- LRUQueryCache
private class LRUQueryCache.CachingWrapperWeight extends ConstantScoreWeight
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.lucene.search.Weight
Weight.DefaultBulkScorer
-
-
Field Summary
Fields Modifier and Type Field Description private Weight
in
private QueryCachingPolicy
policy
private java.util.concurrent.atomic.AtomicBoolean
used
-
Fields inherited from class org.apache.lucene.search.Weight
parentQuery
-
-
Constructor Summary
Constructors Constructor Description CachingWrapperWeight(Weight in, QueryCachingPolicy policy)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description BulkScorer
bulkScorer(LeafReaderContext context)
Optional method, to return aBulkScorer
to score the query and send hits to aCollector
.private LRUQueryCache.CacheAndCount
cache(LeafReaderContext context)
private boolean
cacheEntryHasReasonableWorstCaseSize(int maxDoc)
int
count(LeafReaderContext context)
Counts the number of live documents that match a givenWeight.parentQuery
in a leaf.boolean
isCacheable(LeafReaderContext ctx)
Matches
matches(LeafReaderContext context, int doc)
ReturnsMatches
for a specific document, ornull
if the document does not match the parent queryScorer
scorer(LeafReaderContext context)
Returns aScorer
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.-
Methods inherited from class org.apache.lucene.search.ConstantScoreWeight
explain, score
-
-
-
-
Field Detail
-
in
private final Weight in
-
policy
private final QueryCachingPolicy policy
-
used
private final java.util.concurrent.atomic.AtomicBoolean used
-
-
Constructor Detail
-
CachingWrapperWeight
CachingWrapperWeight(Weight in, QueryCachingPolicy policy)
-
-
Method Detail
-
matches
public Matches matches(LeafReaderContext context, int doc) throws java.io.IOException
Description copied from class:Weight
ReturnsMatches
for a specific document, ornull
if the document does not match the parent queryA query match that contains no position information (for example, a Point or DocValues query) will return
MatchesUtils.MATCH_WITH_NO_TERMS
-
cacheEntryHasReasonableWorstCaseSize
private boolean cacheEntryHasReasonableWorstCaseSize(int maxDoc)
-
cache
private LRUQueryCache.CacheAndCount cache(LeafReaderContext context) throws java.io.IOException
- Throws:
java.io.IOException
-
shouldCache
private boolean shouldCache(LeafReaderContext context) throws java.io.IOException
Check whether this segment is eligible for caching, regardless of the query.- Throws:
java.io.IOException
-
scorerSupplier
public ScorerSupplier scorerSupplier(LeafReaderContext context) throws java.io.IOException
Description copied from class:Weight
Optional method. Get aScorerSupplier
, which allows to know the cost of theScorer
before building it. The default implementation callsWeight.scorer(org.apache.lucene.index.LeafReaderContext)
and builds aScorerSupplier
wrapper around it.- Overrides:
scorerSupplier
in classWeight
- Throws:
java.io.IOException
- See Also:
Weight.scorer(org.apache.lucene.index.LeafReaderContext)
-
scorer
public Scorer scorer(LeafReaderContext context) throws java.io.IOException
Description copied from class:Weight
Returns aScorer
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 haveLeafReader.getLiveDocs()
applied, they need to be checked on top.- Specified by:
scorer
in classWeight
- Parameters:
context
- theLeafReaderContext
for which to return theScorer
.- Returns:
- a
Scorer
which scores documents in/out-of order. - Throws:
java.io.IOException
- if there is a low-level I/O error
-
count
public int count(LeafReaderContext context) throws java.io.IOException
Description copied from class:Weight
Counts the number of live documents that match a givenWeight.parentQuery
in a leaf.The default implementation returns -1 for every query. This indicates that the count could not be computed in sub-linear time.
Specific query classes should override it to provide other accurate sub-linear implementations (that actually return the count). Look at
MatchAllDocsQuery.createWeight(IndexSearcher, ScoreMode, float)
for an exampleWe use this property of the function to count hits in
IndexSearcher.count(Query)
.- Overrides:
count
in classWeight
- Parameters:
context
- theLeafReaderContext
for which to return the count.- Returns:
- integer count of the number of matches
- Throws:
java.io.IOException
- if there is a low-level I/O error
-
isCacheable
public boolean isCacheable(LeafReaderContext ctx)
- Returns:
true
if the object can be cached against a given leaf
-
bulkScorer
public BulkScorer bulkScorer(LeafReaderContext context) throws java.io.IOException
Description copied from class:Weight
Optional method, to return aBulkScorer
to score the query and send hits to aCollector
. Only queries that have a different top-level approach need to override this; the default implementation pulls a normalScorer
and iterates and collects the resulting hits which are not marked as deleted.- Overrides:
bulkScorer
in classWeight
- Parameters:
context
- theLeafReaderContext
for which to return theScorer
.- Returns:
- a
BulkScorer
which scores documents and passes them to a collector. - Throws:
java.io.IOException
- if there is a low-level I/O error
-
-