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 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:
- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
Field Summary
Fields -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedExpression(String sourceText, String[] variables) Creates a newExpression. -
Method Summary
Modifier and TypeMethodDescriptionabstract doubleevaluate(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-DoubleValuesfor each element ofvariables.- Returns:
- The computed value of the expression for the given document.
- Throws:
IOException
-
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.
-