You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ct...@apache.org on 2017/05/10 12:35:18 UTC
[31/50] [abbrv] lucene-solr:jira/solr-10290: LUCENE-7741: Add
explain() to DoubleValuesSource
LUCENE-7741: Add explain() to DoubleValuesSource
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/ffdc0b45
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/ffdc0b45
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/ffdc0b45
Branch: refs/heads/jira/solr-10290
Commit: ffdc0b4511b62642a01f9df16e1806199f17b818
Parents: 370adaa
Author: Alan Woodward <ro...@apache.org>
Authored: Wed May 10 08:29:55 2017 +0100
Committer: Cassandra Targett <ca...@lucidworks.com>
Committed: Wed May 10 07:30:33 2017 -0500
----------------------------------------------------------------------
lucene/CHANGES.txt | 3 +
.../lucene/search/DoubleValuesSource.java | 47 ++++++++++++++-
.../lucene/search/TestDoubleValuesSource.java | 63 ++++++++++++++++++++
.../lucene/expressions/ExpressionRescorer.java | 13 +---
.../expressions/ExpressionValueSource.java | 15 +++++
.../lucene/expressions/TestDemoExpressions.java | 32 +---------
.../expressions/TestExpressionRescorer.java | 2 +-
.../facet/range/TestRangeFacetCounts.java | 5 ++
.../queries/function/FunctionScoreQuery.java | 11 ++--
.../lucene/queries/function/ValueSource.java | 11 ++++
.../function/TestFunctionScoreExplanations.java | 2 +-
.../function/TestFunctionScoreQuery.java | 4 +-
12 files changed, 154 insertions(+), 54 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ffdc0b45/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 54cc54a..b92b3b9 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -50,6 +50,9 @@ API Changes
* LUCENE-7701: Grouping collectors have been refactored, such that groups are
now defined by a GroupSelector implementation. (Alan Woodward)
+* LUCENE-7741: DoubleValuesSource now has an explain() method (Alan Woodward,
+ Adrien Grand)
+
Bug Fixes
* LUCENE-7626: IndexWriter will no longer accept broken token offsets
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ffdc0b45/lucene/core/src/java/org/apache/lucene/search/DoubleValuesSource.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/DoubleValuesSource.java b/lucene/core/src/java/org/apache/lucene/search/DoubleValuesSource.java
index c22a3c3..929441d 100644
--- a/lucene/core/src/java/org/apache/lucene/search/DoubleValuesSource.java
+++ b/lucene/core/src/java/org/apache/lucene/search/DoubleValuesSource.java
@@ -59,6 +59,16 @@ public abstract class DoubleValuesSource {
public abstract boolean needsScores();
/**
+ * An explanation of the value for the named document.
+ *
+ * @param ctx the readers context to create the {@link Explanation} for.
+ * @param docId the document's id relative to the given context's reader
+ * @return an Explanation for the value
+ * @throws IOException if an {@link IOException} occurs
+ */
+ public abstract Explanation explain(LeafReaderContext ctx, int docId, Explanation scoreExplanation) throws IOException;
+
+ /**
* Create a sort field based on the value of this producer
* @param reverse true if the sort should be decreasing
*/
@@ -149,6 +159,11 @@ public abstract class DoubleValuesSource {
public boolean needsScores() {
return true;
}
+
+ @Override
+ public Explanation explain(LeafReaderContext ctx, int docId, Explanation scoreExplanation) {
+ return scoreExplanation;
+ }
};
/**
@@ -177,6 +192,11 @@ public abstract class DoubleValuesSource {
}
@Override
+ public Explanation explain(LeafReaderContext ctx, int docId, Explanation scoreExplanation) {
+ return Explanation.match((float) value, "constant(" + value + ")");
+ }
+
+ @Override
public String toString() {
return "constant(" + value + ")";
}
@@ -186,7 +206,7 @@ public abstract class DoubleValuesSource {
/**
* Creates a DoubleValuesSource that is a function of another DoubleValuesSource
*/
- public static DoubleValuesSource function(DoubleValuesSource in, DoubleUnaryOperator function) {
+ public static DoubleValuesSource function(DoubleValuesSource in, String description, DoubleUnaryOperator function) {
return new DoubleValuesSource() {
@Override
public DoubleValues getValues(LeafReaderContext ctx, DoubleValues scores) throws IOException {
@@ -208,15 +228,22 @@ public abstract class DoubleValuesSource {
public boolean needsScores() {
return in.needsScores();
}
+
+ @Override
+ public Explanation explain(LeafReaderContext ctx, int docId, Explanation scoreExplanation) throws IOException {
+ Explanation inner = in.explain(ctx, docId, scoreExplanation);
+ return Explanation.match((float) function.applyAsDouble(inner.getValue()), description + ", computed from:", inner, scoreExplanation);
+ }
};
}
/**
* Creates a DoubleValuesSource that is a function of another DoubleValuesSource and a score
* @param in the DoubleValuesSource to use as an input
+ * @param description a description of the function
* @param function a function of the form (source, score) == result
*/
- public static DoubleValuesSource scoringFunction(DoubleValuesSource in, ToDoubleBiFunction<Double, Double> function) {
+ public static DoubleValuesSource scoringFunction(DoubleValuesSource in, String description, ToDoubleBiFunction<Double, Double> function) {
return new DoubleValuesSource() {
@Override
public DoubleValues getValues(LeafReaderContext ctx, DoubleValues scores) throws IOException {
@@ -238,6 +265,13 @@ public abstract class DoubleValuesSource {
public boolean needsScores() {
return true;
}
+
+ @Override
+ public Explanation explain(LeafReaderContext ctx, int docId, Explanation scoreExplanation) throws IOException {
+ Explanation inner = in.explain(ctx, docId, scoreExplanation);
+ return Explanation.match((float) function.applyAsDouble((double)inner.getValue(), (double)scoreExplanation.getValue()),
+ description + ", computed from:", inner, scoreExplanation);
+ }
};
}
@@ -303,6 +337,15 @@ public abstract class DoubleValuesSource {
public boolean needsScores() {
return false;
}
+
+ @Override
+ public Explanation explain(LeafReaderContext ctx, int docId, Explanation scoreExplanation) throws IOException {
+ DoubleValues values = getValues(ctx, null);
+ if (values.advanceExact(docId))
+ return Explanation.match((float)values.doubleValue(), "double(" + field + ")");
+ else
+ return Explanation.noMatch("double(" + field + ")");
+ }
}
private static class DoubleValuesSortField extends SortField {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ffdc0b45/lucene/core/src/test/org/apache/lucene/search/TestDoubleValuesSource.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestDoubleValuesSource.java b/lucene/core/src/test/org/apache/lucene/search/TestDoubleValuesSource.java
index 13a5168..54501e6 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestDoubleValuesSource.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestDoubleValuesSource.java
@@ -17,6 +17,7 @@
package org.apache.lucene.search;
+import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
@@ -26,6 +27,7 @@ import org.apache.lucene.document.Field;
import org.apache.lucene.document.FloatDocValuesField;
import org.apache.lucene.document.NumericDocValuesField;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.store.Directory;
@@ -164,4 +166,65 @@ public class TestDoubleValuesSource extends LuceneTestCase {
CheckHits.checkEqual(query, expected.scoreDocs, actual.scoreDocs);
}
}
+
+ static final Query[] testQueries = new Query[]{
+ new MatchAllDocsQuery(),
+ new TermQuery(new Term("oddeven", "odd")),
+ new BooleanQuery.Builder()
+ .add(new TermQuery(new Term("english", "one")), BooleanClause.Occur.MUST)
+ .add(new TermQuery(new Term("english", "two")), BooleanClause.Occur.MUST)
+ .build()
+ };
+
+ public void testExplanations() throws Exception {
+ for (Query q : testQueries) {
+ testExplanations(q, DoubleValuesSource.fromIntField("int"));
+ testExplanations(q, DoubleValuesSource.fromLongField("long"));
+ testExplanations(q, DoubleValuesSource.fromFloatField("float"));
+ testExplanations(q, DoubleValuesSource.fromDoubleField("double"));
+ testExplanations(q, DoubleValuesSource.fromDoubleField("onefield"));
+ testExplanations(q, DoubleValuesSource.constant(5.45));
+ testExplanations(q, DoubleValuesSource.function(
+ DoubleValuesSource.fromDoubleField("double"), "v * 4 + 73",
+ v -> v * 4 + 73
+ ));
+ testExplanations(q, DoubleValuesSource.scoringFunction(
+ DoubleValuesSource.fromDoubleField("double"), "v * score", (v, s) -> v * s
+ ));
+ }
+ }
+
+ private void testExplanations(Query q, DoubleValuesSource vs) throws IOException {
+ searcher.search(q, new SimpleCollector() {
+
+ DoubleValues v;
+ LeafReaderContext ctx;
+
+ @Override
+ protected void doSetNextReader(LeafReaderContext context) throws IOException {
+ this.ctx = context;
+ }
+
+ @Override
+ public void setScorer(Scorer scorer) throws IOException {
+ this.v = vs.getValues(this.ctx, DoubleValuesSource.fromScorer(scorer));
+ }
+
+ @Override
+ public void collect(int doc) throws IOException {
+ Explanation scoreExpl = searcher.explain(q, ctx.docBase + doc);
+ if (this.v.advanceExact(doc)) {
+ CheckHits.verifyExplanation("", doc, (float) v.doubleValue(), true, vs.explain(ctx, doc, scoreExpl));
+ }
+ else {
+ assertFalse(vs.explain(ctx, doc, scoreExpl).isMatch());
+ }
+ }
+
+ @Override
+ public boolean needsScores() {
+ return vs.needsScores();
+ }
+ });
+ }
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ffdc0b45/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionRescorer.java
----------------------------------------------------------------------
diff --git a/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionRescorer.java b/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionRescorer.java
index e3e7a4e..1b52e4a 100644
--- a/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionRescorer.java
+++ b/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionRescorer.java
@@ -18,8 +18,6 @@ package org.apache.lucene.expressions;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import org.apache.lucene.index.LeafReaderContext;
@@ -79,15 +77,6 @@ class ExpressionRescorer extends SortRescorer {
LeafReaderContext readerContext = leaves.get(subReader);
int docIDInSegment = docID - readerContext.docBase;
- DoubleValues scores = scores(docIDInSegment, firstPassExplanation.getValue());
-
- List<Explanation> subs = new ArrayList<>(Arrays.asList(superExpl.getDetails()));
- for(String variable : expression.variables) {
- DoubleValues dv = bindings.getDoubleValuesSource(variable).getValues(readerContext, scores);
- if (dv.advanceExact(docIDInSegment))
- subs.add(Explanation.match((float) dv.doubleValue(), "variable \"" + variable + "\""));
- }
-
- return Explanation.match(superExpl.getValue(), superExpl.getDescription(), subs);
+ return expression.getDoubleValuesSource(bindings).explain(readerContext, docIDInSegment, superExpl);
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ffdc0b45/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionValueSource.java
----------------------------------------------------------------------
diff --git a/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionValueSource.java b/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionValueSource.java
index 7842de9..0fb8d05 100644
--- a/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionValueSource.java
+++ b/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionValueSource.java
@@ -25,6 +25,7 @@ import java.util.Objects;
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.search.DoubleValues;
import org.apache.lucene.search.DoubleValuesSource;
+import org.apache.lucene.search.Explanation;
/**
* A {@link DoubleValuesSource} which evaluates a {@link Expression} given the context of an {@link Bindings}.
@@ -137,4 +138,18 @@ final class ExpressionValueSource extends DoubleValuesSource {
public boolean needsScores() {
return needsScores;
}
+
+ @Override
+ public Explanation explain(LeafReaderContext ctx, int docId, Explanation scoreExplanation) throws IOException {
+ Explanation[] explanations = new Explanation[variables.length];
+ DoubleValues dv = getValues(ctx, DoubleValuesSource.constant(scoreExplanation.getValue()).getValues(ctx, null));
+ if (dv.advanceExact(docId) == false) {
+ return Explanation.noMatch(expression.sourceText);
+ }
+ int i = 0;
+ for (DoubleValuesSource var : variables) {
+ explanations[i++] = var.explain(ctx, docId, scoreExplanation);
+ }
+ return Explanation.match((float)dv.doubleValue(), expression.sourceText + ", computed from:", explanations);
+ }
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ffdc0b45/lucene/expressions/src/test/org/apache/lucene/expressions/TestDemoExpressions.java
----------------------------------------------------------------------
diff --git a/lucene/expressions/src/test/org/apache/lucene/expressions/TestDemoExpressions.java b/lucene/expressions/src/test/org/apache/lucene/expressions/TestDemoExpressions.java
index d76ef1c..f597626 100644
--- a/lucene/expressions/src/test/org/apache/lucene/expressions/TestDemoExpressions.java
+++ b/lucene/expressions/src/test/org/apache/lucene/expressions/TestDemoExpressions.java
@@ -16,19 +16,15 @@
*/
package org.apache.lucene.expressions;
-import java.io.IOException;
-
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.NumericDocValuesField;
import org.apache.lucene.expressions.js.JavascriptCompiler;
import org.apache.lucene.expressions.js.VariableContext;
import org.apache.lucene.index.DirectoryReader;
-import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.CheckHits;
-import org.apache.lucene.search.DoubleValues;
import org.apache.lucene.search.DoubleValuesSource;
import org.apache.lucene.search.FieldDoc;
import org.apache.lucene.search.IndexSearcher;
@@ -252,30 +248,6 @@ public class TestDemoExpressions extends LuceneTestCase {
assertEquals(2D, (Double)d.fields[0], 1E-4);
}
- private static DoubleValuesSource constant(double value) {
- return new DoubleValuesSource() {
- @Override
- public DoubleValues getValues(LeafReaderContext ctx, DoubleValues scores) throws IOException {
- return new DoubleValues() {
- @Override
- public double doubleValue() throws IOException {
- return value;
- }
-
- @Override
- public boolean advanceExact(int doc) throws IOException {
- return true;
- }
- };
- }
-
- @Override
- public boolean needsScores() {
- return false;
- }
- };
- }
-
public void testDynamicExtendedVariableExample() throws Exception {
Expression popularity = JavascriptCompiler.compile("doc['popularity'].value + magicarray[0] + fourtytwo");
@@ -301,12 +273,12 @@ public class TestDemoExpressions extends LuceneTestCase {
}
} else if (base.equals("magicarray")) {
if (var.length > 1 && var[1].type == INT_INDEX) {
- return constant(2048);
+ return DoubleValuesSource.constant(2048);
} else {
fail();// error case, magic array isn't an array
}
} else if (base.equals("fourtytwo")) {
- return constant(42);
+ return DoubleValuesSource.constant(42);
} else {
fail();// error case (variable doesn't exist)
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ffdc0b45/lucene/expressions/src/test/org/apache/lucene/expressions/TestExpressionRescorer.java
----------------------------------------------------------------------
diff --git a/lucene/expressions/src/test/org/apache/lucene/expressions/TestExpressionRescorer.java b/lucene/expressions/src/test/org/apache/lucene/expressions/TestExpressionRescorer.java
index f60d45b..98012a5 100644
--- a/lucene/expressions/src/test/org/apache/lucene/expressions/TestExpressionRescorer.java
+++ b/lucene/expressions/src/test/org/apache/lucene/expressions/TestExpressionRescorer.java
@@ -111,7 +111,7 @@ public class TestExpressionRescorer extends LuceneTestCase {
// Confirm the explanation breaks out the individual
// variables:
- assertTrue(expl.contains("= variable \"popularity\""));
+ assertTrue(expl.contains("= double(popularity)"));
// Confirm the explanation includes first pass details:
assertTrue(expl.contains("= first pass score"));
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ffdc0b45/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeFacetCounts.java
----------------------------------------------------------------------
diff --git a/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeFacetCounts.java b/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeFacetCounts.java
index 31f9e59..06bd2e5 100644
--- a/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeFacetCounts.java
+++ b/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeFacetCounts.java
@@ -741,6 +741,11 @@ public class TestRangeFacetCounts extends FacetTestCase {
public boolean needsScores() {
return false;
}
+
+ @Override
+ public Explanation explain(LeafReaderContext ctx, int docId, Explanation scoreExplanation) throws IOException {
+ return Explanation.match(docId + 1, "");
+ }
};
FacetsConfig config = new FacetsConfig();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ffdc0b45/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionScoreQuery.java
----------------------------------------------------------------------
diff --git a/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionScoreQuery.java b/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionScoreQuery.java
index 29ef41f..63a98de 100644
--- a/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionScoreQuery.java
+++ b/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionScoreQuery.java
@@ -113,13 +113,12 @@ public final class FunctionScoreQuery extends Query {
Scorer scorer = inner.scorer(context);
if (scorer.iterator().advance(doc) != doc)
return Explanation.noMatch("No match");
- DoubleValues scores = valueSource.getValues(context, DoubleValuesSource.fromScorer(scorer));
- scores.advanceExact(doc);
- Explanation scoreExpl = scoreExplanation(context, doc, scores);
+ Explanation scoreExplanation = inner.explain(context, doc);
+ Explanation expl = valueSource.explain(context, doc, scoreExplanation);
if (boost == 1f)
- return scoreExpl;
- return Explanation.match(scoreExpl.getValue() * boost, "product of:",
- Explanation.match(boost, "boost"), scoreExpl);
+ return expl;
+ return Explanation.match(expl.getValue() * boost, "product of:",
+ Explanation.match(boost, "boost"), expl);
}
private Explanation scoreExplanation(LeafReaderContext context, int doc, DoubleValues scores) throws IOException {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ffdc0b45/lucene/queries/src/java/org/apache/lucene/queries/function/ValueSource.java
----------------------------------------------------------------------
diff --git a/lucene/queries/src/java/org/apache/lucene/queries/function/ValueSource.java b/lucene/queries/src/java/org/apache/lucene/queries/function/ValueSource.java
index 6bf2926..e49c823 100644
--- a/lucene/queries/src/java/org/apache/lucene/queries/function/ValueSource.java
+++ b/lucene/queries/src/java/org/apache/lucene/queries/function/ValueSource.java
@@ -25,6 +25,7 @@ import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.search.DoubleValues;
import org.apache.lucene.search.DoubleValuesSource;
+import org.apache.lucene.search.Explanation;
import org.apache.lucene.search.FieldComparator;
import org.apache.lucene.search.FieldComparatorSource;
import org.apache.lucene.search.IndexSearcher;
@@ -187,6 +188,16 @@ public abstract class ValueSource {
public boolean needsScores() {
return true; // be on the safe side
}
+
+ @Override
+ public Explanation explain(LeafReaderContext ctx, int docId, Explanation scoreExplanation) throws IOException {
+ Map context = new HashMap<>();
+ FakeScorer scorer = new FakeScorer();
+ scorer.score = scoreExplanation.getValue();
+ context.put("scorer", scorer);
+ FunctionValues fv = ValueSource.this.getValues(context, ctx);
+ return fv.explain(docId);
+ }
};
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ffdc0b45/lucene/queries/src/test/org/apache/lucene/queries/function/TestFunctionScoreExplanations.java
----------------------------------------------------------------------
diff --git a/lucene/queries/src/test/org/apache/lucene/queries/function/TestFunctionScoreExplanations.java b/lucene/queries/src/test/org/apache/lucene/queries/function/TestFunctionScoreExplanations.java
index 5c64396..bc8dbc1 100644
--- a/lucene/queries/src/test/org/apache/lucene/queries/function/TestFunctionScoreExplanations.java
+++ b/lucene/queries/src/test/org/apache/lucene/queries/function/TestFunctionScoreExplanations.java
@@ -59,7 +59,7 @@ public class TestFunctionScoreExplanations extends BaseExplanationTestCase {
public void testExplanationsIncludingScore() throws Exception {
- DoubleValuesSource scores = DoubleValuesSource.function(DoubleValuesSource.SCORES, v -> v * 2);
+ DoubleValuesSource scores = DoubleValuesSource.function(DoubleValuesSource.SCORES, "v * 2", v -> v * 2);
Query q = new TermQuery(new Term(FIELD, "w1"));
FunctionScoreQuery csq = new FunctionScoreQuery(q, scores);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ffdc0b45/lucene/queries/src/test/org/apache/lucene/queries/function/TestFunctionScoreQuery.java
----------------------------------------------------------------------
diff --git a/lucene/queries/src/test/org/apache/lucene/queries/function/TestFunctionScoreQuery.java b/lucene/queries/src/test/org/apache/lucene/queries/function/TestFunctionScoreQuery.java
index 8f6ef8e..de5ad88 100644
--- a/lucene/queries/src/test/org/apache/lucene/queries/function/TestFunctionScoreQuery.java
+++ b/lucene/queries/src/test/org/apache/lucene/queries/function/TestFunctionScoreQuery.java
@@ -70,7 +70,7 @@ public class TestFunctionScoreQuery extends FunctionTestSetup {
public void testScoreModifyingSource() throws Exception {
DoubleValuesSource iii = DoubleValuesSource.fromIntField("iii");
- DoubleValuesSource score = DoubleValuesSource.scoringFunction(iii, (v, s) -> v * s);
+ DoubleValuesSource score = DoubleValuesSource.scoringFunction(iii, "v * s", (v, s) -> v * s);
BooleanQuery bq = new BooleanQuery.Builder()
.add(new TermQuery(new Term(TEXT_FIELD, "first")), BooleanClause.Occur.SHOULD)
@@ -96,7 +96,7 @@ public class TestFunctionScoreQuery extends FunctionTestSetup {
public void testBoostsAreAppliedLast() throws Exception {
DoubleValuesSource scores
- = DoubleValuesSource.function(DoubleValuesSource.SCORES, v -> Math.log(v + 4));
+ = DoubleValuesSource.function(DoubleValuesSource.SCORES, "ln(v + 4)", v -> Math.log(v + 4));
Query q1 = new FunctionScoreQuery(new TermQuery(new Term(TEXT_FIELD, "text")), scores);
TopDocs plain = searcher.search(q1, 5);