Class DoubleValuesSource
- java.lang.Object
-
- org.apache.lucene.search.DoubleValuesSource
-
- All Implemented Interfaces:
SegmentCacheable
public abstract class DoubleValuesSource extends Object implements SegmentCacheable
Base class for producingDoubleValuesTo obtain a
DoubleValuesobject for a leaf reader, clients should callrewrite(IndexSearcher)against the top-level searcher, and then callgetValues(LeafReaderContext, DoubleValues)on the resulting DoubleValuesSource.DoubleValuesSource objects for NumericDocValues fields can be obtained by calling
fromDoubleField(String),fromFloatField(String),fromIntField(String)orfromLongField(String), or fromfromField(String, LongToDoubleFunction)if special long-to-double encoding is required.Scores may be used as a source for value calculations by wrapping a
ScorerusingfromScorer(Scorable)and passing the resulting DoubleValues togetValues(LeafReaderContext, DoubleValues). The scores can then be accessed using theSCORESDoubleValuesSource.
-
-
Field Summary
Fields Modifier and Type Field Description static DoubleValuesSourceSCORESA DoubleValuesSource that exposes a document's score
-
Constructor Summary
Constructors Constructor Description DoubleValuesSource()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static DoubleValuesSourceconstant(double value)Creates a DoubleValuesSource that always returns a constant valueabstract booleanequals(Object obj)Explanationexplain(LeafReaderContext ctx, int docId, Explanation scoreExplanation)An explanation of the value for the named document.static DoubleValuesSourcefromDoubleField(String field)Creates a DoubleValuesSource that wraps a double-valued fieldstatic DoubleValuesSourcefromField(String field, LongToDoubleFunction decoder)Creates a DoubleValuesSource that wraps a generic NumericDocValues fieldstatic DoubleValuesSourcefromFloatField(String field)Creates a DoubleValuesSource that wraps a float-valued fieldstatic DoubleValuesSourcefromIntField(String field)Creates a DoubleValuesSource that wraps an int-valued fieldstatic DoubleValuesSourcefromLongField(String field)Creates a DoubleValuesSource that wraps a long-valued fieldstatic DoubleValuesSourcefromQuery(Query query)Create a DoubleValuesSource that returns the score of a particular querystatic DoubleValuesfromScorer(Scorable scorer)Returns a DoubleValues instance that wraps scores returned by a Scorer.SortFieldgetSortField(boolean reverse)Create a sort field based on the value of this producerabstract DoubleValuesgetValues(LeafReaderContext ctx, DoubleValues scores)Returns aDoubleValuesinstance for the passed-in LeafReaderContext and scoresabstract inthashCode()abstract booleanneedsScores()Return true if document scores are needed to calculate valuesabstract DoubleValuesSourcerewrite(IndexSearcher reader)Return a DoubleValuesSource specialised for the given IndexSearcherstatic DoubleValuessimilarityToQueryVector(LeafReaderContext ctx, byte[] queryVector, String vectorField)Returns a DoubleValues instance for computing the vector similarity score per document against the byte query vectorstatic DoubleValuessimilarityToQueryVector(LeafReaderContext ctx, float[] queryVector, String vectorField)Returns a DoubleValues instance for computing the vector similarity score per document against the float query vectorLongValuesSourcetoLongValuesSource()Convert to a LongValuesSource by casting the double values to longsLongValuesSourcetoSortableLongDoubleValuesSource()Convert toLongValuesSourceby callingNumericUtils.doubleToSortableLong(double)abstract StringtoString()-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.lucene.search.SegmentCacheable
isCacheable
-
-
-
-
Field Detail
-
SCORES
public static final DoubleValuesSource SCORES
A DoubleValuesSource that exposes a document's scoreIf this source is used as part of a values calculation, then callers must not pass
nullas theDoubleValuesparameter ongetValues(LeafReaderContext, DoubleValues)
-
-
Method Detail
-
getValues
public abstract DoubleValues getValues(LeafReaderContext ctx, DoubleValues scores) throws IOException
Returns aDoubleValuesinstance for the passed-in LeafReaderContext and scoresIf scores are not needed to calculate the values (ie
returns false, callers may safely passnullfor thescoresparameter.- Throws:
IOException
-
needsScores
public abstract boolean needsScores()
Return true if document scores are needed to calculate values
-
explain
public Explanation explain(LeafReaderContext ctx, int docId, Explanation scoreExplanation) throws IOException
An explanation of the value for the named document.- Parameters:
ctx- the readers context to create theExplanationfor.docId- the document's id relative to the given context's reader- Returns:
- an Explanation for the value
- Throws:
IOException- if anIOExceptionoccurs
-
rewrite
public abstract DoubleValuesSource rewrite(IndexSearcher reader) throws IOException
Return a DoubleValuesSource specialised for the given IndexSearcherImplementations should assume that this will only be called once. IndexReader-independent implementations can just return
thisQueries 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.
- Throws:
IOException
-
getSortField
public SortField getSortField(boolean reverse)
Create a sort field based on the value of this producer- Parameters:
reverse- true if the sort should be decreasing
-
toLongValuesSource
public final LongValuesSource toLongValuesSource()
Convert to a LongValuesSource by casting the double values to longs
-
toSortableLongDoubleValuesSource
public final LongValuesSource toSortableLongDoubleValuesSource()
Convert toLongValuesSourceby callingNumericUtils.doubleToSortableLong(double)
-
similarityToQueryVector
public static DoubleValues similarityToQueryVector(LeafReaderContext ctx, byte[] queryVector, String vectorField) throws IOException
Returns a DoubleValues instance for computing the vector similarity score per document against the byte query vector- Parameters:
ctx- the context for which to return the DoubleValuesqueryVector- byte query vectorvectorField- knn byte field name- Returns:
- DoubleValues instance
- Throws:
IOException- if anIOExceptionoccurs
-
similarityToQueryVector
public static DoubleValues similarityToQueryVector(LeafReaderContext ctx, float[] queryVector, String vectorField) throws IOException
Returns a DoubleValues instance for computing the vector similarity score per document against the float query vector- Parameters:
ctx- the context for which to return the DoubleValuesqueryVector- float query vectorvectorField- knn float field name- Returns:
- DoubleValues instance
- Throws:
IOException- if anIOExceptionoccurs
-
fromField
public static DoubleValuesSource fromField(String field, LongToDoubleFunction decoder)
Creates a DoubleValuesSource that wraps a generic NumericDocValues field- Parameters:
field- the field to wrap, must have NumericDocValuesdecoder- a function to convert the long-valued doc values to doubles
-
fromDoubleField
public static DoubleValuesSource fromDoubleField(String field)
Creates a DoubleValuesSource that wraps a double-valued field
-
fromFloatField
public static DoubleValuesSource fromFloatField(String field)
Creates a DoubleValuesSource that wraps a float-valued field
-
fromLongField
public static DoubleValuesSource fromLongField(String field)
Creates a DoubleValuesSource that wraps a long-valued field
-
fromIntField
public static DoubleValuesSource fromIntField(String field)
Creates a DoubleValuesSource that wraps an int-valued field
-
constant
public static DoubleValuesSource constant(double value)
Creates a DoubleValuesSource that always returns a constant value
-
fromScorer
public static DoubleValues fromScorer(Scorable scorer)
Returns a DoubleValues instance that wraps scores returned by a Scorer.Note: If you intend to call
Scorable.score()on the providedscorerseparately, you may want to consider wrapping it withScoreCachingWrappingScorer.wrap(Scorable)to avoid computing the actual score multiple times.
-
fromQuery
public static DoubleValuesSource fromQuery(Query query)
Create a DoubleValuesSource that returns the score of a particular query
-
-