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 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 Summary
Fields Modifier and Type Field Description String
sourceText
The original source textString[]
variables
Named variables referred to by this expression
-
Constructor Summary
Constructors Modifier Constructor Description protected
Expression(String sourceText, String[] variables)
Creates a newExpression
.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract double
evaluate(DoubleValues[] functionValues)
Evaluates the expression for the current document.DoubleValuesSource
getDoubleValuesSource(Bindings bindings)
Get a DoubleValuesSource which can compute the value of this expression in the context of the given bindings.Rescorer
getRescorer(Bindings bindings)
Get aRescorer
, to rescore first-pass hits using this expression.SortField
getSortField(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
-DoubleValues
for 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.
-
-