Package org.apache.lucene.expressions
Class Expression
java.lang.Object
org.apache.lucene.expressions.Expression
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 Summary
-
Constructor Summary
ModifierConstructorDescriptionprotected
Expression
(String sourceText, String[] variables) Creates a newExpression
. -
Method Summary
Modifier and TypeMethodDescriptionabstract double
evaluate
(DoubleValues[] functionValues) Evaluates the expression for the current document.getDoubleValuesSource
(Bindings bindings) Get a DoubleValuesSource which can compute the value of this expression in the context of the given bindings.getRescorer
(Bindings bindings) Get aRescorer
, to rescore first-pass hits using this expression.getSortField
(Bindings bindings, boolean reverse) Get a sort field which can be used to rank documents by this expression.
-
Field Details
-
sourceText
The original source text -
variables
Named variables referred to by this expression
-
-
Constructor Details
-
Expression
Creates a newExpression
.- Parameters:
sourceText
- Source text for the expression: e.g.ln(popularity)
variables
- Names of external variables referred to by the expression
-
-
Method Details
-
evaluate
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
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
Get a sort field which can be used to rank documents by this expression. -
getRescorer
Get aRescorer
, to rescore first-pass hits using this expression.
-