From 34f0a6abe74ce754c7f33723da03d8b85f6d1987 Mon Sep 17 00:00:00 2001 From: Grant Ingersoll Date: Thu, 2 Sep 2010 21:59:19 +0000 Subject: [PATCH] SOLR-1665: add distributed support git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@992128 13f79535-47bb-0310-9956-ffa450edef68 --- .../handler/component/DebugComponent.java | 45 ++++++++++------ .../handler/component/HighlightComponent.java | 20 +------ .../handler/component/ResponseBuilder.java | 8 +++ .../org/apache/solr/util/SolrPluginUtils.java | 16 ++++++ .../DistributedDebugComponentTest.java | 52 +++++++++++++++++++ 5 files changed, 107 insertions(+), 34 deletions(-) create mode 100644 solr/src/test/org/apache/solr/handler/component/DistributedDebugComponentTest.java diff --git a/solr/src/java/org/apache/solr/handler/component/DebugComponent.java b/solr/src/java/org/apache/solr/handler/component/DebugComponent.java index 8ed4e2089a9..ed864cefc58 100644 --- a/solr/src/java/org/apache/solr/handler/component/DebugComponent.java +++ b/solr/src/java/org/apache/solr/handler/component/DebugComponent.java @@ -91,8 +91,16 @@ public class DebugComponent extends SearchComponent // Turn on debug to get explain only when retrieving fields if ((sreq.purpose & ShardRequest.PURPOSE_GET_FIELDS) != 0) { - sreq.purpose |= ShardRequest.PURPOSE_GET_DEBUG; + sreq.purpose |= ShardRequest.PURPOSE_GET_DEBUG; + if (rb.isDebugAll()) { sreq.params.set(CommonParams.DEBUG_QUERY, "true"); + } else if (rb.isDebugQuery()){ + sreq.params.set(CommonParams.DEBUG, CommonParams.QUERY); + } else if (rb.isDebugTimings()){ + sreq.params.set(CommonParams.DEBUG, CommonParams.TIMING); + } else if (rb.isDebugResults()){ + sreq.params.set(CommonParams.DEBUG, CommonParams.RESULTS); + } } else { sreq.params.set(CommonParams.DEBUG_QUERY, "false"); } @@ -118,30 +126,35 @@ public class DebugComponent extends SearchComponent NamedList sdebug = (NamedList)srsp.getSolrResponse().getResponse().get("debug"); info = (NamedList)merge(sdebug, info, excludeSet); - NamedList sexplain = (NamedList)sdebug.get("explain"); - - for (int i=0; i( id, sexplain.getVal(i)); + if (rb.isDebugResults()) { + NamedList sexplain = (NamedList)sdebug.get("explain"); + for (int i = 0; i < sexplain.size(); i++) { + String id = sexplain.getName(i); + // TODO: lookup won't work for non-string ids... String vs Float + ShardDoc sdoc = rb.resultIds.get(id); + int idx = sdoc.positionInResponse; + arr[idx] = new NamedList.NamedListEntry(id, sexplain.getVal(i)); + } } } } - explain = HighlightComponent.removeNulls(new SimpleOrderedMap(arr)); + if (rb.isDebugResults()) { + explain = SolrPluginUtils.removeNulls(new SimpleOrderedMap(arr)); + } if (info == null) { info = new SimpleOrderedMap(); } - int idx = info.indexOf("explain",0); - if (idx>=0) { - info.setVal(idx, explain); - } else { - info.add("explain", explain); + if (rb.isDebugResults()) { + int idx = info.indexOf("explain",0); + if (idx>=0) { + info.setVal(idx, explain); + } else { + info.add("explain", explain); + } } - + rb.setDebugInfo(info); rb.rsp.add("debug", rb.getDebugInfo() ); } diff --git a/solr/src/java/org/apache/solr/handler/component/HighlightComponent.java b/solr/src/java/org/apache/solr/handler/component/HighlightComponent.java index d6168aa5823..2a050b5fa21 100644 --- a/solr/src/java/org/apache/solr/handler/component/HighlightComponent.java +++ b/solr/src/java/org/apache/solr/handler/component/HighlightComponent.java @@ -27,6 +27,7 @@ import org.apache.solr.common.util.SimpleOrderedMap; import org.apache.solr.highlight.SolrHighlighter; import org.apache.solr.highlight.DefaultSolrHighlighter; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.util.SolrPluginUtils; import org.apache.solr.util.plugin.PluginInfoInitialized; import org.apache.solr.util.plugin.SolrCoreAware; import org.apache.solr.core.PluginInfo; @@ -36,7 +37,6 @@ import java.io.IOException; import java.net.URL; import java.util.Map; import java.util.List; -import java.util.Collections; /** * TODO! @@ -165,27 +165,11 @@ public class HighlightComponent extends SearchComponent implements PluginInfoIni } // remove nulls in case not all docs were able to be retrieved - rb.rsp.add("highlighting", removeNulls(new SimpleOrderedMap(arr))); + rb.rsp.add("highlighting", SolrPluginUtils.removeNulls(new SimpleOrderedMap(arr))); } } - static NamedList removeNulls(NamedList nl) { - for (int i=0; i