Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

We’re showing branches in this repository, but you can also compare across forks.

base fork: elasticsearch/elasticsearch
...
head fork: elasticsearch/elasticsearch
  • 3 commits
  • 4 files changed
  • 0 commit comments
  • 2 contributors
12 src/main/java/org/elasticsearch/index/query/CustomScoreQueryParser.java
View
@@ -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;
}
33 src/main/java/org/elasticsearch/script/ExplainableSearchScript.java
View
@@ -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();
+
+}
2  src/main/java/org/elasticsearch/script/SearchScript.java
View
@@ -26,6 +26,8 @@
/**
* A search script.
+ *
+ * @see ExplainableSearchScript for script which can explain a score
*/
public interface SearchScript extends ExecutableScript {
2  src/test/java/org/elasticsearch/test/stress/rollingrestart/QuickRollingRestartStressTest.java
View
@@ -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.