Package org.apache.lucene.expressions
Class ExpressionValueSource
- java.lang.Object
-
- org.apache.lucene.search.DoubleValuesSource
-
- org.apache.lucene.expressions.ExpressionValueSource
-
- All Implemented Interfaces:
SegmentCacheable
- Direct Known Subclasses:
CachingExpressionValueSource
class ExpressionValueSource extends DoubleValuesSource
-
-
Field Summary
Fields Modifier and Type Field Description (package private) Expression
expression
(package private) boolean
needsScores
(package private) DoubleValuesSource[]
variables
-
Fields inherited from class org.apache.lucene.search.DoubleValuesSource
SCORES
-
-
Constructor Summary
Constructors Constructor Description ExpressionValueSource(Bindings bindings, Expression expression)
ExpressionValueSource(DoubleValuesSource[] variables, Expression expression, boolean needsScores)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(java.lang.Object obj)
Explanation
explain(LeafReaderContext ctx, int docId, Explanation scoreExplanation)
An explanation of the value for the named document.DoubleValues
getValues(LeafReaderContext readerContext, DoubleValues scores)
Returns aDoubleValues
instance for the passed-in LeafReaderContext and scoresint
hashCode()
boolean
isCacheable(LeafReaderContext ctx)
boolean
needsScores()
Return true if document scores are needed to calculate valuesDoubleValuesSource
rewrite(IndexSearcher searcher)
Return a DoubleValuesSource specialised for the given IndexSearcherjava.lang.String
toString()
(package private) static DoubleValues
zeroWhenUnpositioned(DoubleValues in)
Create a wrapper around all the expression arguments to do two things: Default to 0 for any argument that doesn't have a value for a given doc (i.e., #advanceExact returns false) Be as lazy as possible about actually advancing to the given doc until the argument value is actually needed by the expression.-
Methods inherited from class org.apache.lucene.search.DoubleValuesSource
constant, fromDoubleField, fromField, fromFloatField, fromIntField, fromLongField, fromQuery, fromScorer, getSortField, similarityToQueryVector, similarityToQueryVector, toLongValuesSource
-
-
-
-
Field Detail
-
variables
final DoubleValuesSource[] variables
-
expression
final Expression expression
-
needsScores
final boolean needsScores
-
-
Constructor Detail
-
ExpressionValueSource
ExpressionValueSource(Bindings bindings, Expression expression)
-
ExpressionValueSource
ExpressionValueSource(DoubleValuesSource[] variables, Expression expression, boolean needsScores)
-
-
Method Detail
-
getValues
public DoubleValues getValues(LeafReaderContext readerContext, DoubleValues scores) throws java.io.IOException
Description copied from class:DoubleValuesSource
Returns aDoubleValues
instance for the passed-in LeafReaderContext and scoresIf scores are not needed to calculate the values (ie
returns false
, callers may safely passnull
for thescores
parameter.- Specified by:
getValues
in classDoubleValuesSource
- Throws:
java.io.IOException
-
zeroWhenUnpositioned
static DoubleValues zeroWhenUnpositioned(DoubleValues in)
Create a wrapper around all the expression arguments to do two things:- Default to 0 for any argument that doesn't have a value for a given doc (i.e., #advanceExact returns false)
- Be as lazy as possible about actually advancing to the given doc until the argument value
is actually needed by the expression. For a given doc, some arguments may not actually be
needed, e.g., because of condition short-circuiting (
(true || X)
doesn't need to evaluateX
) or ternary branching (true ? X : Y
doesn't need to evaluateY
).
-
toString
public java.lang.String toString()
- Specified by:
toString
in classDoubleValuesSource
-
hashCode
public int hashCode()
- Specified by:
hashCode
in classDoubleValuesSource
-
equals
public boolean equals(java.lang.Object obj)
- Specified by:
equals
in classDoubleValuesSource
-
needsScores
public boolean needsScores()
Description copied from class:DoubleValuesSource
Return true if document scores are needed to calculate values- Specified by:
needsScores
in classDoubleValuesSource
-
isCacheable
public boolean isCacheable(LeafReaderContext ctx)
- Returns:
true
if the object can be cached against a given leaf
-
explain
public Explanation explain(LeafReaderContext ctx, int docId, Explanation scoreExplanation) throws java.io.IOException
Description copied from class:DoubleValuesSource
An explanation of the value for the named document.- Overrides:
explain
in classDoubleValuesSource
- Parameters:
ctx
- the readers context to create theExplanation
for.docId
- the document's id relative to the given context's reader- Returns:
- an Explanation for the value
- Throws:
java.io.IOException
- if anIOException
occurs
-
rewrite
public DoubleValuesSource rewrite(IndexSearcher searcher) throws java.io.IOException
Description copied from class:DoubleValuesSource
Return a DoubleValuesSource specialised for the given IndexSearcherImplementations should assume that this will only be called once. IndexReader-independent implementations can just return
this
Queries that use DoubleValuesSource objects should call rewrite() during
Query.createWeight(IndexSearcher, ScoreMode, float)
rather than duringQuery.rewrite(IndexSearcher)
to avoid IndexReader reference leakage.For the same reason, implementations that cache references to the IndexSearcher should return a new object from this method.
- Specified by:
rewrite
in classDoubleValuesSource
- Throws:
java.io.IOException
-
-