Class Expression


  • public abstract class Expression
    extends java.lang.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:
    JavascriptCompiler.compile(java.lang.String)
    • Field Summary

      Fields 
      Modifier and Type Field Description
      java.lang.String sourceText
      The original source text
      java.lang.String[] variables
      Named variables referred to by this expression
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected Expression​(java.lang.String sourceText, java.lang.String[] variables)
      Creates a new Expression.
    • Field Detail

      • sourceText

        public final java.lang.String sourceText
        The original source text
      • variables

        public final java.lang.String[] variables
        Named variables referred to by this expression
    • Constructor Detail

      • Expression

        protected Expression​(java.lang.String sourceText,
                             java.lang.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 Detail

      • 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.