You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ro...@apache.org on 2013/01/18 19:31:23 UTC
svn commit: r1435287 [29/41] - in /lucene/dev/branches/LUCENE-2878: ./
dev-tools/ dev-tools/eclipse/ dev-tools/idea/.idea/libraries/
dev-tools/idea/lucene/analysis/icu/ dev-tools/maven/
dev-tools/maven/lucene/benchmark/ dev-tools/maven/solr/ dev-tools/...
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java Fri Jan 18 18:30:54 2013
@@ -17,7 +17,6 @@
package org.apache.solr.handler.component;
-import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.util.OpenBitSet;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrException.ErrorCode;
@@ -32,6 +31,7 @@ import org.apache.solr.common.util.StrUt
import org.apache.solr.request.SimpleFacets;
import org.apache.solr.schema.FieldType;
import org.apache.solr.search.QueryParsing;
+import org.apache.solr.search.SyntaxError;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -670,7 +670,7 @@ public class FacetComponent extends Sear
this.facetStr = facetStr;
try {
this.localParams = QueryParsing.getLocalParams(facetStr, rb.req.getParams());
- } catch (ParseException e) {
+ } catch (SyntaxError e) {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
}
this.facetOn = facetStr;
@@ -818,6 +818,7 @@ public class FacetComponent extends Sear
public ShardFacetCount[] getLexSorted() {
ShardFacetCount[] arr = counts.values().toArray(new ShardFacetCount[counts.size()]);
Arrays.sort(arr, new Comparator<ShardFacetCount>() {
+ @Override
public int compare(ShardFacetCount o1, ShardFacetCount o2) {
return o1.indexed.compareTo(o2.indexed);
}
@@ -829,6 +830,7 @@ public class FacetComponent extends Sear
public ShardFacetCount[] getCountSorted() {
ShardFacetCount[] arr = counts.values().toArray(new ShardFacetCount[counts.size()]);
Arrays.sort(arr, new Comparator<ShardFacetCount>() {
+ @Override
public int compare(ShardFacetCount o1, ShardFacetCount o2) {
if (o2.count < o1.count) return -1;
else if (o1.count < o2.count) return 1;
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java Fri Jan 18 18:30:54 2013
@@ -17,7 +17,6 @@
package org.apache.solr.handler.component;
-import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.search.Query;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.params.CommonParams;
@@ -25,10 +24,12 @@ import org.apache.solr.common.params.Hig
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
+import org.apache.solr.highlight.PostingsSolrHighlighter;
import org.apache.solr.highlight.SolrHighlighter;
import org.apache.solr.highlight.DefaultSolrHighlighter;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.search.QParser;
+import org.apache.solr.search.SyntaxError;
import org.apache.solr.util.SolrPluginUtils;
import org.apache.solr.util.plugin.PluginInfoInitialized;
import org.apache.solr.util.plugin.SolrCoreAware;
@@ -57,6 +58,7 @@ public class HighlightComponent extends
return hl==null ? null: hl.getHighlighter();
}
+ @Override
public void init(PluginInfo info) {
this.info = info;
}
@@ -71,13 +73,14 @@ public class HighlightComponent extends
try {
QParser parser = QParser.getParser(hlq, null, rb.req);
rb.setHighlightQuery(parser.getHighlightQuery());
- } catch (ParseException e) {
+ } catch (SyntaxError e) {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
}
}
}
}
+ @Override
public void inform(SolrCore core) {
List<PluginInfo> children = info.getChildren("highlighting");
if(children.isEmpty()) {
@@ -126,7 +129,7 @@ public class HighlightComponent extends
}
if(highlightQuery != null) {
- boolean rewrite = !(Boolean.valueOf(params.get(HighlightParams.USE_PHRASE_HIGHLIGHTER, "true")) &&
+ boolean rewrite = (highlighter instanceof PostingsSolrHighlighter == false) && !(Boolean.valueOf(params.get(HighlightParams.USE_PHRASE_HIGHLIGHTER, "true")) &&
Boolean.valueOf(params.get(HighlightParams.HIGHLIGHT_MULTI_TERM, "true")));
highlightQuery = rewrite ? highlightQuery.rewrite(req.getSearcher().getIndexReader()) : highlightQuery;
}
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java Fri Jan 18 18:30:54 2013
@@ -17,6 +17,7 @@ package org.apache.solr.handler.componen
*/
import java.net.ConnectException;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@ -40,8 +41,8 @@ import org.apache.solr.client.solrj.util
import org.apache.solr.cloud.CloudDescriptor;
import org.apache.solr.cloud.ZkController;
import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrException.ErrorCode;
import org.apache.solr.common.cloud.ClusterState;
+import org.apache.solr.common.cloud.DocCollection;
import org.apache.solr.common.cloud.Replica;
import org.apache.solr.common.cloud.Slice;
import org.apache.solr.common.cloud.ZkCoreNodeProps;
@@ -126,11 +127,13 @@ public class HttpShardHandler extends Sh
}
+ @Override
public void submit(final ShardRequest sreq, final String shard, final ModifiableSolrParams params) {
// do this outside of the callable for thread safety reasons
final List<String> urls = getURLs(shard);
Callable<ShardResponse> task = new Callable<ShardResponse>() {
+ @Override
public ShardResponse call() throws Exception {
ShardResponse srsp = new ShardResponse();
@@ -193,6 +196,7 @@ public class HttpShardHandler extends Sh
/** returns a ShardResponse of the last response correlated with a ShardRequest. This won't
* return early if it runs into an error.
**/
+ @Override
public ShardResponse takeCompletedIncludingErrors() {
return take(false);
}
@@ -201,6 +205,7 @@ public class HttpShardHandler extends Sh
/** returns a ShardResponse of the last response correlated with a ShardRequest,
* or immediately returns a ShardResponse if there was an error detected
*/
+ @Override
public ShardResponse takeCompletedOrError() {
return take(true);
}
@@ -233,6 +238,7 @@ public class HttpShardHandler extends Sh
}
+ @Override
public void cancelAll() {
for (Future<ShardResponse> future : pending) {
// TODO: any issues with interrupting? shouldn't be if
@@ -240,6 +246,8 @@ public class HttpShardHandler extends Sh
future.cancel(true);
}
}
+
+ @Override
public void checkDistributed(ResponseBuilder rb) {
SolrQueryRequest req = rb.req;
SolrParams params = req.getParams();
@@ -279,14 +287,17 @@ public class HttpShardHandler extends Sh
}
}
} else if (zkController != null) {
- // we weren't provided with a list of slices to query, so find the list that will cover the complete index
+ // we weren't provided with an explicit list of slices to query via "shards", so use the cluster state
clusterState = zkController.getClusterState();
+ String shardKeys = params.get(ShardParams.SHARD_KEYS);
- // This can be more efficient... we only record the name, even though we
- // have the shard info we need in the next step of mapping slice->shards
-
- // Stores the comma-separated list of specified collections.
+ // This will be the complete list of slices we need to query for this request.
+ slices = new HashMap<String,Slice>();
+
+ // we need to find out what collections this request is for.
+
+ // A comma-separated list of specified collections.
// Eg: "collection1,collection2,collection3"
String collections = params.get("collection");
if (collections != null) {
@@ -294,50 +305,60 @@ public class HttpShardHandler extends Sh
// each parameter and store as a seperate member of a List.
List<String> collectionList = StrUtils.splitSmart(collections, ",",
true);
-
- // First create an empty HashMap to add the slice info to.
- slices = new HashMap<String,Slice>();
-
// In turn, retrieve the slices that cover each collection from the
// cloud state and add them to the Map 'slices'.
- for (int i = 0; i < collectionList.size(); i++) {
- String collection = collectionList.get(i);
- ClientUtils.appendMap(collection, slices, clusterState.getSlices(collection));
+ for (String collectionName : collectionList) {
+ // The original code produced <collection-name>_<shard-name> when the collections
+ // parameter was specified (see ClientUtils.appendMap)
+ // Is this necessary if ony one collection is specified?
+ // i.e. should we change multiCollection to collectionList.size() > 1?
+ addSlices(slices, clusterState, params, collectionName, shardKeys, true);
}
} else {
- // If no collections were specified, default to the collection for
- // this core.
- slices = clusterState.getSlices(cloudDescriptor.getCollectionName());
- if (slices == null) {
- throw new SolrException(ErrorCode.BAD_REQUEST,
- "Could not find collection:"
- + cloudDescriptor.getCollectionName());
- }
+ // just this collection
+ String collectionName = cloudDescriptor.getCollectionName();
+ addSlices(slices, clusterState, params, collectionName, shardKeys, false);
}
+
// Store the logical slices in the ResponseBuilder and create a new
// String array to hold the physical shards (which will be mapped
// later).
rb.slices = slices.keySet().toArray(new String[slices.size()]);
rb.shards = new String[rb.slices.length];
-
- /***
- rb.slices = new String[slices.size()];
- for (int i=0; i<rb.slices.length; i++) {
- rb.slices[i] = slices.get(i).getName();
- }
- ***/
}
//
// Map slices to shards
//
if (zkController != null) {
+
+ // Are we hosting the shard that this request is for, and are we active? If so, then handle it ourselves
+ // and make it a non-distributed request.
+ String ourSlice = cloudDescriptor.getShardId();
+ String ourCollection = cloudDescriptor.getCollectionName();
+ if (rb.slices.length == 1
+ && ( rb.slices[0].equals(ourSlice) || rb.slices[0].equals(ourCollection + "_" + ourSlice) ) // handle the <collection>_<slice> format
+ && ZkStateReader.ACTIVE.equals(cloudDescriptor.getLastPublished()) )
+ {
+ boolean shortCircuit = params.getBool("shortCircuit", true); // currently just a debugging parameter to check distrib search on a single node
+
+ String targetHandler = params.get(ShardParams.SHARDS_QT);
+ shortCircuit = shortCircuit && targetHandler == null; // if a different handler is specified, don't short-circuit
+
+ if (shortCircuit) {
+ rb.isDistrib = false;
+ return;
+ }
+ // We shouldn't need to do anything to handle "shard.rows" since it was previously meant to be an optimization?
+ }
+
+
for (int i=0; i<rb.shards.length; i++) {
if (rb.shards[i] == null) {
if (clusterState == null) {
clusterState = zkController.getClusterState();
- slices = clusterState.getSlices(cloudDescriptor.getCollectionName());
+ slices = clusterState.getSlicesMap(cloudDescriptor.getCollectionName());
}
String sliceName = rb.slices[i];
@@ -388,5 +409,13 @@ public class HttpShardHandler extends Sh
}
}
-}
+ private void addSlices(Map<String,Slice> target, ClusterState state, SolrParams params, String collectionName, String shardKeys, boolean multiCollection) {
+ DocCollection coll = state.getCollection(collectionName);
+ Collection<Slice> slices = coll.getRouter().getSearchSlices(shardKeys, params , coll);
+ ClientUtils.addSlices(target, collectionName, slices, multiCollection);
+ }
+
+
+
+}
\ No newline at end of file
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java Fri Jan 18 18:30:54 2013
@@ -87,6 +87,7 @@ public class HttpShardHandlerFactory ext
/**
* Get {@link ShardHandler} that uses the default http client.
*/
+ @Override
public ShardHandler getShardHandler() {
return getShardHandler(defaultClient);
}
@@ -98,6 +99,7 @@ public class HttpShardHandlerFactory ext
return new HttpShardHandler(this, httpClient);
}
+ @Override
public void init(PluginInfo info) {
NamedList args = info.initArgs;
this.soTimeout = getParameter(args, HttpClientUtil.PROP_SO_TIMEOUT, soTimeout);
@@ -154,19 +156,25 @@ public class HttpShardHandlerFactory ext
@Override
public void close() {
try {
- defaultClient.getConnectionManager().shutdown();
+ ExecutorUtil.shutdownNowAndAwaitTermination(commExecutor);
} catch (Throwable e) {
SolrException.log(log, e);
}
+
try {
- loadbalancer.shutdown();
+ if(defaultClient != null) {
+ defaultClient.getConnectionManager().shutdown();
+ }
} catch (Throwable e) {
SolrException.log(log, e);
}
try {
- ExecutorUtil.shutdownNowAndAwaitTermination(commExecutor);
+ if(loadbalancer != null) {
+ loadbalancer.shutdown();
+ }
} catch (Throwable e) {
SolrException.log(log, e);
}
+
}
}
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/MoreLikeThisComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/MoreLikeThisComponent.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/MoreLikeThisComponent.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/MoreLikeThisComponent.java Fri Jan 18 18:30:54 2013
@@ -19,8 +19,24 @@ package org.apache.solr.handler.componen
import java.io.IOException;
import java.net.URL;
-
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.TreeMap;
+
+import org.apache.lucene.search.BooleanQuery;
+import org.apache.solr.common.SolrDocument;
+import org.apache.solr.common.SolrDocumentList;
+import org.apache.solr.common.params.CommonParams;
+import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.params.MoreLikeThisParams;
+import org.apache.solr.common.params.ShardParams;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
@@ -30,97 +46,358 @@ import org.apache.solr.search.DocIterato
import org.apache.solr.search.DocList;
import org.apache.solr.search.DocListAndSet;
import org.apache.solr.search.SolrIndexSearcher;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* TODO!
*
- *
+ *
* @since solr 1.3
*/
-public class MoreLikeThisComponent extends SearchComponent
-{
+public class MoreLikeThisComponent extends SearchComponent {
public static final String COMPONENT_NAME = "mlt";
+ public static final String DIST_DOC_ID = "mlt.dist.id";
+ static final Logger log = LoggerFactory
+ .getLogger(MoreLikeThisComponent.class);
@Override
- public void prepare(ResponseBuilder rb) throws IOException
- {
+ public void prepare(ResponseBuilder rb) throws IOException {
}
-
+
@Override
- public void process(ResponseBuilder rb) throws IOException
- {
- SolrParams p = rb.req.getParams();
- if( p.getBool( MoreLikeThisParams.MLT, false ) ) {
+ public void process(ResponseBuilder rb) throws IOException {
+
+ SolrParams params = rb.req.getParams();
+ if (params.getBool(MoreLikeThisParams.MLT, false)) {
+ log.debug("Starting MoreLikeThis.Process. isShard: "
+ + params.getBool(ShardParams.IS_SHARD));
SolrIndexSearcher searcher = rb.req.getSearcher();
+
+ int mltcount = params.getInt(MoreLikeThisParams.DOC_COUNT, 5);
+ if (params.getBool(ShardParams.IS_SHARD, false)) {
+ if (params.get(MoreLikeThisComponent.DIST_DOC_ID) == null) {
+ if (rb.getResults().docList.size() == 0) {
+ // return empty response
+ rb.rsp.add("moreLikeThis", new NamedList<DocList>());
+ return;
+ }
+
+ MoreLikeThisHandler.MoreLikeThisHelper mlt = new MoreLikeThisHandler.MoreLikeThisHelper(
+ params, searcher);
+
+ NamedList<BooleanQuery> bQuery = mlt.getMoreLikeTheseQuery(rb
+ .getResults().docList);
+
+ NamedList<String> temp = new NamedList<String>();
+ Iterator<Entry<String,BooleanQuery>> idToQueryIt = bQuery.iterator();
+
+
+ while (idToQueryIt.hasNext()) {
+ Entry<String,BooleanQuery> idToQuery = idToQueryIt.next();
+ String s = idToQuery.getValue().toString();
+
+ log.debug("MLT Query:" + s);
+ temp.add(idToQuery.getKey(), idToQuery.getValue().toString());
+ }
+
+ rb.rsp.add("moreLikeThis", temp);
+ } else {
+ NamedList<DocList> sim = getMoreLikeThese(rb, rb.req.getSearcher(),
+ rb.getResults().docList, mltcount);
+ rb.rsp.add("moreLikeThis", sim);
+ }
+ } else {
+ // non distrib case
+ NamedList<DocList> sim = getMoreLikeThese(rb, rb.req.getSearcher(), rb.getResults().docList,
+ mltcount);
+ rb.rsp.add("moreLikeThis", sim);
+ }
+ }
+ }
+
+ @Override
+ public void handleResponses(ResponseBuilder rb, ShardRequest sreq) {
+ if ((sreq.purpose & ShardRequest.PURPOSE_GET_TOP_IDS) != 0
+ && rb.req.getParams().getBool(COMPONENT_NAME, false)) {
+ log.debug("ShardRequest.response.size: " + sreq.responses.size());
+ for (ShardResponse r : sreq.responses) {
+ NamedList<?> moreLikeThisReponse = (NamedList<?>) r.getSolrResponse()
+ .getResponse().get("moreLikeThis");
+ log.debug("ShardRequest.response.shard: " + r.getShard());
+ if (moreLikeThisReponse != null) {
+ for (Entry<String,?> entry : moreLikeThisReponse) {
+ log.debug("id: \"" + entry.getKey() + "\" Query: \""
+ + entry.getValue() + "\"");
+ ShardRequest s = buildShardQuery(rb, (String) entry.getValue(),
+ entry.getKey());
+ rb.addRequest(this, s);
+ }
+ }
+ }
+ }
+
+ if ((sreq.purpose & ShardRequest.PURPOSE_GET_MLT_RESULTS) != 0) {
+ for (ShardResponse r : sreq.responses) {
+ log.debug("MLT Query returned: "
+ + r.getSolrResponse().getResponse().toString());
+ }
+ }
+ }
+
+ @Override
+ public void finishStage(ResponseBuilder rb) {
+
+ // Handling Responses in finishStage, because solrResponse will put
+ // moreLikeThis xml
+ // segment ahead of result/response.
+ if (rb.stage == ResponseBuilder.STAGE_GET_FIELDS
+ && rb.req.getParams().getBool(COMPONENT_NAME, false)) {
+ Map<Object,SolrDocumentList> tempResults = new LinkedHashMap<Object,SolrDocumentList>();
+
+ int mltcount = rb.req.getParams().getInt(MoreLikeThisParams.DOC_COUNT, 5);
+ String keyName = rb.req.getSchema().getUniqueKeyField().getName();
- NamedList<DocList> sim = getMoreLikeThese( rb, searcher,
- rb.getResults().docList, rb.getFieldFlags() );
+ for (ShardRequest sreq : rb.finished) {
+ if ((sreq.purpose & ShardRequest.PURPOSE_GET_MLT_RESULTS) != 0) {
+ for (ShardResponse r : sreq.responses) {
+ log.debug("ShardRequest.response.shard: " + r.getShard());
+ String key = r.getShardRequest().params
+ .get(MoreLikeThisComponent.DIST_DOC_ID);
+ SolrDocumentList shardDocList = (SolrDocumentList) r.getSolrResponse().getResponse().get("response");
+
+ if (shardDocList == null) {
+ continue;
+ }
+
+ log.info("MLT: results added for key: " + key + " documents: "
+ + shardDocList.toString());
+// if (log.isDebugEnabled()) {
+// for (SolrDocument doc : shardDocList) {
+// doc.addField("shard", "=" + r.getShard());
+// }
+// }
+ SolrDocumentList mergedDocList = tempResults.get(key);
+
+ if (mergedDocList == null) {
+ mergedDocList = new SolrDocumentList();
+ mergedDocList.addAll(shardDocList);
+ mergedDocList.setNumFound(shardDocList.getNumFound());
+ mergedDocList.setStart(shardDocList.getStart());
+ mergedDocList.setMaxScore(shardDocList.getMaxScore());
+ } else {
+ mergedDocList = mergeSolrDocumentList(mergedDocList,
+ shardDocList, mltcount, keyName);
+ }
+ log.debug("Adding docs for key: " + key);
+ tempResults.put(key, mergedDocList);
+ }
+ }
+ }
- // TODO ???? add this directly to the response?
- rb.rsp.add( "moreLikeThis", sim );
+ NamedList<SolrDocumentList> list = buildMoreLikeThisNamed(tempResults,
+ rb.resultIds);
+
+ rb.rsp.add("moreLikeThis", list);
+
+ }
+ super.finishStage(rb);
+ }
+
+ /**
+ * Returns NamedList based on the order of
+ * resultIds.shardDoc.positionInResponse
+ */
+ NamedList<SolrDocumentList> buildMoreLikeThisNamed(
+ Map<Object,SolrDocumentList> allMlt, Map<Object,ShardDoc> resultIds) {
+ NamedList<SolrDocumentList> result = new NamedList<SolrDocumentList>();
+ TreeMap<Integer,Object> sortingMap = new TreeMap<Integer,Object>();
+ for (Entry<Object,ShardDoc> next : resultIds.entrySet()) {
+ sortingMap.put(next.getValue().positionInResponse, next.getKey());
+ }
+ for (Object key : sortingMap.values()) {
+ SolrDocumentList sdl = allMlt.get(key);
+ if (sdl == null) {
+ sdl = new SolrDocumentList();
+ sdl.setNumFound(0);
+ sdl.setStart(0);
+ }
+ result.add(key.toString(), sdl);
+ }
+ return result;
+ }
+
+ public SolrDocumentList mergeSolrDocumentList(SolrDocumentList one,
+ SolrDocumentList two, int maxSize, String idField) {
+
+ List<SolrDocument> l = new ArrayList<SolrDocument>();
+
+ // De-dup records sets. Shouldn't happen if indexed correctly.
+ Map<String,SolrDocument> map = new HashMap<String,SolrDocument>();
+ for (SolrDocument doc : one) {
+ Object id = doc.getFieldValue(idField);
+ assert id != null : doc.toString();
+ map.put(id.toString(), doc);
+ }
+ for (SolrDocument doc : two) {
+ map.put(doc.getFieldValue(idField).toString(), doc);
}
+
+ l = new ArrayList<SolrDocument>(map.values());
+
+ // Comparator to sort docs based on score. null scores/docs are set to 0.
+
+ // hmm...we are ordering by scores that are not really comparable...
+ Comparator<SolrDocument> c = new Comparator<SolrDocument>() {
+ public int compare(SolrDocument o1, SolrDocument o2) {
+ Float f1 = getFloat(o1);
+ Float f2 = getFloat(o2);
+ return f2.compareTo(f1);
+ }
+
+ private Float getFloat(SolrDocument doc) {
+ Float f = 0f;
+ if (doc != null) {
+ Object o = doc.getFieldValue("score");
+ if (o != null && o instanceof Float) {
+ f = (Float) o;
+ }
+ }
+ return f;
+ }
+ };
+
+ Collections.sort(l, c);
+
+ // Truncate list to maxSize
+ if (l.size() > maxSize) {
+ l = l.subList(0, maxSize);
+ }
+
+ // Create SolrDocumentList Attributes from originals
+ SolrDocumentList result = new SolrDocumentList();
+ result.addAll(l);
+ result.setMaxScore(Math.max(one.getMaxScore(), two.getMaxScore()));
+ result.setNumFound(one.getNumFound() + two.getNumFound());
+ result.setStart(Math.min(one.getStart(), two.getStart()));
+
+ return result;
+ }
+
+ ShardRequest buildShardQuery(ResponseBuilder rb, String q, String key) {
+ ShardRequest s = new ShardRequest();
+ s.params = new ModifiableSolrParams(rb.req.getParams());
+ s.purpose |= ShardRequest.PURPOSE_GET_MLT_RESULTS;
+ // Maybe unnecessary, but safe.
+ s.purpose |= ShardRequest.PURPOSE_PRIVATE;
+
+ s.params.remove(ShardParams.SHARDS);
+ // s.params.remove(MoreLikeThisComponent.COMPONENT_NAME);
+
+ // needed to correlate results
+ s.params.set(MoreLikeThisComponent.DIST_DOC_ID, key);
+ s.params.set(CommonParams.START, 0);
+ int mltcount = s.params.getInt(MoreLikeThisParams.DOC_COUNT, 20); // overrequest
+ s.params.set(CommonParams.ROWS, mltcount);
+
+ // adding score to rank moreLikeThis
+ s.params.remove(CommonParams.FL);
+
+ // Should probably add something like this:
+ // String fl = s.params.get(MoreLikeThisParams.RETURN_FL, "*");
+ // if(fl != null){
+ // s.params.set(CommonParams.FL, fl + ",score");
+ // }
+ String id = rb.req.getSchema().getUniqueKeyField()
+ .getName();
+ s.params.set(CommonParams.FL, "score," + id);
+ s.params.set("sort", "score desc");
+ // MLT Query is submitted as normal query to shards.
+ s.params.set(CommonParams.Q, q);
+
+ return s;
}
+
+ ShardRequest buildMLTQuery(ResponseBuilder rb, String q) {
+ ShardRequest s = new ShardRequest();
+ s.params = new ModifiableSolrParams();
+
+
+ s.params.set(CommonParams.START, 0);
- NamedList<DocList> getMoreLikeThese( ResponseBuilder rb, SolrIndexSearcher searcher,
- DocList docs, int flags ) throws IOException {
+ String id = rb.req.getSchema().getUniqueKeyField().getName();
+
+ s.params.set(CommonParams.FL, "score," + id);
+ // MLT Query is submitted as normal query to shards.
+ s.params.set(CommonParams.Q, q);
+
+ s.shards = ShardRequest.ALL_SHARDS;
+ return s;
+ }
+
+ NamedList<DocList> getMoreLikeThese(ResponseBuilder rb,
+ SolrIndexSearcher searcher, DocList docs, int flags) throws IOException {
SolrParams p = rb.req.getParams();
IndexSchema schema = searcher.getSchema();
- MoreLikeThisHandler.MoreLikeThisHelper mltHelper
- = new MoreLikeThisHandler.MoreLikeThisHelper( p, searcher );
+ MoreLikeThisHandler.MoreLikeThisHelper mltHelper = new MoreLikeThisHandler.MoreLikeThisHelper(
+ p, searcher);
NamedList<DocList> mlt = new SimpleOrderedMap<DocList>();
DocIterator iterator = docs.iterator();
-
+
SimpleOrderedMap<Object> dbg = null;
- if( rb.isDebug() ){
+ if (rb.isDebug()) {
dbg = new SimpleOrderedMap<Object>();
}
-
- while( iterator.hasNext() ) {
+
+ while (iterator.hasNext()) {
int id = iterator.nextDoc();
- int rows = p.getInt( MoreLikeThisParams.DOC_COUNT, 5 );
- DocListAndSet sim = mltHelper.getMoreLikeThis( id, 0, rows, null, null, flags );
- String name = schema.printableUniqueKey( searcher.doc( id ) );
+ int rows = p.getInt(MoreLikeThisParams.DOC_COUNT, 5);
+ DocListAndSet sim = mltHelper.getMoreLikeThis(id, 0, rows, null, null,
+ flags);
+ String name = schema.printableUniqueKey(searcher.doc(id));
mlt.add(name, sim.docList);
- if( dbg != null ){
+ if (dbg != null) {
SimpleOrderedMap<Object> docDbg = new SimpleOrderedMap<Object>();
- docDbg.add( "rawMLTQuery", mltHelper.getRawMLTQuery().toString() );
- docDbg.add( "boostedMLTQuery", mltHelper.getBoostedMLTQuery().toString() );
- docDbg.add( "realMLTQuery", mltHelper.getRealMLTQuery().toString() );
+ docDbg.add("rawMLTQuery", mltHelper.getRawMLTQuery().toString());
+ docDbg
+ .add("boostedMLTQuery", mltHelper.getBoostedMLTQuery().toString());
+ docDbg.add("realMLTQuery", mltHelper.getRealMLTQuery().toString());
SimpleOrderedMap<Object> explains = new SimpleOrderedMap<Object>();
DocIterator mltIte = sim.docList.iterator();
- while( mltIte.hasNext() ){
+ while (mltIte.hasNext()) {
int mltid = mltIte.nextDoc();
- String key = schema.printableUniqueKey( searcher.doc( mltid ) );
- explains.add( key, searcher.explain( mltHelper.getRealMLTQuery(), mltid ) );
+ String key = schema.printableUniqueKey(searcher.doc(mltid));
+ explains.add(key,
+ searcher.explain(mltHelper.getRealMLTQuery(), mltid));
}
- docDbg.add( "explain", explains );
- dbg.add( name, docDbg );
+ docDbg.add("explain", explains);
+ dbg.add(name, docDbg);
}
}
-
+
// add debug information
- if( dbg != null ){
- rb.addDebugInfo( "moreLikeThis", dbg );
+ if (dbg != null) {
+ rb.addDebugInfo("moreLikeThis", dbg);
}
return mlt;
}
- /////////////////////////////////////////////
- /// SolrInfoMBean
- ////////////////////////////////////////////
-
+ // ///////////////////////////////////////////
+ // / SolrInfoMBean
+ // //////////////////////////////////////////
+
@Override
public String getDescription() {
return "More Like This";
}
-
+
@Override
public String getSource() {
return "$URL$";
}
-
+
@Override
public URL[] getDocs() {
return null;
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/PivotFacetHelper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/PivotFacetHelper.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/PivotFacetHelper.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/PivotFacetHelper.java Fri Jan 18 18:30:54 2013
@@ -17,7 +17,6 @@
package org.apache.solr.handler.component;
-import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.util.BytesRef;
import org.apache.solr.schema.SchemaField;
import org.apache.solr.search.SolrIndexSearcher;
@@ -35,6 +34,7 @@ import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TermRangeQuery;
import org.apache.lucene.index.Term;
+import org.apache.solr.search.SyntaxError;
import java.io.IOException;
import java.util.ArrayList;
@@ -65,7 +65,7 @@ public class PivotFacetHelper extends Si
//ex: pivot == "features,cat" or even "{!ex=mytag}features,cat"
try {
this.parseParams(FacetParams.FACET_PIVOT, pivot);
- } catch (ParseException e) {
+ } catch (SyntaxError e) {
throw new SolrException(ErrorCode.BAD_REQUEST, e);
}
pivot = facetValue;//facetValue potentially modified from parseParams()
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java Fri Jan 18 18:30:54 2013
@@ -23,7 +23,6 @@ import org.apache.lucene.index.AtomicRea
import org.apache.lucene.index.IndexReaderContext;
import org.apache.lucene.index.ReaderUtil;
import org.apache.lucene.index.Term;
-import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.search.*;
import org.apache.lucene.search.grouping.GroupDocs;
import org.apache.lucene.search.grouping.SearchGroup;
@@ -94,7 +93,7 @@ public class QueryComponent extends Sear
SolrQueryResponse rsp = rb.rsp;
// Set field flags
- ReturnFields returnFields = new ReturnFields( req );
+ ReturnFields returnFields = new SolrReturnFields( req );
rsp.setReturnFields( returnFields );
int flags = 0;
if (returnFields.wantsScore()) {
@@ -144,7 +143,7 @@ public class QueryComponent extends Sear
rb.setFilters( filters );
}
}
- } catch (ParseException e) {
+ } catch (SyntaxError e) {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
}
@@ -402,7 +401,7 @@ public class QueryComponent extends Sear
rsp.getToLog().add("hits", grouping.getCommands().get(0).getMatches());
}
return;
- } catch (ParseException e) {
+ } catch (SyntaxError e) {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
}
}
@@ -659,6 +658,7 @@ public class QueryComponent extends Sear
EndResultTransformer.SolrDocumentSource solrDocumentSource = new EndResultTransformer.SolrDocumentSource() {
+ @Override
public SolrDocument retrieve(ScoreDoc doc) {
ShardDoc solrDoc = (ShardDoc) doc;
return rb.retrievedDocuments.get(solrDoc.id);
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java Fri Jan 18 18:30:54 2013
@@ -137,6 +137,7 @@ public class QueryElevationComponent ext
this.initArgs = SolrParams.toSolrParams(args);
}
+ @Override
public void inform(SolrCore core) {
String a = initArgs.get(FIELD_TYPE);
if (a != null) {
@@ -540,7 +541,7 @@ public class QueryElevationComponent ext
for (String id : elevations.ids) {
term.copyChars(id);
if (seen.contains(id) == false && termsEnum.seekExact(term, false)) {
- docsEnum = termsEnum.docs(liveDocs, docsEnum, 0);
+ docsEnum = termsEnum.docs(liveDocs, docsEnum, DocsEnum.FLAG_NONE);
if (docsEnum != null) {
int docId = docsEnum.nextDoc();
if (docId == DocIdSetIterator.NO_MORE_DOCS ) continue; // must have been deleted
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java Fri Jan 18 18:30:54 2013
@@ -38,6 +38,8 @@ import org.apache.solr.common.SolrDocume
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.cloud.ClusterState;
+import org.apache.solr.common.cloud.DocCollection;
+import org.apache.solr.common.cloud.Slice;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.params.ShardParams;
import org.apache.solr.common.params.SolrParams;
@@ -54,6 +56,7 @@ import org.apache.solr.schema.IndexSchem
import org.apache.solr.schema.SchemaField;
import org.apache.solr.search.ReturnFields;
import org.apache.solr.search.SolrIndexSearcher;
+import org.apache.solr.search.SolrReturnFields;
import org.apache.solr.update.DocumentBuilder;
import org.apache.solr.update.PeerSync;
import org.apache.solr.update.UpdateLog;
@@ -70,7 +73,7 @@ public class RealTimeGetComponent extend
@Override
public void prepare(ResponseBuilder rb) throws IOException {
// Set field flags
- ReturnFields returnFields = new ReturnFields( rb.req );
+ ReturnFields returnFields = new SolrReturnFields( rb.req );
rb.rsp.setReturnFields( returnFields );
}
@@ -356,23 +359,23 @@ public class RealTimeGetComponent extend
CloudDescriptor cloudDescriptor = rb.req.getCore().getCoreDescriptor().getCloudDescriptor();
String collection = cloudDescriptor.getCollectionName();
-
ClusterState clusterState = zkController.getClusterState();
-
- Map<String, List<String>> shardToId = new HashMap<String, List<String>>();
+ DocCollection coll = clusterState.getCollection(collection);
+
+
+ Map<String, List<String>> sliceToId = new HashMap<String, List<String>>();
for (String id : allIds) {
- int hash = Hash.murmurhash3_x86_32(id, 0, id.length(), 0);
- String shard = clusterState.getShard(hash, collection);
+ Slice slice = coll.getRouter().getTargetSlice(id, null, params, coll);
- List<String> idsForShard = shardToId.get(shard);
+ List<String> idsForShard = sliceToId.get(slice.getName());
if (idsForShard == null) {
idsForShard = new ArrayList<String>(2);
- shardToId.put(shard, idsForShard);
+ sliceToId.put(slice.getName(), idsForShard);
}
idsForShard.add(id);
}
- for (Map.Entry<String,List<String>> entry : shardToId.entrySet()) {
+ for (Map.Entry<String,List<String>> entry : sliceToId.entrySet()) {
String shard = entry.getKey();
String shardIdList = StrUtils.join(entry.getValue(), ',');
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/SearchComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/SearchComponent.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/SearchComponent.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/SearchComponent.java Fri Jan 18 18:30:54 2013
@@ -21,7 +21,6 @@ import java.io.IOException;
import java.net.URL;
import org.apache.solr.common.util.NamedList;
-import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.core.SolrInfoMBean;
import org.apache.solr.util.plugin.NamedListInitializedPlugin;
@@ -34,6 +33,10 @@ import org.apache.solr.util.plugin.Named
public abstract class SearchComponent implements SolrInfoMBean, NamedListInitializedPlugin
{
/**
+ * The name given to this component in solrconfig.xml file
+ */
+ private String name = this.getClass().getName();
+ /**
* Prepare the response. Guaranteed to be called before any SearchComponent {@link #process(org.apache.solr.handler.component.ResponseBuilder)} method.
* Called for every incoming request.
*
@@ -71,9 +74,18 @@ public abstract class SearchComponent im
*/
public void finishStage(ResponseBuilder rb) {
}
+
+ /**
+ * Sets the name of the SearchComponent. The name of the component is usually
+ * the name defined for it in the configuration.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
//////////////////////// NamedListInitializedPlugin methods //////////////////////
+ @Override
public void init( NamedList args )
{
// By default do nothing
@@ -81,25 +93,32 @@ public abstract class SearchComponent im
//////////////////////// SolrInfoMBeans methods //////////////////////
+ @Override
public String getName() {
- return this.getClass().getName();
+ return name;
}
+ @Override
public abstract String getDescription();
+ @Override
public abstract String getSource();
+ @Override
public String getVersion() {
return getClass().getPackage().getSpecificationVersion();
}
+ @Override
public Category getCategory() {
return Category.OTHER;
}
+ @Override
public URL[] getDocs() {
return null; // this can be overridden, but not required
}
+ @Override
public NamedList getStatistics() {
return null;
}
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java Fri Jan 18 18:30:54 2013
@@ -72,6 +72,7 @@ public class SearchHandler extends Reque
return names;
}
+ @Override
public void init(PluginInfo info) {
init(info.initArgs);
for (PluginInfo child : info.children) {
@@ -87,6 +88,7 @@ public class SearchHandler extends Reque
* then the {@link DebugComponent} will always occur last. If this is not desired, then one must explicitly declare all components using
* the <code>INIT_COMPONENTS</code> syntax.
*/
+ @Override
@SuppressWarnings("unchecked")
public void inform(SolrCore core)
{
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/ShardDoc.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/ShardDoc.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/ShardDoc.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/ShardDoc.java Fri Jan 18 18:30:54 2013
@@ -218,6 +218,7 @@ class ShardFieldSortedHitQueue extends P
return lst.get(shardDoc.orderInShard);
}
+ @Override
public int compare(Object o1, Object o2) {
return 0;
}
@@ -225,6 +226,7 @@ class ShardFieldSortedHitQueue extends P
static Comparator comparatorScore(final String fieldName) {
return new Comparator() {
+ @Override
public final int compare(final Object o1, final Object o2) {
ShardDoc e1 = (ShardDoc) o1;
ShardDoc e2 = (ShardDoc) o2;
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/ShardRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/ShardRequest.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/ShardRequest.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/ShardRequest.java Fri Jan 18 18:30:54 2013
@@ -38,6 +38,7 @@ public class ShardRequest {
public final static int PURPOSE_GET_STATS =0x200;
public final static int PURPOSE_GET_TERMS =0x400;
public final static int PURPOSE_GET_TOP_GROUPS =0x800;
+ public final static int PURPOSE_GET_MLT_RESULTS =0x1000;
public int purpose; // the purpose of this request
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/SpellCheckComponent.java Fri Jan 18 18:30:54 2013
@@ -578,6 +578,7 @@ public class SpellCheckComponent extends
return result;
}
+ @Override
public void inform(SolrCore core) {
if (initParams != null) {
LOG.info("Initializing spell checkers");
@@ -660,9 +661,11 @@ public class SpellCheckComponent extends
this.buildOnOptimize = buildOnOptimize;
}
+ @Override
public void init(NamedList args) {
}
+ @Override
public void newSearcher(SolrIndexSearcher newSearcher,
SolrIndexSearcher currentSearcher) {
if (currentSearcher == null) {
@@ -699,6 +702,7 @@ public class SpellCheckComponent extends
}
}
+ @Override
public void postCommit() {
}
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/StatsValuesFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/StatsValuesFactory.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/StatsValuesFactory.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/StatsValuesFactory.java Fri Jan 18 18:30:54 2013
@@ -89,6 +89,7 @@ abstract class AbstractStatsValues<T> im
/**
* {@inheritDoc}
*/
+ @Override
public void accumulate(NamedList stv) {
count += (Long) stv.get("count");
missing += (Long) stv.get("missing");
@@ -124,6 +125,7 @@ abstract class AbstractStatsValues<T> im
/**
* {@inheritDoc}
*/
+ @Override
public void accumulate(BytesRef value) {
count++;
T typedValue = (T)ft.toObject(sf, value);
@@ -134,6 +136,7 @@ abstract class AbstractStatsValues<T> im
/**
* {@inheritDoc}
*/
+ @Override
public void accumulate(BytesRef value, int count) {
this.count += count;
T typedValue = (T)ft.toObject(sf, value);
@@ -144,6 +147,7 @@ abstract class AbstractStatsValues<T> im
/**
* {@inheritDoc}
*/
+ @Override
public void missing() {
missing++;
}
@@ -151,6 +155,7 @@ abstract class AbstractStatsValues<T> im
/**
* {@inheritDoc}
*/
+ @Override
public void addMissing(int count) {
missing += count;
}
@@ -158,6 +163,7 @@ abstract class AbstractStatsValues<T> im
/**
* {@inheritDoc}
*/
+ @Override
public void addFacet(String facetName, Map<String, StatsValues> facetValues) {
facets.put(facetName, facetValues);
}
@@ -165,6 +171,7 @@ abstract class AbstractStatsValues<T> im
/**
* {@inheritDoc}
*/
+ @Override
public NamedList<?> getStatsValues() {
NamedList<Object> res = new SimpleOrderedMap<Object>();
@@ -242,6 +249,7 @@ class NumericStatsValues extends Abstrac
/**
* {@inheritDoc}
*/
+ @Override
public void updateTypeSpecificStats(NamedList stv) {
sum += ((Number)stv.get("sum")).doubleValue();
sumOfSquares += ((Number)stv.get("sumOfSquares")).doubleValue();
@@ -250,6 +258,7 @@ class NumericStatsValues extends Abstrac
/**
* {@inheritDoc}
*/
+ @Override
public void updateTypeSpecificStats(Number v) {
double value = v.doubleValue();
sumOfSquares += (value * value); // for std deviation
@@ -259,6 +268,7 @@ class NumericStatsValues extends Abstrac
/**
* {@inheritDoc}
*/
+ @Override
public void updateTypeSpecificStats(Number v, int count) {
double value = v.doubleValue();
sumOfSquares += (value * value * count); // for std deviation
@@ -268,6 +278,7 @@ class NumericStatsValues extends Abstrac
/**
* {@inheritDoc}
*/
+ @Override
protected void updateMinMax(Number min, Number max) {
this.min = Math.min(this.min.doubleValue(), min.doubleValue());
this.max = Math.max(this.max.doubleValue(), max.doubleValue());
@@ -278,6 +289,7 @@ class NumericStatsValues extends Abstrac
*
* @param res NamedList to add the type specific statistics too
*/
+ @Override
protected void addTypeSpecificStats(NamedList<Object> res) {
res.add("sum", sum);
res.add("sumOfSquares", sumOfSquares);
@@ -314,6 +326,7 @@ class DateStatsValues extends AbstractSt
/**
* {@inheritDoc}
*/
+ @Override
protected void updateTypeSpecificStats(NamedList stv) {
sum += ((Date) stv.get("sum")).getTime();
sumOfSquares += ((Number)stv.get("sumOfSquares")).doubleValue();
@@ -342,6 +355,7 @@ class DateStatsValues extends AbstractSt
/**
* {@inheritDoc}
*/
+ @Override
protected void updateMinMax(Date min, Date max) {
if(this.min==null || this.min.after(min)) {
this.min = min;
@@ -356,6 +370,7 @@ class DateStatsValues extends AbstractSt
*
* @param res NamedList to add the type specific statistics too
*/
+ @Override
protected void addTypeSpecificStats(NamedList<Object> res) {
if(sum<=0) {
return; // date==0 is meaningless
@@ -395,6 +410,7 @@ class StringStatsValues extends Abstract
/**
* {@inheritDoc}
*/
+ @Override
protected void updateTypeSpecificStats(NamedList stv) {
// No type specific stats
}
@@ -402,6 +418,7 @@ class StringStatsValues extends Abstract
/**
* {@inheritDoc}
*/
+ @Override
protected void updateTypeSpecificStats(String value) {
// No type specific stats
}
@@ -409,6 +426,7 @@ class StringStatsValues extends Abstract
/**
* {@inheritDoc}
*/
+ @Override
protected void updateTypeSpecificStats(String value, int count) {
// No type specific stats
}
@@ -416,6 +434,7 @@ class StringStatsValues extends Abstract
/**
* {@inheritDoc}
*/
+ @Override
protected void updateMinMax(String min, String max) {
this.max = max(this.max, max);
this.min = min(this.min, min);
@@ -424,6 +443,7 @@ class StringStatsValues extends Abstract
/**
* Adds no type specific statistics
*/
+ @Override
protected void addTypeSpecificStats(NamedList<Object> res) {
// Add no statistics
}
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/TermVectorComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/TermVectorComponent.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/TermVectorComponent.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/TermVectorComponent.java Fri Jan 18 18:30:54 2013
@@ -36,6 +36,7 @@ import org.apache.solr.search.ReturnFiel
import org.apache.solr.search.DocList;
import org.apache.solr.search.DocListAndSet;
import org.apache.solr.search.SolrIndexSearcher;
+import org.apache.solr.search.SolrReturnFields;
import org.apache.solr.util.SolrPluginUtils;
import org.apache.solr.util.plugin.SolrCoreAware;
@@ -111,7 +112,7 @@ public class TermVectorComponent extends
(1 == fldLst.length && 0 == fldLst[0].length())) {
// no tv.fl, parse the main fl
- ReturnFields rf = new ReturnFields
+ ReturnFields rf = new SolrReturnFields
(params.getParams(CommonParams.FL), rb.req);
if (rf.wantsAllFields()) {
@@ -462,6 +463,7 @@ public class TermVectorComponent extends
this.initParams = args;
}
+ @Override
public void inform(SolrCore core) {
}
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java Fri Jan 18 18:30:54 2013
@@ -441,6 +441,7 @@ public class TermsComponent extends Sear
TermsResponse.Term[] arr = data.values().toArray(new TermsResponse.Term[data.size()]);
Arrays.sort(arr, new Comparator<TermsResponse.Term>() {
+ @Override
public int compare(TermsResponse.Term o1, TermsResponse.Term o2) {
return o1.getTerm().compareTo(o2.getTerm());
}
@@ -454,6 +455,7 @@ public class TermsComponent extends Sear
TermsResponse.Term[] arr = data.values().toArray(new TermsResponse.Term[data.size()]);
Arrays.sort(arr, new Comparator<TermsResponse.Term>() {
+ @Override
public int compare(TermsResponse.Term o1, TermsResponse.Term o2) {
long freq1 = o1.getFrequency();
long freq2 = o2.getFrequency();
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/loader/JsonLoader.java Fri Jan 18 18:30:54 2013
@@ -49,6 +49,7 @@ import org.slf4j.LoggerFactory;
public class JsonLoader extends ContentStreamLoader {
final static Logger log = LoggerFactory.getLogger( JsonLoader.class );
+ @Override
public String getDefaultWT() {
return "json";
}
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java Fri Jan 18 18:30:54 2013
@@ -59,7 +59,9 @@ import javax.xml.parsers.SAXParserFactor
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
@@ -110,6 +112,7 @@ public class XMLLoader extends ContentSt
return this;
}
+ @Override
public String getDefaultWT() {
return "xml";
}
@@ -378,8 +381,9 @@ public class XMLLoader extends ContentSt
float boost = 1.0f;
boolean isNull = false;
String update = null;
-
- while (true) {
+ Map<String, Map<String, Object>> updateMap = null;
+ boolean complete = false;
+ while (!complete) {
int event = parser.next();
switch (event) {
// Add everything to the text
@@ -391,13 +395,33 @@ public class XMLLoader extends ContentSt
case XMLStreamConstants.END_ELEMENT:
if ("doc".equals(parser.getLocalName())) {
- return doc;
+ complete = true;
+ break;
} else if ("field".equals(parser.getLocalName())) {
Object v = isNull ? null : text.toString();
if (update != null) {
- Map<String,Object> extendedValue = new HashMap<String,Object>(1);
- extendedValue.put(update, v);
- v = extendedValue;
+ if (updateMap == null) updateMap = new HashMap<String, Map<String, Object>>();
+ Map<String, Object> extendedValues = updateMap.get(name);
+ if (extendedValues == null) {
+ extendedValues = new HashMap<String, Object>(1);
+ updateMap.put(name, extendedValues);
+ }
+ Object val = extendedValues.get(update);
+ if (val == null) {
+ extendedValues.put(update, v);
+ } else {
+ // multiple val are present
+ if (val instanceof List) {
+ List list = (List) val;
+ list.add(v);
+ } else {
+ List<Object> values = new ArrayList<Object>();
+ values.add(val);
+ values.add(v);
+ extendedValues.put(update, values);
+ }
+ }
+ break;
}
doc.addField(name, v, boost);
boost = 1.0f;
@@ -433,5 +457,15 @@ public class XMLLoader extends ContentSt
break;
}
}
+
+ if (updateMap != null) {
+ for (Map.Entry<String, Map<String, Object>> entry : updateMap.entrySet()) {
+ name = entry.getKey();
+ Map<String, Object> value = entry.getValue();
+ doc.addField(name, value, 1.0f);
+ }
+ }
+
+ return doc;
}
}
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/DefaultEncoder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/DefaultEncoder.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/DefaultEncoder.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/DefaultEncoder.java Fri Jan 18 18:30:54 2013
@@ -27,6 +27,7 @@ import org.apache.solr.common.params.Sol
public class DefaultEncoder extends HighlightingPluginBase implements
SolrEncoder {
+ @Override
public Encoder getEncoder(String fieldName, SolrParams params) {
return new org.apache.lucene.search.highlight.DefaultEncoder();
}
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java Fri Jan 18 18:30:54 2013
@@ -69,6 +69,7 @@ public class DefaultSolrHighlighter exte
this.solrCore = solrCore;
}
+ @Override
public void init(PluginInfo info) {
formatters.clear();
encoders.clear();
@@ -515,6 +516,7 @@ public class DefaultSolrHighlighter exte
// sort such that the fragments with the highest score come first
if(!preserveMulti){
Collections.sort(frags, new Comparator<TextFragment>() {
+ @Override
public int compare(TextFragment arg0, TextFragment arg1) {
return Math.round(arg1.getScore() - arg0.getScore());
}
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/GapFragmenter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/GapFragmenter.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/GapFragmenter.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/GapFragmenter.java Fri Jan 18 18:30:54 2013
@@ -27,6 +27,7 @@ import org.apache.solr.common.params.Sol
public class GapFragmenter extends HighlightingPluginBase implements SolrFragmenter
{
+ @Override
public Fragmenter getFragmenter(String fieldName, SolrParams params )
{
numRequests++;
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/HighlightingPluginBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/HighlightingPluginBase.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/HighlightingPluginBase.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/HighlightingPluginBase.java Fri Jan 18 18:30:54 2013
@@ -44,26 +44,33 @@ public abstract class HighlightingPlugin
//////////////////////// SolrInfoMBeans methods //////////////////////
+ @Override
public String getName() {
return this.getClass().getName();
}
+ @Override
public abstract String getDescription();
+ @Override
public abstract String getSource();
+ @Override
public String getVersion() {
return getClass().getPackage().getSpecificationVersion();
}
+ @Override
public Category getCategory()
{
return Category.HIGHLIGHTING;
}
+ @Override
public URL[] getDocs() {
return null; // this can be overridden, but not required
}
+ @Override
public NamedList getStatistics() {
NamedList<Long> lst = new SimpleOrderedMap<Long>();
lst.add("requests", numRequests);
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/HtmlEncoder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/HtmlEncoder.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/HtmlEncoder.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/HtmlEncoder.java Fri Jan 18 18:30:54 2013
@@ -27,6 +27,7 @@ import org.apache.solr.common.params.Sol
*/
public class HtmlEncoder extends HighlightingPluginBase implements SolrEncoder {
+ @Override
public Encoder getEncoder(String fieldName, SolrParams params) {
return new SimpleHTMLEncoder();
}
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/HtmlFormatter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/HtmlFormatter.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/HtmlFormatter.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/HtmlFormatter.java Fri Jan 18 18:30:54 2013
@@ -26,6 +26,7 @@ import org.apache.solr.common.params.Sol
*/
public class HtmlFormatter extends HighlightingPluginBase implements SolrFormatter
{
+ @Override
public Formatter getFormatter(String fieldName, SolrParams params )
{
numRequests++;
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/RegexFragmenter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/RegexFragmenter.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/RegexFragmenter.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/RegexFragmenter.java Fri Jan 18 18:30:54 2013
@@ -63,6 +63,7 @@ public class RegexFragmenter extends Hig
defaultPattern = Pattern.compile(defaultPatternRaw);
}
+ @Override
public Fragmenter getFragmenter(String fieldName, SolrParams params )
{
numRequests++;
@@ -187,6 +188,7 @@ class LuceneRegexFragmenter implements F
/* (non-Javadoc)
* @see org.apache.lucene.search.highlight.TextFragmenter#start(java.lang.String)
*/
+ @Override
public void start(String originalText, TokenStream tokenStream) {
currentNumFrags = 1;
currentOffset = 0;
@@ -227,6 +229,7 @@ class LuceneRegexFragmenter implements F
/* (non-Javadoc)
* @see org.apache.lucene.search.highlight.TextFragmenter#isNewFragment(org.apache.lucene.analysis.Token)
*/
+ @Override
public boolean isNewFragment()
{
boolean isNewFrag = false;
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SimpleFragListBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SimpleFragListBuilder.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SimpleFragListBuilder.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SimpleFragListBuilder.java Fri Jan 18 18:30:54 2013
@@ -23,6 +23,7 @@ import org.apache.solr.common.params.Sol
public class SimpleFragListBuilder extends HighlightingPluginBase implements
SolrFragListBuilder {
+ @Override
public FragListBuilder getFragListBuilder(SolrParams params) {
// NOTE: This class (currently) makes no use of params
// If that ever changes, it should wrap them with defaults...
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SingleFragListBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SingleFragListBuilder.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SingleFragListBuilder.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SingleFragListBuilder.java Fri Jan 18 18:30:54 2013
@@ -23,6 +23,7 @@ import org.apache.solr.common.params.Sol
public class SingleFragListBuilder extends HighlightingPluginBase implements
SolrFragListBuilder {
+ @Override
public FragListBuilder getFragListBuilder(SolrParams params) {
// NOTE: This class (currently) makes no use of params
// If that ever changes, it should wrap them with defaults...
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SolrEncoder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SolrEncoder.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SolrEncoder.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SolrEncoder.java Fri Jan 18 18:30:54 2013
@@ -30,6 +30,7 @@ public interface SolrEncoder extends Sol
* may be specified when declaring a request handler in
* solrconfig.xml
*/
+ @Override
public void init(NamedList args);
/**
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SolrFormatter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SolrFormatter.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SolrFormatter.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SolrFormatter.java Fri Jan 18 18:30:54 2013
@@ -30,6 +30,7 @@ public interface SolrFormatter extends S
* may be specified when declaring a request handler in
* solrconfig.xml
*/
+ @Override
public void init(NamedList args);
/**
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SolrFragListBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SolrFragListBuilder.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SolrFragListBuilder.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SolrFragListBuilder.java Fri Jan 18 18:30:54 2013
@@ -30,6 +30,7 @@ public interface SolrFragListBuilder ext
* may be specified when declaring a request handler in
* solrconfig.xml
*/
+ @Override
public void init( NamedList args);
/**
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SolrFragmenter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SolrFragmenter.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SolrFragmenter.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/highlight/SolrFragmenter.java Fri Jan 18 18:30:54 2013
@@ -30,6 +30,7 @@ public interface SolrFragmenter extends
* may be specified when declaring a request handler in
* solrconfig.xml
*/
+ @Override
public void init(NamedList args);
/**
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/internal/csv/CSVStrategy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/internal/csv/CSVStrategy.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/internal/csv/CSVStrategy.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/internal/csv/CSVStrategy.java Fri Jan 18 18:30:54 2013
@@ -140,6 +140,7 @@ public class CSVStrategy implements Clon
return this.printerNewline;
}
+ @Override
public Object clone() {
try {
return super.clone();
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/internal/csv/CharBuffer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/internal/csv/CharBuffer.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/internal/csv/CharBuffer.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/internal/csv/CharBuffer.java Fri Jan 18 18:30:54 2013
@@ -201,6 +201,7 @@ public class CharBuffer {
* Converts the contents of the buffer into a StringBuffer.
* This method involves copying the new data once!
*/
+ @Override
public String toString() {
return new String(c, 0, length);
}
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/internal/csv/ExtendedBufferedReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/internal/csv/ExtendedBufferedReader.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/internal/csv/ExtendedBufferedReader.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/internal/csv/ExtendedBufferedReader.java Fri Jan 18 18:30:54 2013
@@ -75,6 +75,7 @@ class ExtendedBufferedReader extends Buf
* Reads the next char from the input stream.
* @return the next char or END_OF_STREAM if end of stream has been reached.
*/
+ @Override
public int read() throws IOException {
// initalize the lookahead
if (lookaheadChar == UNDEFINED) {
@@ -113,6 +114,7 @@ class ExtendedBufferedReader extends Buf
*
* @return nof chars actually read or END_OF_STREAM
*/
+ @Override
public int read(char[] buf, int off, int len) throws IOException {
// do not claim if len == 0
if (len == 0) {
@@ -178,6 +180,7 @@ class ExtendedBufferedReader extends Buf
* including any line-termination characters, or null
* if the end of the stream has been reached
*/
+ @Override
public String readLine() throws IOException {
if (lookaheadChar == UNDEFINED) {
@@ -223,6 +226,7 @@ class ExtendedBufferedReader extends Buf
*
* @return nof skiped chars
*/
+ @Override
public long skip(long n) throws IllegalArgumentException, IOException {
if (lookaheadChar == UNDEFINED) {
@@ -300,6 +304,7 @@ class ExtendedBufferedReader extends Buf
return -1;
}
}
+ @Override
public boolean markSupported() {
/* note uh: marking is not supported, cause we cannot
* see into the future...
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/internal/csv/writer/CSVConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/internal/csv/writer/CSVConfig.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/internal/csv/writer/CSVConfig.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/internal/csv/writer/CSVConfig.java Fri Jan 18 18:30:54 2013
@@ -246,6 +246,7 @@ public class CSVConfig {
* TODO..
* @see java.lang.Object#equals(java.lang.Object)
*/
+ @Override
public boolean equals(Object obj) {
if (obj == null && !(obj instanceof CSVConfig)) {
return false;
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java Fri Jan 18 18:30:54 2013
@@ -94,6 +94,7 @@ class PerSegmentSingleValuedFaceting {
final SegFacet segFacet = new SegFacet(leave);
Callable<SegFacet> task = new Callable<SegFacet>() {
+ @Override
public SegFacet call() throws Exception {
segFacet.countTerms();
return segFacet;
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/request/SimpleFacets.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/request/SimpleFacets.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/request/SimpleFacets.java Fri Jan 18 18:30:54 2013
@@ -18,7 +18,6 @@
package org.apache.solr.request;
import org.apache.lucene.index.*;
-import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.search.*;
import org.apache.lucene.search.grouping.AbstractAllGroupHeadsCollector;
import org.apache.lucene.search.grouping.term.TermGroupFacetCollector;
@@ -95,7 +94,7 @@ public class SimpleFacets {
}
- protected void parseParams(String type, String param) throws ParseException, IOException {
+ protected void parseParams(String type, String param) throws SyntaxError, IOException {
localParams = QueryParsing.getLocalParams(param, req.getParams());
docs = docsOrig;
facetValue = param;
@@ -209,7 +208,7 @@ public class SimpleFacets {
} catch (IOException e) {
throw new SolrException(ErrorCode.SERVER_ERROR, e);
- } catch (ParseException e) {
+ } catch (SyntaxError e) {
throw new SolrException(ErrorCode.BAD_REQUEST, e);
}
return facetResponse;
@@ -221,7 +220,7 @@ public class SimpleFacets {
*
* @see FacetParams#FACET_QUERY
*/
- public NamedList<Integer> getFacetQueryCounts() throws IOException,ParseException {
+ public NamedList<Integer> getFacetQueryCounts() throws IOException,SyntaxError {
NamedList<Integer> res = new SimpleOrderedMap<Integer>();
@@ -387,6 +386,7 @@ public class SimpleFacets {
static final Executor directExecutor = new Executor() {
+ @Override
public void execute(Runnable r) {
r.run();
}
@@ -409,7 +409,7 @@ public class SimpleFacets {
* @see #getFacetTermEnumCounts
*/
public NamedList<Object> getFacetFieldCounts()
- throws IOException, ParseException {
+ throws IOException, SyntaxError {
NamedList<Object> res = new SimpleOrderedMap<Object>();
String[] facetFs = params.getParams(FacetParams.FACET_FIELD);
@@ -756,7 +756,7 @@ public class SimpleFacets {
// TODO: specialize when base docset is a bitset or hash set (skipDocs)? or does it matter for this?
// TODO: do this per-segment for better efficiency (MultiDocsEnum just uses base class impl)
// TODO: would passing deleted docs lead to better efficiency over checking the fastForRandomSet?
- docsEnum = termsEnum.docs(null, docsEnum, 0);
+ docsEnum = termsEnum.docs(null, docsEnum, DocsEnum.FLAG_NONE);
c=0;
if (docsEnum instanceof MultiDocsEnum) {
@@ -826,7 +826,7 @@ public class SimpleFacets {
*/
@Deprecated
public NamedList<Object> getFacetDateCounts()
- throws IOException, ParseException {
+ throws IOException, SyntaxError {
final NamedList<Object> resOuter = new SimpleOrderedMap<Object>();
final String[] fields = params.getParams(FacetParams.FACET_DATE);
@@ -845,7 +845,7 @@ public class SimpleFacets {
*/
@Deprecated
public void getFacetDateCounts(String dateFacet, NamedList<Object> resOuter)
- throws IOException, ParseException {
+ throws IOException, SyntaxError {
final IndexSchema schema = searcher.getSchema();
@@ -1008,7 +1008,7 @@ public class SimpleFacets {
* @see FacetParams#FACET_RANGE
*/
- public NamedList<Object> getFacetRangeCounts() throws IOException, ParseException {
+ public NamedList<Object> getFacetRangeCounts() throws IOException, SyntaxError {
final NamedList<Object> resOuter = new SimpleOrderedMap<Object>();
final String[] fields = params.getParams(FacetParams.FACET_RANGE);
@@ -1022,7 +1022,7 @@ public class SimpleFacets {
}
void getFacetRangeCounts(String facetRange, NamedList<Object> resOuter)
- throws IOException, ParseException {
+ throws IOException, SyntaxError {
final IndexSchema schema = searcher.getSchema();
@@ -1249,6 +1249,7 @@ public class SimpleFacets {
CountPair<?,?> that = (CountPair<?,?>) o;
return (this.key.equals(that.key) && this.val.equals(that.val));
}
+ @Override
public int compareTo(CountPair<K,V> o) {
int vc = o.val.compareTo(val);
return (0 != vc ? vc : key.compareTo(o.key));
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/request/SolrQueryRequestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/request/SolrQueryRequestBase.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/request/SolrQueryRequestBase.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/request/SolrQueryRequestBase.java Fri Jan 18 18:30:54 2013
@@ -52,32 +52,38 @@ public abstract class SolrQueryRequestBa
this.params = this.origParams = params;
}
+ @Override
public Map<Object,Object> getContext() {
// SolrQueryRequest as a whole isn't thread safe, and this isn't either.
if (context==null) context = new HashMap<Object,Object>();
return context;
}
+ @Override
public SolrParams getParams() {
return params;
}
+ @Override
public SolrParams getOriginalParams() {
return origParams;
}
+ @Override
public void setParams(SolrParams params) {
this.params = params;
}
protected final long startTime=System.currentTimeMillis();
// Get the start time of this request in milliseconds
+ @Override
public long getStartTime() {
return startTime;
}
// The index searcher associated with this request
protected RefCounted<SolrIndexSearcher> searcherHolder;
+ @Override
public SolrIndexSearcher getSearcher() {
if(core == null) return null;//a request for a core admin will no have a core
// should this reach out and get a searcher from the core singleton, or
@@ -92,11 +98,13 @@ public abstract class SolrQueryRequestBa
}
// The solr core (coordinator, etc) associated with this request
+ @Override
public SolrCore getCore() {
return core;
}
// The index schema associated with this request
+ @Override
public IndexSchema getSchema() {
//a request for a core admin will no have a core
return core == null? null: core.getSchema();
@@ -106,6 +114,7 @@ public abstract class SolrQueryRequestBa
* Frees resources associated with this request, this method <b>must</b>
* be called when the object is no longer in use.
*/
+ @Override
public void close() {
if (searcherHolder!=null) {
searcherHolder.decref();
@@ -115,6 +124,7 @@ public abstract class SolrQueryRequestBa
/** A Collection of ContentStreams passed to the request
*/
+ @Override
public Iterable<ContentStream> getContentStreams() {
return streams;
}
@@ -123,6 +133,7 @@ public abstract class SolrQueryRequestBa
streams = s;
}
+ @Override
public String getParamString() {
return origParams.toString();
}
Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java Fri Jan 18 18:30:54 2013
@@ -43,6 +43,7 @@ public class BinaryResponseWriter implem
private static final Logger LOG = LoggerFactory.getLogger(BinaryResponseWriter.class);
public static final Set<Class> KNOWN_TYPES = new HashSet<Class>();
+ @Override
public void write(OutputStream out, SolrQueryRequest req, SolrQueryResponse response) throws IOException {
Resolver resolver = new Resolver(req, response.getReturnFields());
Boolean omitHeader = req.getParams().getBool(CommonParams.OMIT_HEADER);
@@ -51,14 +52,17 @@ public class BinaryResponseWriter implem
codec.marshal(response.getValues(), out);
}
+ @Override
public void write(Writer writer, SolrQueryRequest request, SolrQueryResponse response) throws IOException {
throw new RuntimeException("This is a binary writer , Cannot write to a characterstream");
}
+ @Override
public String getContentType(SolrQueryRequest request, SolrQueryResponse response) {
return "application/octet-stream";
}
+ @Override
public void init(NamedList args) {
/* NOOP */
}
@@ -78,6 +82,7 @@ public class BinaryResponseWriter implem
this.returnFields = returnFields;
}
+ @Override
public Object resolve(Object o, JavaBinCodec codec) throws IOException {
if (o instanceof ResultContext) {
writeResults((ResultContext) o, codec);