Package org.apache.lucene.expressions
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 DoubleValuesSource instances SimpleBindings bindings = new SimpleBindings(); bindings.add("_score", DoubleValuesSource.SCORES); bindings.add("popularity", DoubleValuesSource.fromIntField("popularity")); // 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 DoubleValuesSource instances SimpleBindings bindings = new SimpleBindings(); bindings.add("_score", DoubleValuesSource.SCORES); bindings.add("popularity", DoubleValuesSource.fromIntField("popularity")); // 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 Summary
Fields Modifier and Type Field Description StringsourceTextThe original source textString[]variablesNamed variables referred to by this expression
-
Constructor Summary
Constructors Modifier Constructor Description protectedExpression(String sourceText, String[] variables)Creates a newExpression.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract doubleevaluate(DoubleValues[] functionValues)Evaluates the expression for the current document.DoubleValuesSourcegetDoubleValuesSource(Bindings bindings)Get a DoubleValuesSource which can compute the value of this expression in the context of the given bindings.RescorergetRescorer(Bindings bindings)Get aRescorer, to rescore first-pass hits using this expression.SortFieldgetSortField(Bindings bindings, boolean reverse)Get a sort field which can be used to rank documents by this expression.
-
-
-
Method Detail
-
evaluate
public abstract double evaluate(DoubleValues[] functionValues)
Evaluates the expression for the current document.- Parameters:
functionValues-DoubleValuesfor each element ofvariables.- 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.
-
-