Class 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:
    JavascriptCompiler.compile(java.lang.String)
    WARNING: This API is experimental and might change in incompatible ways in the next release.
    • Field Detail

      • sourceText

        public final String sourceText
        The original source text
      • variables

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

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