Class ArrayContext
java.lang.Object
com.yahoo.searchlib.rankingexpression.evaluation.Context
com.yahoo.searchlib.rankingexpression.evaluation.AbstractArrayContext
com.yahoo.searchlib.rankingexpression.evaluation.ArrayContext
- All Implemented Interfaces:
ContextIndex
,com.yahoo.tensor.evaluation.EvaluationContext<Reference>
,com.yahoo.tensor.evaluation.TypeContext<Reference>
,Cloneable
Creates a context which supports array index based lookup.
This instance may be reused indefinitely for evaluations of a single
ranking expression, in a single thread at the time.
- Author:
- bratseth
-
Constructor Summary
ConstructorDescriptionArrayContext
(RankingExpression expression) Create a fast lookup context for an expression.ArrayContext
(RankingExpression expression, boolean ignoreUnknownValues) ArrayContext
(RankingExpression expression, boolean ignoreUnknownValues, Value missingValue) Create a fast lookup context for an expression.ArrayContext
(RankingExpression expression, Value defaultValue) -
Method Summary
Modifier and TypeMethodDescriptionclone()
Creates a clone of this context suitable for evaluating against the same ranking expression in a different thread (i.e, name name to index map, different value set.final Value
get
(int index) Perform a fast lookup by indexPerform a slow lookup by namefinal double
getDouble
(int index) Perform a fast lookup directly of the value as a double.com.yahoo.tensor.TensorType
final void
put
(int index, double value) Same as put(index,DoubleValue.frozen(value))final void
Puts a value by index.final void
Puts a value by name.Methods inherited from class com.yahoo.searchlib.rankingexpression.evaluation.AbstractArrayContext
doubleValues, getIndex, ignoreUnknownValues, names, nameToIndex, size, toString
-
Constructor Details
-
ArrayContext
Create a fast lookup context for an expression. This instance should be reused indefinitely by a single thread. This will fail if unknown values are attempted added. -
ArrayContext
-
ArrayContext
-
ArrayContext
Create a fast lookup context for an expression. This instance should be reused indefinitely by a single thread.- Parameters:
expression
- the expression to create a context forignoreUnknownValues
- whether attempts to put values not present in this expression should fail (false - the default), or be ignored (true)missingValue
- the value to return if not set.
-
-
Method Details
-
put
Puts a value by name. The value will be frozen if it isn't already.- Overrides:
put
in classContext
- Parameters:
name
- the name of the variable to set.value
- the value to set. Ownership of this value is transferred to this - if it is mutable (not frozen) it may be modified during execution- Throws:
IllegalArgumentException
- if the name is not present in the ranking expression this was created with, and ignoredUnknownValues is false
-
put
public final void put(int index, double value) Same as put(index,DoubleValue.frozen(value)) -
put
Puts a value by index. The value will be frozen if it isn't already. -
getType
- Specified by:
getType
in interfacecom.yahoo.tensor.evaluation.TypeContext<Reference>
-
get
Perform a slow lookup by name -
get
Perform a fast lookup by index- Specified by:
get
in interfaceContextIndex
- Overrides:
get
in classContext
- Parameters:
index
- the index of the variable whose value to return.- Returns:
- the value of the indexed variable.
-
getDouble
public final double getDouble(int index) Perform a fast lookup directly of the value as a double. This is faster than get(index).asDouble()- Specified by:
getDouble
in interfaceContextIndex
- Overrides:
getDouble
in classAbstractArrayContext
- Parameters:
index
- the index of the variable whose value to return.- Returns:
- the value of the indexed variable.
-
clone
Creates a clone of this context suitable for evaluating against the same ranking expression in a different thread (i.e, name name to index map, different value set.- Overrides:
clone
in classAbstractArrayContext
-