Class Expression

java.lang.Object
org.apache.lucene.expressions.Expression

public abstract class Expression extends Object
Base class that computes the value of an expression for a document.

Example that sorts based on an expression:

   // compile an expression:
   Expression expr = JavascriptCompiler.compile("sqrt(_score) + ln(popularity)");

   // SimpleBindings just maps variables to SortField instances
   SimpleBindings bindings = new SimpleBindings();
   bindings.add(new SortField("_score", SortField.Type.SCORE));
   bindings.add(new SortField("popularity", SortField.Type.INT));

   // create a sort field and sort by it (reverse order)
   Sort sort = new Sort(expr.getSortField(bindings, true));
   Query query = new TermQuery(new Term("body", "contents"));
   searcher.search(query, 10, sort);
 

Example that modifies the scores produced by the query:

   // compile an expression:
   Expression expr = JavascriptCompiler.compile("sqrt(_score) + ln(popularity)");

   // SimpleBindings just maps variables to SortField instances
   SimpleBindings bindings = new SimpleBindings();
   bindings.add(new SortField("_score", SortField.Type.SCORE));
   bindings.add(new SortField("popularity", SortField.Type.INT));

   // create a query that matches based on body:contents but
   // scores using expr
   Query query = new FunctionScoreQuery(
       new TermQuery(new Term("body", "contents")),
       expr.getDoubleValuesSource(bindings));
   searcher.search(query, 10);
 
See Also:
WARNING: This API is experimental and might change in incompatible ways in the next release.
  • Field Details

    • sourceText

      public final String sourceText
      The original source text
    • variables

      public final String[] variables
      Named variables referred to by this expression
  • Constructor Details

    • Expression

      protected Expression(String sourceText, String[] variables)
      Creates a new Expression.
      Parameters:
      sourceText - Source text for the expression: e.g. ln(popularity)
      variables - Names of external variables referred to by the expression
  • Method Details

    • evaluate

      public abstract double evaluate(DoubleValues[] functionValues)
      Evaluates the expression for the current document.
      Parameters:
      functionValues - DoubleValues for each element of variables.
      Returns:
      The computed value of the expression for the given document.
    • getDoubleValuesSource

      public DoubleValuesSource getDoubleValuesSource(Bindings bindings)
      Get a DoubleValuesSource which can compute the value of this expression in the context of the given bindings.
      Parameters:
      bindings - Bindings to use for external values in this expression
      Returns:
      A DoubleValuesSource which will evaluate this expression when used
    • getSortField

      public SortField getSortField(Bindings bindings, boolean reverse)
      Get a sort field which can be used to rank documents by this expression.
    • getRescorer

      public Rescorer getRescorer(Bindings bindings)
      Get a Rescorer, to rescore first-pass hits using this expression.