All Implemented Interfaces:
ContextIndex, com.yahoo.tensor.evaluation.EvaluationContext<Reference>, com.yahoo.tensor.evaluation.TypeContext<Reference>, Cloneable

public class ArrayContext extends AbstractArrayContext implements 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 Details

    • ArrayContext

      public ArrayContext(RankingExpression expression)
      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

      public ArrayContext(RankingExpression expression, boolean ignoreUnknownValues)
    • ArrayContext

      public ArrayContext(RankingExpression expression, Value defaultValue)
    • ArrayContext

      public ArrayContext(RankingExpression expression, boolean ignoreUnknownValues, Value missingValue)
      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 for
      ignoreUnknownValues - 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

      public final void put(String name, Value value)
      Puts a value by name. The value will be frozen if it isn't already.
      Overrides:
      put in class Context
      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

      public final void put(int index, Value value)
      Puts a value by index. The value will be frozen if it isn't already.
    • getType

      public com.yahoo.tensor.TensorType getType(Reference reference)
      Specified by:
      getType in interface com.yahoo.tensor.evaluation.TypeContext<Reference>
    • get

      public Value get(String name)
      Perform a slow lookup by name
      Specified by:
      get in class Context
      Parameters:
      name - the name of the variable whose value to return.
      Returns:
      the value of the named variable.
    • get

      public final Value get(int index)
      Perform a fast lookup by index
      Specified by:
      get in interface ContextIndex
      Overrides:
      get in class Context
      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 interface ContextIndex
      Overrides:
      getDouble in class AbstractArrayContext
      Parameters:
      index - the index of the variable whose value to return.
      Returns:
      the value of the indexed variable.
    • clone

      public ArrayContext 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 class AbstractArrayContext