summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Ernst <ryan@iernst.net>2017-06-14 22:01:19 -0700
committerGitHub <noreply@github.com>2017-06-14 22:01:19 -0700
commitcaf7792db1404ba3bf7e01b799f8ce0d2eaedc3b (patch)
treed1de495e3c61d6a3e6d1114b08d4763a6f7afc33
parenta4471f51e49a5d797548054d80eaf60a0e450283 (diff)
Scripting: Rename SearchScript.needsScores to needs_score (#25235)
This commit renames the needsScores method so as to make it automatically generatable, based on the name of the `_score` variable which is available in search scripts. It also adds documentation to ScriptContext to explain the naming and signature of such methods.
-rw-r--r--core/src/main/java/org/elasticsearch/common/lucene/search/function/ScriptScoreFunction.java2
-rw-r--r--core/src/main/java/org/elasticsearch/script/ScriptContext.java7
-rw-r--r--core/src/main/java/org/elasticsearch/script/SearchScript.java7
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSource.java8
-rw-r--r--core/src/test/java/org/elasticsearch/common/lucene/search/function/ScriptScoreFunctionTests.java2
-rw-r--r--core/src/test/java/org/elasticsearch/search/functionscore/ExplainableScriptIT.java2
-rw-r--r--modules/lang-expression/src/main/java/org/elasticsearch/script/expression/ExpressionSearchScript.java2
-rw-r--r--modules/lang-expression/src/test/java/org/elasticsearch/script/expression/ExpressionTests.java8
-rw-r--r--modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessScriptEngine.java2
-rw-r--r--modules/lang-painless/src/test/java/org/elasticsearch/painless/NeedsScoreTests.java8
-rw-r--r--plugins/examples/script-expert-scoring/src/main/java/org/elasticsearch/example/expertscript/ExpertScriptPlugin.java2
-rw-r--r--test/framework/src/main/java/org/elasticsearch/script/MockScriptEngine.java2
12 files changed, 29 insertions, 23 deletions
diff --git a/core/src/main/java/org/elasticsearch/common/lucene/search/function/ScriptScoreFunction.java b/core/src/main/java/org/elasticsearch/common/lucene/search/function/ScriptScoreFunction.java
index 112bf271c4..1113ab9cd9 100644
--- a/core/src/main/java/org/elasticsearch/common/lucene/search/function/ScriptScoreFunction.java
+++ b/core/src/main/java/org/elasticsearch/common/lucene/search/function/ScriptScoreFunction.java
@@ -119,7 +119,7 @@ public class ScriptScoreFunction extends ScoreFunction {
@Override
public boolean needsScores() {
- return script.needsScores();
+ return script.needs_score();
}
@Override
diff --git a/core/src/main/java/org/elasticsearch/script/ScriptContext.java b/core/src/main/java/org/elasticsearch/script/ScriptContext.java
index 3f931f659e..081a26d1e5 100644
--- a/core/src/main/java/org/elasticsearch/script/ScriptContext.java
+++ b/core/src/main/java/org/elasticsearch/script/ScriptContext.java
@@ -46,6 +46,13 @@ import java.lang.reflect.Method;
* The <i>StatefulFactoryType</i> is an optional class which allows a stateful factory from the
* stateless factory type required by the {@link ScriptService}. If defined, the <i>StatefulFactoryType</i>
* must have a method named {@code newInstance} which returns an instance of <i>InstanceType</i>.
+ * <p>
+ * Both the <i>FactoryType</i> and <i>StatefulFactoryType</i> may have abstract methods to indicate
+ * whether a variable is used in a script. These method should return a {@code boolean} and their name
+ * should start with {@code needs}, followed by the variable name, with the first letter uppercased.
+ * For example, to check if a variable {@code doc} is used, a method {@code boolean needsDoc()} should be added.
+ * If the variable name starts with an underscore, for example, {@code _score}, the needs method would
+ * be {@code boolean needs_score()}.
*/
public final class ScriptContext<FactoryType> {
diff --git a/core/src/main/java/org/elasticsearch/script/SearchScript.java b/core/src/main/java/org/elasticsearch/script/SearchScript.java
index 4c50147b22..d0c932a349 100644
--- a/core/src/main/java/org/elasticsearch/script/SearchScript.java
+++ b/core/src/main/java/org/elasticsearch/script/SearchScript.java
@@ -144,12 +144,11 @@ public abstract class SearchScript implements ScorerAware, ExecutableScript {
/** A factory to construct {@link SearchScript} instances. */
public interface LeafFactory {
SearchScript newInstance(LeafReaderContext ctx) throws IOException;
+
/**
- * Indicates if document scores may be needed by this {@link SearchScript}.
- *
- * @return {@code true} if scores are needed.
+ * Return {@code true} if the script needs {@code _score} calculated, or {@code false} otherwise.
*/
- boolean needsScores();
+ boolean needs_score();
}
/** A factory to construct stateful {@link SearchScript} factories for a specific index. */
diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSource.java b/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSource.java
index 5fca34beff..5a69be8108 100644
--- a/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSource.java
+++ b/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSource.java
@@ -174,7 +174,7 @@ public abstract class ValuesSource {
@Override
public boolean needsScores() {
- return script.needsScores();
+ return script.needs_score();
}
}
@@ -246,7 +246,7 @@ public abstract class ValuesSource {
@Override
public boolean needsScores() {
- return script.needsScores();
+ return script.needs_score();
}
@Override
@@ -387,7 +387,7 @@ public abstract class ValuesSource {
@Override
public boolean needsScores() {
- return script.needsScores();
+ return script.needs_score();
}
}
@@ -406,7 +406,7 @@ public abstract class ValuesSource {
@Override
public boolean needsScores() {
- return script.needsScores();
+ return script.needs_score();
}
@Override
diff --git a/core/src/test/java/org/elasticsearch/common/lucene/search/function/ScriptScoreFunctionTests.java b/core/src/test/java/org/elasticsearch/common/lucene/search/function/ScriptScoreFunctionTests.java
index 369129826e..bd15805fa6 100644
--- a/core/src/test/java/org/elasticsearch/common/lucene/search/function/ScriptScoreFunctionTests.java
+++ b/core/src/test/java/org/elasticsearch/common/lucene/search/function/ScriptScoreFunctionTests.java
@@ -44,7 +44,7 @@ public class ScriptScoreFunctionTests extends ESTestCase {
}
@Override
- public boolean needsScores() {
+ public boolean needs_score() {
return false;
}
});
diff --git a/core/src/test/java/org/elasticsearch/search/functionscore/ExplainableScriptIT.java b/core/src/test/java/org/elasticsearch/search/functionscore/ExplainableScriptIT.java
index cfed4c014b..2bf691e6a3 100644
--- a/core/src/test/java/org/elasticsearch/search/functionscore/ExplainableScriptIT.java
+++ b/core/src/test/java/org/elasticsearch/search/functionscore/ExplainableScriptIT.java
@@ -83,7 +83,7 @@ public class ExplainableScriptIT extends ESIntegTestCase {
return new MyScript(lookup.doc().getLeafDocLookup(context));
}
@Override
- public boolean needsScores() {
+ public boolean needs_score() {
return false;
}
};
diff --git a/modules/lang-expression/src/main/java/org/elasticsearch/script/expression/ExpressionSearchScript.java b/modules/lang-expression/src/main/java/org/elasticsearch/script/expression/ExpressionSearchScript.java
index b40a13ef9f..cb19a60462 100644
--- a/modules/lang-expression/src/main/java/org/elasticsearch/script/expression/ExpressionSearchScript.java
+++ b/modules/lang-expression/src/main/java/org/elasticsearch/script/expression/ExpressionSearchScript.java
@@ -54,7 +54,7 @@ class ExpressionSearchScript implements SearchScript.LeafFactory {
}
@Override
- public boolean needsScores() {
+ public boolean needs_score() {
return needsScores;
}
diff --git a/modules/lang-expression/src/test/java/org/elasticsearch/script/expression/ExpressionTests.java b/modules/lang-expression/src/test/java/org/elasticsearch/script/expression/ExpressionTests.java
index 72c5495987..81f76de6c3 100644
--- a/modules/lang-expression/src/test/java/org/elasticsearch/script/expression/ExpressionTests.java
+++ b/modules/lang-expression/src/test/java/org/elasticsearch/script/expression/ExpressionTests.java
@@ -47,10 +47,10 @@ public class ExpressionTests extends ESSingleNodeTestCase {
}
public void testNeedsScores() {
- assertFalse(compile("1.2").needsScores());
- assertFalse(compile("doc['d'].value").needsScores());
- assertTrue(compile("1/_score").needsScores());
- assertTrue(compile("doc['d'].value * _score").needsScores());
+ assertFalse(compile("1.2").needs_score());
+ assertFalse(compile("doc['d'].value").needs_score());
+ assertTrue(compile("1/_score").needs_score());
+ assertTrue(compile("doc['d'].value * _score").needs_score());
}
public void testCompileError() {
diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessScriptEngine.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessScriptEngine.java
index 2ba95a753d..e7b6415e3e 100644
--- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessScriptEngine.java
+++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessScriptEngine.java
@@ -134,7 +134,7 @@ public final class PainlessScriptEngine extends AbstractComponent implements Scr
return new ScriptImpl(painlessScript, p, lookup, context);
}
@Override
- public boolean needsScores() {
+ public boolean needs_score() {
return painlessScript.needs_score();
}
};
diff --git a/modules/lang-painless/src/test/java/org/elasticsearch/painless/NeedsScoreTests.java b/modules/lang-painless/src/test/java/org/elasticsearch/painless/NeedsScoreTests.java
index 021cb31186..cae7a0e429 100644
--- a/modules/lang-painless/src/test/java/org/elasticsearch/painless/NeedsScoreTests.java
+++ b/modules/lang-painless/src/test/java/org/elasticsearch/painless/NeedsScoreTests.java
@@ -44,19 +44,19 @@ public class NeedsScoreTests extends ESSingleNodeTestCase {
SearchScript.Factory factory = service.compile(null, "1.2", SearchScript.CONTEXT, Collections.emptyMap());
SearchScript.LeafFactory ss = factory.newFactory(Collections.emptyMap(), lookup);
- assertFalse(ss.needsScores());
+ assertFalse(ss.needs_score());
factory = service.compile(null, "doc['d'].value", SearchScript.CONTEXT, Collections.emptyMap());
ss = factory.newFactory(Collections.emptyMap(), lookup);
- assertFalse(ss.needsScores());
+ assertFalse(ss.needs_score());
factory = service.compile(null, "1/_score", SearchScript.CONTEXT, Collections.emptyMap());
ss = factory.newFactory(Collections.emptyMap(), lookup);
- assertTrue(ss.needsScores());
+ assertTrue(ss.needs_score());
factory = service.compile(null, "doc['d'].value * _score", SearchScript.CONTEXT, Collections.emptyMap());
ss = factory.newFactory(Collections.emptyMap(), lookup);
- assertTrue(ss.needsScores());
+ assertTrue(ss.needs_score());
}
}
diff --git a/plugins/examples/script-expert-scoring/src/main/java/org/elasticsearch/example/expertscript/ExpertScriptPlugin.java b/plugins/examples/script-expert-scoring/src/main/java/org/elasticsearch/example/expertscript/ExpertScriptPlugin.java
index 4b6713c6a6..5a146f7591 100644
--- a/plugins/examples/script-expert-scoring/src/main/java/org/elasticsearch/example/expertscript/ExpertScriptPlugin.java
+++ b/plugins/examples/script-expert-scoring/src/main/java/org/elasticsearch/example/expertscript/ExpertScriptPlugin.java
@@ -115,7 +115,7 @@ public class ExpertScriptPlugin extends Plugin implements ScriptPlugin {
}
@Override
- public boolean needsScores() {
+ public boolean needs_score() {
return false;
}
};
diff --git a/test/framework/src/main/java/org/elasticsearch/script/MockScriptEngine.java b/test/framework/src/main/java/org/elasticsearch/script/MockScriptEngine.java
index 2ca6f2aa0c..407b20ef77 100644
--- a/test/framework/src/main/java/org/elasticsearch/script/MockScriptEngine.java
+++ b/test/framework/src/main/java/org/elasticsearch/script/MockScriptEngine.java
@@ -219,7 +219,7 @@ public class MockScriptEngine implements ScriptEngine {
}
@Override
- public boolean needsScores() {
+ public boolean needs_score() {
return true;
}
}