Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base fork: elastic/elasticsearch
...
head fork: elastic/elasticsearch
  • 3 commits
  • 4 files changed
  • 0 commit comments
  • 2 contributors
View
12 src/main/java/org/elasticsearch/index/query/CustomScoreQueryParser.java
@@ -27,6 +27,7 @@
import org.elasticsearch.common.lucene.search.function.FunctionScoreQuery;
import org.elasticsearch.common.lucene.search.function.ScoreFunction;
import org.elasticsearch.common.xcontent.XContentParser;
+import org.elasticsearch.script.ExplainableSearchScript;
import org.elasticsearch.script.SearchScript;
import java.io.IOException;
@@ -131,8 +132,15 @@ public float factor(int docId) {
@Override
public Explanation explainScore(int docId, Explanation subQueryExpl) {
- float score = score(docId, subQueryExpl.getValue());
- Explanation exp = new Explanation(score, "script score function: product of:");
+ Explanation exp;
+ if (script instanceof ExplainableSearchScript) {
+ script.setNextDocId(docId);
+ script.setNextScore(subQueryExpl.getValue());
+ exp = ((ExplainableSearchScript) script).explain();
+ } else {
+ float score = score(docId, subQueryExpl.getValue());
+ exp = new Explanation(score, "script score function: product of:");
+ }
exp.addDetail(subQueryExpl);
return exp;
}
View
33 src/main/java/org/elasticsearch/script/ExplainableSearchScript.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to Elastic Search under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. Elastic Search licenses this
+ * file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.elasticsearch.script;
+
+import org.apache.lucene.search.Explanation;
+
+/**
+ * To be implemented by {@link SearchScript} which can provided an {@link Explanation} of the score
+ */
+public interface ExplainableSearchScript extends SearchScript {
+
+ /**
+ * Build the explanation of the current document being scored
+ */
+ Explanation explain();
+
+}
View
2  src/main/java/org/elasticsearch/script/SearchScript.java
@@ -26,6 +26,8 @@
/**
* A search script.
+ *
+ * @see ExplainableSearchScript for script which can explain a score
*/
public interface SearchScript extends ExecutableScript {
View
2  ...test/java/org/elasticsearch/test/stress/rollingrestart/QuickRollingRestartStressTest.java
@@ -87,7 +87,7 @@ public static void main(String[] args) throws Exception {
System.out.println("--> done rolling restart [" + rollingRestart + "]");
System.out.println("--> waiting for green state now...");
- ClusterHealthResponse clusterHealthResponse = client.client().admin().cluster().prepareHealth().setWaitForGreenStatus().setTimeout("10m").execute().actionGet();
+ ClusterHealthResponse clusterHealthResponse = client.client().admin().cluster().prepareHealth().setWaitForGreenStatus().setWaitForRelocatingShards(0).setTimeout("10m").execute().actionGet();
if (clusterHealthResponse.timedOut()) {
System.err.println("--> timed out waiting for green state...");
ClusterState state = client.client().admin().cluster().prepareState().execute().actionGet().state();

No commit comments for this range

Something went wrong with that request. Please try again.