|
|
@@ -23,6 +23,7 @@ import org.apache.lucene.store.Directory;
|
|
|
import org.elasticsearch.Version;
|
|
|
import org.elasticsearch.common.lucene.search.Queries;
|
|
|
import org.elasticsearch.common.lucene.search.function.ScriptScoreQuery;
|
|
|
+import org.elasticsearch.script.DocReader;
|
|
|
import org.elasticsearch.script.ScoreScript;
|
|
|
import org.elasticsearch.script.Script;
|
|
|
import org.elasticsearch.search.lookup.LeafSearchLookup;
|
|
|
@@ -48,6 +49,7 @@ public class ScriptScoreQueryTests extends ESTestCase {
|
|
|
private DirectoryReader reader;
|
|
|
private IndexSearcher searcher;
|
|
|
private LeafReaderContext leafReaderContext;
|
|
|
+ private final SearchLookup lookup = new SearchLookup(null, null);
|
|
|
|
|
|
@Before
|
|
|
public void initSearcher() throws IOException {
|
|
|
@@ -79,7 +81,7 @@ public class ScriptScoreQueryTests extends ESTestCase {
|
|
|
});
|
|
|
|
|
|
ScriptScoreQuery query = new ScriptScoreQuery(Queries.newMatchAllQuery(), script, factory,
|
|
|
- null, "index", 0, Version.CURRENT);
|
|
|
+ lookup, null, "index", 0, Version.CURRENT);
|
|
|
Weight weight = query.createWeight(searcher, ScoreMode.COMPLETE, 1.0f);
|
|
|
Explanation explanation = weight.explain(leafReaderContext, 0);
|
|
|
assertNotNull(explanation);
|
|
|
@@ -92,7 +94,7 @@ public class ScriptScoreQueryTests extends ESTestCase {
|
|
|
ScoreScript.LeafFactory factory = newFactory(script, true, explanation -> 1.5);
|
|
|
|
|
|
ScriptScoreQuery query = new ScriptScoreQuery(Queries.newMatchAllQuery(), script, factory,
|
|
|
- null, "index", 0, Version.CURRENT);
|
|
|
+ lookup, null, "index", 0, Version.CURRENT);
|
|
|
Weight weight = query.createWeight(searcher, ScoreMode.COMPLETE, 1.0f);
|
|
|
Explanation explanation = weight.explain(leafReaderContext, 0);
|
|
|
assertNotNull(explanation);
|
|
|
@@ -109,7 +111,7 @@ public class ScriptScoreQueryTests extends ESTestCase {
|
|
|
ScoreScript.LeafFactory factory = newFactory(script, false, explanation -> 2.0);
|
|
|
|
|
|
ScriptScoreQuery query = new ScriptScoreQuery(Queries.newMatchAllQuery(), script, factory,
|
|
|
- null, "index", 0, Version.CURRENT);
|
|
|
+ lookup, null, "index", 0, Version.CURRENT);
|
|
|
Weight weight = query.createWeight(searcher, ScoreMode.COMPLETE, 1.0f);
|
|
|
Explanation explanation = weight.explain(leafReaderContext, 0);
|
|
|
assertNotNull(explanation);
|
|
|
@@ -123,7 +125,8 @@ public class ScriptScoreQueryTests extends ESTestCase {
|
|
|
public void testScriptScoreErrorOnNegativeScore() {
|
|
|
Script script = new Script("script that returns a negative score");
|
|
|
ScoreScript.LeafFactory factory = newFactory(script, false, explanation -> -1000.0);
|
|
|
- ScriptScoreQuery query = new ScriptScoreQuery(Queries.newMatchAllQuery(), script, factory, null, "index", 0, Version.CURRENT);
|
|
|
+ ScriptScoreQuery query = new ScriptScoreQuery(Queries.newMatchAllQuery(), script, factory, lookup, null, "index", 0,
|
|
|
+ Version.CURRENT);
|
|
|
IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> searcher.search(query, 1));
|
|
|
assertTrue(e.getMessage().contains("Must be a non-negative score!"));
|
|
|
}
|
|
|
@@ -140,8 +143,8 @@ public class ScriptScoreQueryTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public ScoreScript newInstance(LeafReaderContext ctx) throws IOException {
|
|
|
- return new ScoreScript(script.getParams(), lookup, leafReaderContext) {
|
|
|
+ public ScoreScript newInstance(DocReader docReader) throws IOException {
|
|
|
+ return new ScoreScript(script.getParams(), lookup, docReader) {
|
|
|
@Override
|
|
|
public double execute(ExplanationHolder explanation) {
|
|
|
return function.apply(explanation);
|