You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2014/03/16 20:39:37 UTC
svn commit: r1578144 [26/37] - in /lucene/dev/branches/lucene5376_2: ./
dev-tools/ dev-tools/idea/.idea/libraries/
dev-tools/idea/solr/contrib/dataimporthandler/
dev-tools/idea/solr/contrib/map-reduce/ dev-tools/idea/solr/core/src/test/
dev-tools/scrip...
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java Sun Mar 16 19:39:10 2014
@@ -17,21 +17,8 @@
package org.apache.solr.handler.admin;
-import static org.apache.solr.common.cloud.DocCollection.DOC_ROUTER;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.concurrent.Future;
-
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.lucene.index.DirectoryReader;
@@ -55,6 +42,7 @@ import org.apache.solr.common.params.Cor
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.params.UpdateParams;
+import org.apache.solr.common.util.ExecutorUtil;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.core.CloseHook;
@@ -75,14 +63,31 @@ import org.apache.solr.update.SplitIndex
import org.apache.solr.update.UpdateLog;
import org.apache.solr.update.processor.UpdateRequestProcessor;
import org.apache.solr.update.processor.UpdateRequestProcessorChain;
+import org.apache.solr.util.DefaultSolrThreadFactory;
import org.apache.solr.util.NumberUtils;
import org.apache.solr.util.RefCounted;
import org.apache.zookeeper.KeeperException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+
+import static org.apache.solr.common.cloud.DocCollection.DOC_ROUTER;
/**
*
@@ -91,6 +96,24 @@ import com.google.common.collect.Lists;
public class CoreAdminHandler extends RequestHandlerBase {
protected static Logger log = LoggerFactory.getLogger(CoreAdminHandler.class);
protected final CoreContainer coreContainer;
+ protected static HashMap<String, Map<String, TaskObject>> requestStatusMap =
+ new HashMap<String,Map<String, TaskObject>>();
+
+ protected ExecutorService parallelExecutor = null;
+
+ protected static int MAX_TRACKED_REQUESTS = 100;
+ public static String RUNNING = "running";
+ public static String COMPLETED = "completed";
+ public static String FAILED = "failed";
+ public static String RESPONSE = "Response";
+ public static String RESPONSE_STATUS = "STATUS";
+ public static String RESPONSE_MESSAGE = "msg";
+
+ static {
+ requestStatusMap.put(RUNNING, Collections.synchronizedMap(new LinkedHashMap<String, TaskObject>()));
+ requestStatusMap.put(COMPLETED, Collections.synchronizedMap(new LinkedHashMap<String, TaskObject>()));
+ requestStatusMap.put(FAILED, Collections.synchronizedMap(new LinkedHashMap<String, TaskObject>()));
+ }
public CoreAdminHandler() {
super();
@@ -136,6 +159,18 @@ public class CoreAdminHandler extends Re
"Core container instance missing");
}
//boolean doPersist = false;
+ String taskId = req.getParams().get("async");
+ TaskObject taskObject = new TaskObject(taskId);
+
+ if(taskId != null) {
+ // Put the tasks into the maps for tracking
+ if (getMap(RUNNING).containsKey(taskId) || getMap(COMPLETED).containsKey(taskId) || getMap(FAILED).containsKey(taskId)) {
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
+ "Duplicate request with the same requestid found.");
+ }
+
+ addTask(RUNNING, taskObject);
+ }
// Pick the action
SolrParams params = req.getParams();
@@ -147,6 +182,19 @@ public class CoreAdminHandler extends Re
this.handleCustomAction(req, rsp);
}
}
+
+ if (taskId == null) {
+ handleRequestInternal(req, rsp, action);
+ } else {
+ ParallelCoreAdminHandlerThread parallelHandlerThread = new ParallelCoreAdminHandlerThread(req, rsp, action, taskObject);
+ if(parallelExecutor == null || parallelExecutor.isShutdown())
+ parallelExecutor = Executors.newFixedThreadPool(50,
+ new DefaultSolrThreadFactory("parallelCoreAdminExecutor"));
+ parallelExecutor.execute(parallelHandlerThread);
+ }
+ }
+
+ protected void handleRequestInternal(SolrQueryRequest req, SolrQueryResponse rsp, CoreAdminAction action) throws Exception {
if (action != null) {
switch (action) {
case CREATE: {
@@ -199,17 +247,17 @@ public class CoreAdminHandler extends Re
this.handleWaitForStateAction(req, rsp);
break;
}
-
+
case REQUESTRECOVERY: {
this.handleRequestRecoveryAction(req, rsp);
break;
}
-
+
case REQUESTSYNCSHARD: {
this.handleRequestSyncAction(req, rsp);
break;
}
-
+
// todo : Can this be done by the regular RecoveryStrategy route?
case REQUESTAPPLYUPDATES: {
this.handleRequestApplyUpdatesAction(req, rsp);
@@ -219,6 +267,10 @@ public class CoreAdminHandler extends Re
this.handleRequestBufferUpdatesAction(req, rsp);
break;
}
+ case REQUESTSTATUS: {
+ this.handleRequestActionStatus(req, rsp);
+ break;
+ }
case OVERSEEROP:{
ZkController zkController = coreContainer.getZkController();
if(zkController != null){
@@ -240,7 +292,7 @@ public class CoreAdminHandler extends Re
rsp.setHttpCaching(false);
}
-
+
/**
* Handle the core admin SPLIT action.
*/
@@ -255,7 +307,7 @@ public class CoreAdminHandler extends Re
if (rangesArr.length == 0) {
throw new SolrException(ErrorCode.BAD_REQUEST, "There must be at least one range specified to split an index");
} else {
- ranges = new ArrayList<DocRouter.Range>(rangesArr.length);
+ ranges = new ArrayList<>(rangesArr.length);
for (String r : rangesArr) {
try {
ranges.add(DocRouter.DEFAULT.fromString(r));
@@ -304,7 +356,7 @@ public class CoreAdminHandler extends Re
}
if (pathsArr == null) {
- newCores = new ArrayList<SolrCore>(partitions);
+ newCores = new ArrayList<>(partitions);
for (String newCoreName : newCoreNames) {
SolrCore newcore = coreContainer.getCore(newCoreName);
if (newcore != null) {
@@ -705,7 +757,7 @@ public class CoreAdminHandler extends Re
String indexInfo = params.get(CoreAdminParams.INDEX_INFO);
boolean isIndexInfoNeeded = Boolean.parseBoolean(null == indexInfo ? "true" : indexInfo);
boolean doPersist = false;
- NamedList<Object> status = new SimpleOrderedMap<Object>();
+ NamedList<Object> status = new SimpleOrderedMap<>();
Map<String,Exception> allFailures = coreContainer.getCoreInitFailures();
try {
if (cname == null) {
@@ -755,6 +807,28 @@ public class CoreAdminHandler extends Re
}
/**
+ * Handle "REQUESTSTATUS" action
+ */
+ protected void handleRequestActionStatus(SolrQueryRequest req, SolrQueryResponse rsp) {
+ SolrParams params = req.getParams();
+ String requestId = params.get(CoreAdminParams.REQUESTID);
+ log.info("Checking request status for : " + requestId);
+
+ if (mapContainsTask(RUNNING, requestId)) {
+ rsp.add(RESPONSE_STATUS, RUNNING);
+ } else if(mapContainsTask(COMPLETED, requestId)) {
+ rsp.add(RESPONSE_STATUS, COMPLETED);
+ rsp.add(RESPONSE, getMap(COMPLETED).get(requestId).getRspObject());
+ } else if(mapContainsTask(FAILED, requestId)) {
+ rsp.add(RESPONSE_STATUS, FAILED);
+ rsp.add(RESPONSE, getMap(FAILED).get(requestId).getRspObject());
+ } else {
+ rsp.add(RESPONSE_STATUS, "notfound");
+ rsp.add(RESPONSE_MESSAGE, "No task found in running, completed or failed tasks");
+ }
+ }
+
+ /**
* Handle "SWAP" action
*/
protected void handleSwapAction(SolrQueryRequest req, SolrQueryResponse rsp) {
@@ -832,7 +906,7 @@ public class CoreAdminHandler extends Re
if (core != null) {
syncStrategy = new SyncStrategy(core.getCoreDescriptor().getCoreContainer());
- Map<String,Object> props = new HashMap<String,Object>();
+ Map<String,Object> props = new HashMap<>();
props.put(ZkStateReader.BASE_URL_PROP, zkController.getBaseUrl());
props.put(ZkStateReader.CORE_NAME_PROP, cname);
props.put(ZkStateReader.NODE_NAME_PROP, zkController.getNodeName());
@@ -1077,7 +1151,7 @@ public class CoreAdminHandler extends Re
* @throws IOException - LukeRequestHandler can throw an I/O exception
*/
protected NamedList<Object> getCoreStatus(CoreContainer cores, String cname, boolean isIndexInfoNeeded) throws IOException {
- NamedList<Object> info = new SimpleOrderedMap<Object>();
+ NamedList<Object> info = new SimpleOrderedMap<>();
if (!cores.isLoaded(cname)) { // Lazily-loaded core, fill in what we can.
// It would be a real mistake to load the cores just to get the status
@@ -1172,4 +1246,123 @@ public class CoreAdminHandler extends Re
public String getSource() {
return "$URL$";
}
+
+ /**
+ * Class to implement multi-threaded CoreAdminHandler behaviour.
+ * This accepts all of the context from handleRequestBody.
+ */
+ protected class ParallelCoreAdminHandlerThread implements Runnable {
+ SolrQueryRequest req;
+ SolrQueryResponse rsp;
+ CoreAdminAction action;
+ TaskObject taskObject;
+
+ public ParallelCoreAdminHandlerThread (SolrQueryRequest req, SolrQueryResponse rsp,
+ CoreAdminAction action, TaskObject taskObject){
+ this.req = req;
+ this.rsp = rsp;
+ this.action = action;
+ this.taskObject = taskObject;
+ }
+
+ public void run() {
+ boolean exceptionCaught = false;
+ try {
+ handleRequestInternal(req, rsp, action);
+ taskObject.setRspObject(rsp);
+ } catch (Exception e) {
+ exceptionCaught = true;
+ taskObject.setRspObjectFromException(e);
+ } finally {
+ removeTask("running", taskObject.taskId);
+ if(exceptionCaught) {
+ addTask("failed", taskObject, true);
+ } else
+ addTask("completed", taskObject, true);
+ }
+
+ }
+
+ }
+
+ /**
+ * Helper class to manage the tasks to be tracked.
+ * This contains the taskId, request and the response (if available).
+ */
+ private class TaskObject {
+ String taskId;
+ String rspInfo;
+
+ public TaskObject(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public String getRspObject() {
+ return rspInfo;
+ }
+
+ public void setRspObject(SolrQueryResponse rspObject) {
+ this.rspInfo = rspObject.getToLogAsString("TaskId: " + this.taskId + " ");
+ }
+
+ public void setRspObjectFromException(Exception e) {
+ this.rspInfo = e.getMessage();
+ }
+ }
+
+ /**
+ * Helper method to add a task to a tracking map.
+ */
+ protected void addTask(String map, TaskObject o, boolean limit) {
+ if(limit && getMap(map).size() == MAX_TRACKED_REQUESTS) {
+ String key = getMap(map).entrySet().iterator().next().getKey();
+ getMap(map).remove(key);
+ }
+ addTask(map, o);
+ }
+
+
+ protected void addTask(String map, TaskObject o) {
+ synchronized (getMap(map)) {
+ getMap(map).put(o.taskId, o);
+ }
+ }
+
+ /**
+ * Helper method to remove a task from a tracking map.
+ */
+ protected void removeTask(String map, String taskId) {
+ synchronized (getMap(map)) {
+ getMap(map).remove(taskId);
+ }
+ }
+
+ /**
+ * Helper method to check if a map contains a taskObject with the given taskId.
+ */
+ protected boolean mapContainsTask(String map, String taskId) {
+ return getMap(map).containsKey(taskId);
+ }
+
+ /**
+ * Helper method to get a TaskObject given a map and a taskId.
+ */
+ protected TaskObject getTask(String map, String taskId) {
+ return getMap(map).get(taskId);
+ }
+
+ /**
+ * Helper method to get a request status map given the name.
+ */
+ private Map<String, TaskObject> getMap(String map) {
+ return requestStatusMap.get(map);
+ }
+
+ /**
+ * Method to ensure shutting down of the ThreadPool Executor.
+ */
+ public void shutdown() {
+ if (parallelExecutor != null && !parallelExecutor.isShutdown())
+ ExecutorUtil.shutdownAndAwaitTermination(parallelExecutor);
+ }
}
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java Sun Mar 16 19:39:10 2014
@@ -118,7 +118,7 @@ public class LoggingHandler extends Requ
return;
}
else {
- SimpleOrderedMap<Object> info = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> info = new SimpleOrderedMap<>();
if(time>0) {
info.add("since", time);
info.add("found", found);
@@ -137,10 +137,10 @@ public class LoggingHandler extends Requ
else {
rsp.add("levels", watcher.getAllLevels());
- List<LoggerInfo> loggers = new ArrayList<LoggerInfo>(watcher.getAllLoggers());
+ List<LoggerInfo> loggers = new ArrayList<>(watcher.getAllLoggers());
Collections.sort(loggers);
- List<SimpleOrderedMap<?>> info = new ArrayList<SimpleOrderedMap<?>>();
+ List<SimpleOrderedMap<?>> info = new ArrayList<>();
for(LoggerInfo wrap:loggers) {
info.add(wrap.getInfo());
}
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java Sun Mar 16 19:39:10 2014
@@ -147,7 +147,7 @@ public class LukeRequestHandler extends
SimpleOrderedMap<Object> info = getDocumentFieldsInfo( doc, docId, reader, schema );
- SimpleOrderedMap<Object> docinfo = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> docinfo = new SimpleOrderedMap<>();
docinfo.add( "docId", docId );
docinfo.add( "lucene", info );
docinfo.add( "solr", doc );
@@ -161,7 +161,7 @@ public class LukeRequestHandler extends
}
// Add some generally helpful information
- NamedList<Object> info = new SimpleOrderedMap<Object>();
+ NamedList<Object> info = new SimpleOrderedMap<>();
info.add( "key", getFieldFlagsKey() );
info.add( "NOTE", "Document Frequency (df) is not updated when a document is marked for deletion. df values include deleted documents." );
rsp.add( "info", info );
@@ -241,7 +241,7 @@ public class LukeRequestHandler extends
* @return a key to what each character means
*/
public static SimpleOrderedMap<String> getFieldFlagsKey() {
- SimpleOrderedMap<String> key = new SimpleOrderedMap<String>();
+ SimpleOrderedMap<String> key = new SimpleOrderedMap<>();
for (FieldFlag f : FieldFlag.values()) {
key.add(String.valueOf(f.getAbbreviation()), f.getDisplay() );
}
@@ -252,10 +252,10 @@ public class LukeRequestHandler extends
IndexSchema schema ) throws IOException
{
final CharsRef spare = new CharsRef();
- SimpleOrderedMap<Object> finfo = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> finfo = new SimpleOrderedMap<>();
for( Object o : doc.getFields() ) {
Field field = (Field)o;
- SimpleOrderedMap<Object> f = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> f = new SimpleOrderedMap<>();
SchemaField sfield = schema.getFieldOrNull( field.name() );
FieldType ftype = (sfield==null)?null:sfield.getType();
@@ -283,7 +283,7 @@ public class LukeRequestHandler extends
try {
Terms v = reader.getTermVector( docId, field.name() );
if( v != null ) {
- SimpleOrderedMap<Integer> tfv = new SimpleOrderedMap<Integer>();
+ SimpleOrderedMap<Integer> tfv = new SimpleOrderedMap<>();
final TermsEnum termsEnum = v.iterator(null);
BytesRef text;
while((text = termsEnum.next()) != null) {
@@ -313,27 +313,27 @@ public class LukeRequestHandler extends
Set<String> fields = null;
String fl = params.get(CommonParams.FL);
if (fl != null) {
- fields = new TreeSet<String>(Arrays.asList(fl.split( "[,\\s]+" )));
+ fields = new TreeSet<>(Arrays.asList(fl.split( "[,\\s]+" )));
}
AtomicReader reader = searcher.getAtomicReader();
IndexSchema schema = searcher.getSchema();
// Don't be tempted to put this in the loop below, the whole point here is to alphabetize the fields!
- Set<String> fieldNames = new TreeSet<String>();
+ Set<String> fieldNames = new TreeSet<>();
for(FieldInfo fieldInfo : reader.getFieldInfos()) {
fieldNames.add(fieldInfo.name);
}
// Walk the term enum and keep a priority queue for each map in our set
- SimpleOrderedMap<Object> finfo = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> finfo = new SimpleOrderedMap<>();
for (String fieldName : fieldNames) {
if (fields != null && ! fields.contains(fieldName) && ! fields.contains("*")) {
continue; //we're not interested in this field Still an issue here
}
- SimpleOrderedMap<Object> fieldMap = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> fieldMap = new SimpleOrderedMap<>();
SchemaField sfield = schema.getFieldOrNull( fieldName );
FieldType ftype = (sfield==null)?null:sfield.getType();
@@ -408,21 +408,21 @@ public class LukeRequestHandler extends
* Return info from the index
*/
private static SimpleOrderedMap<Object> getSchemaInfo( IndexSchema schema ) {
- Map<String, List<String>> typeusemap = new TreeMap<String, List<String>>();
- Map<String, Object> fields = new TreeMap<String, Object>();
+ Map<String, List<String>> typeusemap = new TreeMap<>();
+ Map<String, Object> fields = new TreeMap<>();
SchemaField uniqueField = schema.getUniqueKeyField();
for( SchemaField f : schema.getFields().values() ) {
populateFieldInfo(schema, typeusemap, fields, uniqueField, f);
}
- Map<String, Object> dynamicFields = new TreeMap<String, Object>();
+ Map<String, Object> dynamicFields = new TreeMap<>();
for (SchemaField f : schema.getDynamicFieldPrototypes()) {
populateFieldInfo(schema, typeusemap, dynamicFields, uniqueField, f);
}
- SimpleOrderedMap<Object> types = new SimpleOrderedMap<Object>();
- Map<String, FieldType> sortedTypes = new TreeMap<String, FieldType>(schema.getFieldTypes());
+ SimpleOrderedMap<Object> types = new SimpleOrderedMap<>();
+ Map<String, FieldType> sortedTypes = new TreeMap<>(schema.getFieldTypes());
for( FieldType ft : sortedTypes.values() ) {
- SimpleOrderedMap<Object> field = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> field = new SimpleOrderedMap<>();
field.add("fields", typeusemap.get( ft.getTypeName() ) );
field.add("tokenized", ft.isTokenized() );
field.add("className", ft.getClass().getName());
@@ -433,15 +433,15 @@ public class LukeRequestHandler extends
}
// Must go through this to maintain binary compatbility. Putting a TreeMap into a resp leads to casting errors
- SimpleOrderedMap<Object> finfo = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> finfo = new SimpleOrderedMap<>();
- SimpleOrderedMap<Object> fieldsSimple = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> fieldsSimple = new SimpleOrderedMap<>();
for (Map.Entry<String, Object> ent : fields.entrySet()) {
fieldsSimple.add(ent.getKey(), ent.getValue());
}
finfo.add("fields", fieldsSimple);
- SimpleOrderedMap<Object> dynamicSimple = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> dynamicSimple = new SimpleOrderedMap<>();
for (Map.Entry<String, Object> ent : dynamicFields.entrySet()) {
dynamicSimple.add(ent.getKey(), ent.getValue());
}
@@ -455,7 +455,7 @@ public class LukeRequestHandler extends
}
private static SimpleOrderedMap<Object> getSimilarityInfo(Similarity similarity) {
- SimpleOrderedMap<Object> toReturn = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> toReturn = new SimpleOrderedMap<>();
if (similarity != null) {
toReturn.add("className", similarity.getClass().getName());
toReturn.add("details", similarity.toString());
@@ -464,16 +464,16 @@ public class LukeRequestHandler extends
}
private static SimpleOrderedMap<Object> getAnalyzerInfo(Analyzer analyzer) {
- SimpleOrderedMap<Object> aninfo = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> aninfo = new SimpleOrderedMap<>();
aninfo.add("className", analyzer.getClass().getName());
if (analyzer instanceof TokenizerChain) {
TokenizerChain tchain = (TokenizerChain)analyzer;
CharFilterFactory[] cfiltfacs = tchain.getCharFilterFactories();
- SimpleOrderedMap<Map<String, Object>> cfilters = new SimpleOrderedMap<Map<String, Object>>();
+ SimpleOrderedMap<Map<String, Object>> cfilters = new SimpleOrderedMap<>();
for (CharFilterFactory cfiltfac : cfiltfacs) {
- Map<String, Object> tok = new HashMap<String, Object>();
+ Map<String, Object> tok = new HashMap<>();
String className = cfiltfac.getClass().getName();
tok.put("className", className);
tok.put("args", cfiltfac.getOriginalArgs());
@@ -483,16 +483,16 @@ public class LukeRequestHandler extends
aninfo.add("charFilters", cfilters);
}
- SimpleOrderedMap<Object> tokenizer = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> tokenizer = new SimpleOrderedMap<>();
TokenizerFactory tfac = tchain.getTokenizerFactory();
tokenizer.add("className", tfac.getClass().getName());
tokenizer.add("args", tfac.getOriginalArgs());
aninfo.add("tokenizer", tokenizer);
TokenFilterFactory[] filtfacs = tchain.getTokenFilterFactories();
- SimpleOrderedMap<Map<String, Object>> filters = new SimpleOrderedMap<Map<String, Object>>();
+ SimpleOrderedMap<Map<String, Object>> filters = new SimpleOrderedMap<>();
for (TokenFilterFactory filtfac : filtfacs) {
- Map<String, Object> tok = new HashMap<String, Object>();
+ Map<String, Object> tok = new HashMap<>();
String className = filtfac.getClass().getName();
tok.put("className", className);
tok.put("args", filtfac.getOriginalArgs());
@@ -509,7 +509,7 @@ public class LukeRequestHandler extends
Map<String, List<String>> typeusemap, Map<String, Object> fields,
SchemaField uniqueField, SchemaField f) {
FieldType ft = f.getType();
- SimpleOrderedMap<Object> field = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> field = new SimpleOrderedMap<>();
field.add( "type", ft.getTypeName() );
field.add( "flags", getFieldFlags(f) );
if( f.isRequired() ) {
@@ -532,7 +532,7 @@ public class LukeRequestHandler extends
List<String> v = typeusemap.get( ft.getTypeName() );
if( v == null ) {
- v = new ArrayList<String>();
+ v = new ArrayList<>();
}
v.add( f.getName() );
typeusemap.put( ft.getTypeName(), v );
@@ -550,7 +550,7 @@ public class LukeRequestHandler extends
public static SimpleOrderedMap<Object> getIndexInfo(DirectoryReader reader) throws IOException {
Directory dir = reader.directory();
- SimpleOrderedMap<Object> indexInfo = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> indexInfo = new SimpleOrderedMap<>();
indexInfo.add("numDocs", reader.numDocs());
indexInfo.add("maxDoc", reader.maxDoc());
@@ -638,14 +638,14 @@ public class LukeRequestHandler extends
}
private static List<String> toListOfStrings(SchemaField[] raw) {
- List<String> result = new ArrayList<String>(raw.length);
+ List<String> result = new ArrayList<>(raw.length);
for (SchemaField f : raw) {
result.add(f.getName());
}
return result;
}
private static List<String> toListOfStringDests(List<CopyField> raw) {
- List<String> result = new ArrayList<String>(raw.size());
+ List<String> result = new ArrayList<>(raw.size());
for (CopyField f : raw) {
result.add(f.getDestination().getName());
}
@@ -689,7 +689,7 @@ public class LukeRequestHandler extends
// TODO? should this be a list or a map?
public NamedList<Integer> toNamedList()
{
- NamedList<Integer> nl = new NamedList<Integer>();
+ NamedList<Integer> nl = new NamedList<>();
for( int bucket = 0; bucket <= _maxBucket; bucket++ ) {
nl.add( ""+ (1 << bucket), _buckets[bucket] );
}
@@ -733,12 +733,12 @@ public class LukeRequestHandler extends
public NamedList<Integer> toNamedList( IndexSchema schema )
{
// reverse the list..
- List<TermInfo> aslist = new LinkedList<TermInfo>();
+ List<TermInfo> aslist = new LinkedList<>();
while( size() > 0 ) {
aslist.add( 0, (TermInfo)pop() );
}
- NamedList<Integer> list = new NamedList<Integer>();
+ NamedList<Integer> list = new NamedList<>();
for (TermInfo i : aslist) {
String txt = i.term.text();
SchemaField ft = schema.getFieldOrNull( i.term.field() );
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/PluginInfoHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/PluginInfoHandler.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/PluginInfoHandler.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/PluginInfoHandler.java Sun Mar 16 19:39:10 2014
@@ -46,10 +46,10 @@ public class PluginInfoHandler extends R
private static SimpleOrderedMap<Object> getSolrInfoBeans( SolrCore core, boolean stats )
{
- SimpleOrderedMap<Object> list = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> list = new SimpleOrderedMap<>();
for (SolrInfoMBean.Category cat : SolrInfoMBean.Category.values())
{
- SimpleOrderedMap<Object> category = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> category = new SimpleOrderedMap<>();
list.add( cat.name(), category );
Map<String, SolrInfoMBean> reg = core.getInfoRegistry();
for (Map.Entry<String,SolrInfoMBean> entry : reg.entrySet()) {
@@ -57,7 +57,7 @@ public class PluginInfoHandler extends R
if (m.getCategory() != cat) continue;
String na = "Not Declared";
- SimpleOrderedMap<Object> info = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> info = new SimpleOrderedMap<>();
category.add( entry.getKey(), info );
info.add( "name", (m.getName() !=null ? m.getName() : na) );
@@ -67,7 +67,7 @@ public class PluginInfoHandler extends R
URL[] urls = m.getDocs();
if ((urls != null) && (urls.length > 0)) {
- ArrayList<String> docs = new ArrayList<String>(urls.length);
+ ArrayList<String> docs = new ArrayList<>(urls.length);
for( URL u : urls ) {
docs.add( u.toExternalForm() );
}
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/PropertiesRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/PropertiesRequestHandler.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/PropertiesRequestHandler.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/PropertiesRequestHandler.java Sun Mar 16 19:39:10 2014
@@ -36,7 +36,7 @@ public class PropertiesRequestHandler ex
Object props = null;
String name = req.getParams().get( "name" );
if( name != null ) {
- NamedList<String> p = new SimpleOrderedMap<String>();
+ NamedList<String> p = new SimpleOrderedMap<>();
p.add( name, System.getProperty(name) );
props = p;
}
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java Sun Mar 16 19:39:10 2014
@@ -113,7 +113,7 @@ public class ShowFileRequestHandler exte
public static Set<String> initHidden(SolrParams invariants) {
- Set<String> hiddenRet = new HashSet<String>();
+ Set<String> hiddenRet = new HashSet<>();
// Build a list of hidden files
if (invariants != null) {
String[] hidden = invariants.getParams(HIDDEN);
@@ -155,13 +155,13 @@ public class ShowFileRequestHandler exte
List<String> children = zkClient.getChildren(adminFile, null, true);
if (children.size() > 0) {
- NamedList<SimpleOrderedMap<Object>> files = new SimpleOrderedMap<SimpleOrderedMap<Object>>();
+ NamedList<SimpleOrderedMap<Object>> files = new SimpleOrderedMap<>();
for (String f : children) {
if (isHiddenFile(req, rsp, f, false, hiddenFiles)) {
continue;
}
- SimpleOrderedMap<Object> fileInfo = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> fileInfo = new SimpleOrderedMap<>();
files.add(f, fileInfo);
List<String> fchildren = zkClient.getChildren(adminFile + "/" + f, null, true);
if (fchildren.size() > 0) {
@@ -216,7 +216,7 @@ public class ShowFileRequestHandler exte
if( adminFile.isDirectory() ) {
// it's really a directory, just go for it.
int basePath = adminFile.getAbsolutePath().length() + 1;
- NamedList<SimpleOrderedMap<Object>> files = new SimpleOrderedMap<SimpleOrderedMap<Object>>();
+ NamedList<SimpleOrderedMap<Object>> files = new SimpleOrderedMap<>();
for( File f : adminFile.listFiles() ) {
String path = f.getAbsolutePath().substring( basePath );
path = path.replace( '\\', '/' ); // normalize slashes
@@ -225,7 +225,7 @@ public class ShowFileRequestHandler exte
continue;
}
- SimpleOrderedMap<Object> fileInfo = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> fileInfo = new SimpleOrderedMap<>();
files.add( path, fileInfo );
if( f.isDirectory() ) {
fileInfo.add( "directory", true );
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java Sun Mar 16 19:39:10 2014
@@ -52,7 +52,7 @@ public class SolrInfoMBeanHandler extend
* Set is guarantee to never be null (but may be empty)
*/
private Set<String> arrayToSet(Object[] arr) {
- HashSet<String> r = new HashSet<String>();
+ HashSet<String> r = new HashSet<>();
if (null == arr) return r;
for (Object o : arr) {
if (null != o) r.add(o.toString());
@@ -114,7 +114,7 @@ public class SolrInfoMBeanHandler extend
protected NamedList<NamedList<NamedList<Object>>> getMBeanInfo(SolrQueryRequest req) {
- NamedList<NamedList<NamedList<Object>>> cats = new NamedList<NamedList<NamedList<Object>>>();
+ NamedList<NamedList<NamedList<Object>>> cats = new NamedList<>();
String[] requestedCats = req.getParams().getParams("cat");
if (null == requestedCats || 0 == requestedCats.length) {
@@ -139,7 +139,7 @@ public class SolrInfoMBeanHandler extend
NamedList<NamedList<Object>> catInfo = cats.get(m.getCategory().name());
if ( null == catInfo ) continue;
- NamedList<Object> mBeanInfo = new SimpleOrderedMap<Object>();
+ NamedList<Object> mBeanInfo = new SimpleOrderedMap<>();
mBeanInfo.add("class", m.getName());
mBeanInfo.add("version", m.getVersion());
mBeanInfo.add("description", m.getDescription());
@@ -148,7 +148,7 @@ public class SolrInfoMBeanHandler extend
// Use an external form
URL[] urls = m.getDocs();
if(urls!=null) {
- List<String> docs = new ArrayList<String>(urls.length);
+ List<String> docs = new ArrayList<>(urls.length);
for(URL url : urls) {
docs.add(url.toExternalForm());
}
@@ -168,7 +168,7 @@ public class SolrInfoMBeanHandler extend
NamedList<NamedList<NamedList<Object>>> now,
boolean includeAll ) {
- NamedList<NamedList<NamedList<Object>>> changed = new NamedList<NamedList<NamedList<Object>>>();
+ NamedList<NamedList<NamedList<Object>>> changed = new NamedList<>();
// Cycle through each category
for(int i=0;i<ref.size();i++) {
@@ -182,7 +182,7 @@ public class SolrInfoMBeanHandler extend
// Something in the category changed
// Now iterate the real beans
- NamedList<NamedList<Object>> cat = new SimpleOrderedMap<NamedList<Object>>();
+ NamedList<NamedList<Object>> cat = new SimpleOrderedMap<>();
for(int j=0;j<ref_cat.size();j++) {
String name = ref_cat.getName(j);
NamedList<Object> ref_bean = ref_cat.get(name);
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java Sun Mar 16 19:39:10 2014
@@ -112,7 +112,7 @@ public class SystemInfoHandler extends R
* Get system info
*/
private SimpleOrderedMap<Object> getCoreInfo( SolrCore core, IndexSchema schema ) {
- SimpleOrderedMap<Object> info = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> info = new SimpleOrderedMap<>();
info.add( "schema", schema != null ? schema.getSchemaName():"no schema!" );
@@ -126,7 +126,7 @@ public class SystemInfoHandler extends R
info.add( "start", new Date(core.getStartTime()) );
// Solr Home
- SimpleOrderedMap<Object> dirs = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> dirs = new SimpleOrderedMap<>();
dirs.add( "cwd" , new File( System.getProperty("user.dir")).getAbsolutePath() );
dirs.add( "instance", new File( core.getResourceLoader().getInstanceDir() ).getAbsolutePath() );
try {
@@ -150,7 +150,7 @@ public class SystemInfoHandler extends R
* Get system info
*/
public static SimpleOrderedMap<Object> getSystemInfo() {
- SimpleOrderedMap<Object> info = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> info = new SimpleOrderedMap<>();
OperatingSystemMXBean os = ManagementFactory.getOperatingSystemMXBean();
info.add( "name", os.getName() );
@@ -240,7 +240,7 @@ public class SystemInfoHandler extends R
*/
public static SimpleOrderedMap<Object> getJvmInfo()
{
- SimpleOrderedMap<Object> jvm = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> jvm = new SimpleOrderedMap<>();
final String javaVersion = System.getProperty("java.specification.version", "unknown");
final String javaVendor = System.getProperty("java.specification.vendor", "unknown");
@@ -256,16 +256,16 @@ public class SystemInfoHandler extends R
jvm.add( "name", jreVendor + " " + vmName );
// details
- SimpleOrderedMap<Object> java = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> java = new SimpleOrderedMap<>();
java.add( "vendor", javaVendor );
java.add( "name", javaName );
java.add( "version", javaVersion );
jvm.add( "spec", java );
- SimpleOrderedMap<Object> jre = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> jre = new SimpleOrderedMap<>();
jre.add( "vendor", jreVendor );
jre.add( "version", jreVersion );
jvm.add( "jre", jre );
- SimpleOrderedMap<Object> vm = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> vm = new SimpleOrderedMap<>();
vm.add( "vendor", vmVendor );
vm.add( "name", vmName );
vm.add( "version", vmVersion );
@@ -278,8 +278,8 @@ public class SystemInfoHandler extends R
// not thread safe, but could be thread local
DecimalFormat df = new DecimalFormat("#.#", DecimalFormatSymbols.getInstance(Locale.ROOT));
- SimpleOrderedMap<Object> mem = new SimpleOrderedMap<Object>();
- SimpleOrderedMap<Object> raw = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> mem = new SimpleOrderedMap<>();
+ SimpleOrderedMap<Object> raw = new SimpleOrderedMap<>();
long free = runtime.freeMemory();
long max = runtime.maxMemory();
long total = runtime.totalMemory();
@@ -300,7 +300,7 @@ public class SystemInfoHandler extends R
jvm.add("memory", mem);
// JMX properties -- probably should be moved to a different handler
- SimpleOrderedMap<Object> jmx = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> jmx = new SimpleOrderedMap<>();
try{
RuntimeMXBean mx = ManagementFactory.getRuntimeMXBean();
jmx.add( "bootclasspath", mx.getBootClassPath());
@@ -322,7 +322,7 @@ public class SystemInfoHandler extends R
}
private static SimpleOrderedMap<Object> getLuceneInfo() {
- SimpleOrderedMap<Object> info = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> info = new SimpleOrderedMap<>();
Package p = SolrCore.class.getPackage();
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/ThreadDumpHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/ThreadDumpHandler.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/ThreadDumpHandler.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/admin/ThreadDumpHandler.java Sun Mar 16 19:39:10 2014
@@ -38,13 +38,13 @@ public class ThreadDumpHandler extends R
@Override
public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws IOException
{
- SimpleOrderedMap<Object> system = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> system = new SimpleOrderedMap<>();
rsp.add( "system", system );
ThreadMXBean tmbean = ManagementFactory.getThreadMXBean();
// Thread Count
- SimpleOrderedMap<Object> nl = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> nl = new SimpleOrderedMap<>();
nl.add( "current",tmbean.getThreadCount() );
nl.add( "peak", tmbean.getPeakThreadCount() );
nl.add( "daemon", tmbean.getDaemonThreadCount() );
@@ -55,7 +55,7 @@ public class ThreadDumpHandler extends R
long[] tids = tmbean.findMonitorDeadlockedThreads();
if (tids != null) {
tinfos = tmbean.getThreadInfo(tids, Integer.MAX_VALUE);
- NamedList<SimpleOrderedMap<Object>> lst = new NamedList<SimpleOrderedMap<Object>>();
+ NamedList<SimpleOrderedMap<Object>> lst = new NamedList<>();
for (ThreadInfo ti : tinfos) {
if (ti != null) {
lst.add( "thread", getThreadInfo( ti, tmbean ) );
@@ -67,7 +67,7 @@ public class ThreadDumpHandler extends R
// Now show all the threads....
tids = tmbean.getAllThreadIds();
tinfos = tmbean.getThreadInfo(tids, Integer.MAX_VALUE);
- NamedList<SimpleOrderedMap<Object>> lst = new NamedList<SimpleOrderedMap<Object>>();
+ NamedList<SimpleOrderedMap<Object>> lst = new NamedList<>();
for (ThreadInfo ti : tinfos) {
if (ti != null) {
lst.add( "thread", getThreadInfo( ti, tmbean ) );
@@ -81,7 +81,7 @@ public class ThreadDumpHandler extends R
//--------------------------------------------------------------------------------
private static SimpleOrderedMap<Object> getThreadInfo( ThreadInfo ti, ThreadMXBean tmbean ) {
- SimpleOrderedMap<Object> info = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> info = new SimpleOrderedMap<>();
long tid = ti.getThreadId();
info.add( "id", tid );
@@ -104,7 +104,7 @@ public class ThreadDumpHandler extends R
}
if (ti.getLockOwnerName() != null) {
- SimpleOrderedMap<Object> owner = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> owner = new SimpleOrderedMap<>();
owner.add( "name", ti.getLockOwnerName() );
owner.add( "id", ti.getLockOwnerId() );
}
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/DebugComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/DebugComponent.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/DebugComponent.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/DebugComponent.java Sun Mar 16 19:39:10 2014
@@ -106,7 +106,7 @@ public class DebugComponent extends Sear
if (null != rb.getDebugInfo() ) {
if (rb.isDebugQuery() && null != rb.getFilters() ) {
info.add("filter_queries",rb.req.getParams().getParams(FQ));
- List<String> fqs = new ArrayList<String>(rb.getFilters().size());
+ List<String> fqs = new ArrayList<>(rb.getFilters().size());
for (Query fq : rb.getFilters()) {
fqs.add(QueryParsing.toString(fq, rb.req.getSchema()));
}
@@ -175,7 +175,7 @@ public class DebugComponent extends Sear
@SuppressWarnings("unchecked")
NamedList<Object> stageList = (NamedList<Object>) ((NamedList<Object>)rb.getDebugInfo().get("track")).get(stages.get(rb.stage));
if(stageList == null) {
- stageList = new NamedList<Object>();
+ stageList = new NamedList<>();
rb.addDebug(stageList, "track", stages.get(rb.stage));
}
for(ShardResponse response: sreq.responses) {
@@ -184,7 +184,7 @@ public class DebugComponent extends Sear
}
}
- private Set<String> excludeSet = new HashSet<String>(Arrays.asList("explain"));
+ private Set<String> excludeSet = new HashSet<>(Arrays.asList("explain"));
@Override
public void finishStage(ResponseBuilder rb) {
@@ -207,19 +207,19 @@ public class DebugComponent extends Sear
// 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<Object>(id, sexplain.getVal(i));
+ arr[idx] = new NamedList.NamedListEntry<>(id, sexplain.getVal(i));
}
}
}
}
if (rb.isDebugResults()) {
- explain = SolrPluginUtils.removeNulls(new SimpleOrderedMap<Object>(arr));
+ explain = SolrPluginUtils.removeNulls(new SimpleOrderedMap<>(arr));
}
if (info == null) {
// No responses were received from shards. Show local query info.
- info = new SimpleOrderedMap<Object>();
+ info = new SimpleOrderedMap<>();
SolrPluginUtils.doStandardQueryDebug(
rb.req, rb.getQueryString(), rb.getQuery(), rb.isDebugQuery(), info);
if (rb.isDebugQuery() && rb.getQparser() != null) {
@@ -243,7 +243,7 @@ public class DebugComponent extends Sear
private NamedList<String> getTrackResponse(ShardResponse shardResponse) {
- NamedList<String> namedList = new NamedList<String>();
+ NamedList<String> namedList = new NamedList<>();
NamedList<Object> responseNL = shardResponse.getSolrResponse().getResponse();
@SuppressWarnings("unchecked")
NamedList<Object> responseHeader = (NamedList<Object>)responseNL.get("responseHeader");
@@ -295,7 +295,7 @@ public class DebugComponent extends Sear
if (source instanceof NamedList && dest instanceof NamedList) {
- NamedList<Object> tmp = new NamedList<Object>();
+ NamedList<Object> tmp = new NamedList<>();
@SuppressWarnings("unchecked")
NamedList<Object> sl = (NamedList<Object>)source;
@SuppressWarnings("unchecked")
@@ -329,7 +329,7 @@ public class DebugComponent extends Sear
}
// merge unlike elements in a list
- List<Object> t = new ArrayList<Object>();
+ List<Object> t = new ArrayList<>();
t.add(dest);
t.add(source);
return t;
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java Sun Mar 16 19:39:10 2014
@@ -141,7 +141,7 @@ public class FacetComponent extends Sear
}
if (refinements == null) {
- refinements = new ArrayList<String>();
+ refinements = new ArrayList<>();
}
refinements.add(facetCommand);
@@ -470,7 +470,7 @@ public class FacetComponent extends Sear
dff.needRefinements = true;
List<String> lst = dff._toRefine[shardNum];
if (lst == null) {
- lst = dff._toRefine[shardNum] = new ArrayList<String>();
+ lst = dff._toRefine[shardNum] = new ArrayList<>();
}
lst.add(sfc.name);
}
@@ -526,19 +526,19 @@ public class FacetComponent extends Sear
FacetInfo fi = rb._facetInfo;
- NamedList<Object> facet_counts = new SimpleOrderedMap<Object>();
+ NamedList<Object> facet_counts = new SimpleOrderedMap<>();
- NamedList<Number> facet_queries = new SimpleOrderedMap<Number>();
+ NamedList<Number> facet_queries = new SimpleOrderedMap<>();
facet_counts.add("facet_queries",facet_queries);
for (QueryFacet qf : fi.queryFacets.values()) {
facet_queries.add(qf.getKey(), num(qf.count));
}
- NamedList<Object> facet_fields = new SimpleOrderedMap<Object>();
+ NamedList<Object> facet_fields = new SimpleOrderedMap<>();
facet_counts.add("facet_fields", facet_fields);
for (DistribFieldFacet dff : fi.facets.values()) {
- NamedList<Object> fieldCounts = new NamedList<Object>(); // order is more important for facets
+ NamedList<Object> fieldCounts = new NamedList<>(); // order is more important for facets
facet_fields.add(dff.getKey(), fieldCounts);
ShardFacetCount[] counts;
@@ -634,13 +634,13 @@ public class FacetComponent extends Sear
public LinkedHashMap<String,QueryFacet> queryFacets;
public LinkedHashMap<String,DistribFieldFacet> facets;
public SimpleOrderedMap<SimpleOrderedMap<Object>> dateFacets
- = new SimpleOrderedMap<SimpleOrderedMap<Object>>();
+ = new SimpleOrderedMap<>();
public SimpleOrderedMap<SimpleOrderedMap<Object>> rangeFacets
- = new SimpleOrderedMap<SimpleOrderedMap<Object>>();
+ = new SimpleOrderedMap<>();
void parse(SolrParams params, ResponseBuilder rb) {
- queryFacets = new LinkedHashMap<String,QueryFacet>();
- facets = new LinkedHashMap<String,DistribFieldFacet>();
+ queryFacets = new LinkedHashMap<>();
+ facets = new LinkedHashMap<>();
String[] facetQs = params.getParams(FacetParams.FACET_QUERY);
if (facetQs != null) {
@@ -766,7 +766,7 @@ public class FacetComponent extends Sear
// the max possible count for a missing term for each shard (indexed by shardNum)
public long[] missingMax;
public FixedBitSet[] counted; // a bitset for each shard, keeping track of which terms seen
- public HashMap<String,ShardFacetCount> counts = new HashMap<String,ShardFacetCount>(128);
+ public HashMap<String,ShardFacetCount> counts = new HashMap<>(128);
public int termNum;
public int initialLimit; // how many terms requested in first phase
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/FieldFacetStats.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/FieldFacetStats.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/FieldFacetStats.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/FieldFacetStats.java Sun Mar 16 19:39:10 2014
@@ -73,8 +73,8 @@ public class FieldFacetStats {
topLevelReader = searcher.getAtomicReader();
valueSource = facet_sf.getType().getValueSource(facet_sf, null);
- facetStatsValues = new HashMap<String, StatsValues>();
- facetStatsTerms = new ArrayList<HashMap<String, Integer>>();
+ facetStatsValues = new HashMap<>();
+ facetStatsTerms = new ArrayList<>();
}
private StatsValues getStatsValues(String key) throws IOException {
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java Sun Mar 16 19:39:10 2014
@@ -182,7 +182,7 @@ public class HighlightComponent extends
String id = hl.getName(i);
ShardDoc sdoc = rb.resultIds.get(id);
int idx = sdoc.positionInResponse;
- arr[idx] = new NamedList.NamedListEntry<Object>(id, hl.getVal(i));
+ arr[idx] = new NamedList.NamedListEntry<>(id, hl.getVal(i));
}
}
}
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java Sun Mar 16 19:39:10 2014
@@ -53,6 +53,7 @@ import java.util.concurrent.Callable;
import java.util.concurrent.CompletionService;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
public class HttpShardHandler extends ShardHandler {
@@ -67,12 +68,12 @@ public class HttpShardHandler extends Sh
this.httpClient = httpClient;
this.httpShardHandlerFactory = httpShardHandlerFactory;
completionService = httpShardHandlerFactory.newCompletionService();
- pending = new HashSet<Future<ShardResponse>>();
+ pending = new HashSet<>();
// maps "localhost:8983|localhost:7574" to a shuffled List("http://localhost:8983","http://localhost:7574")
// This is primarily to keep track of what order we should use to query the replicas of a shard
// so that we use the same replica for all phases of a distributed request.
- shardToURLs = new HashMap<String,List<String>>();
+ shardToURLs = new HashMap<>();
}
@@ -127,7 +128,7 @@ public class HttpShardHandler extends Sh
srsp.setShard(shard);
SimpleSolrResponse ssr = new SimpleSolrResponse();
srsp.setSolrResponse(ssr);
- long startTime = System.currentTimeMillis();
+ long startTime = System.nanoTime();
try {
params.remove(CommonParams.WT); // use default (currently javabin)
@@ -174,7 +175,7 @@ public class HttpShardHandler extends Sh
}
}
- ssr.elapsedTime = System.currentTimeMillis() - startTime;
+ ssr.elapsedTime = TimeUnit.MILLISECONDS.convert(System.nanoTime() - startTime, TimeUnit.NANOSECONDS);
return srsp;
}
@@ -284,7 +285,7 @@ public class HttpShardHandler extends Sh
if(shardKeys == null) shardKeys = params.get(ShardParams.SHARD_KEYS);//eprecated
// This will be the complete list of slices we need to query for this request.
- slices = new HashMap<String,Slice>();
+ slices = new HashMap<>();
// we need to find out what collections this request is for.
@@ -339,6 +340,7 @@ public class HttpShardHandler extends Sh
if (shortCircuit) {
rb.isDistrib = false;
+ rb.shortCircuitedURL = ZkCoreNodeProps.getCoreUrl(zkController.getBaseUrl(), coreDescriptor.getName());
return;
}
// We shouldn't need to do anything to handle "shard.rows" since it was previously meant to be an optimization?
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/MoreLikeThisComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/MoreLikeThisComponent.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/MoreLikeThisComponent.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/MoreLikeThisComponent.java Sun Mar 16 19:39:10 2014
@@ -100,7 +100,7 @@ public class MoreLikeThisComponent exten
NamedList<BooleanQuery> bQuery = mlt.getMoreLikeTheseQuery(rb
.getResults().docList);
- NamedList<String> temp = new NamedList<String>();
+ NamedList<String> temp = new NamedList<>();
Iterator<Entry<String,BooleanQuery>> idToQueryIt = bQuery.iterator();
@@ -164,7 +164,7 @@ public class MoreLikeThisComponent exten
// 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>();
+ Map<Object,SolrDocumentList> tempResults = new LinkedHashMap<>();
int mltcount = rb.req.getParams().getInt(MoreLikeThisParams.DOC_COUNT, 5);
String keyName = rb.req.getSchema().getUniqueKeyField().getName();
@@ -221,8 +221,8 @@ public class MoreLikeThisComponent exten
*/
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>();
+ NamedList<SolrDocumentList> result = new NamedList<>();
+ TreeMap<Integer,Object> sortingMap = new TreeMap<>();
for (Entry<Object,ShardDoc> next : resultIds.entrySet()) {
sortingMap.put(next.getValue().positionInResponse, next.getKey());
}
@@ -241,10 +241,10 @@ public class MoreLikeThisComponent exten
public SolrDocumentList mergeSolrDocumentList(SolrDocumentList one,
SolrDocumentList two, int maxSize, String idField) {
- List<SolrDocument> l = new ArrayList<SolrDocument>();
+ List<SolrDocument> l = new ArrayList<>();
// De-dup records sets. Shouldn't happen if indexed correctly.
- Map<String,SolrDocument> map = new HashMap<String,SolrDocument>();
+ Map<String,SolrDocument> map = new HashMap<>();
for (SolrDocument doc : one) {
Object id = doc.getFieldValue(idField);
assert id != null : doc.toString();
@@ -254,7 +254,7 @@ public class MoreLikeThisComponent exten
map.put(doc.getFieldValue(idField).toString(), doc);
}
- l = new ArrayList<SolrDocument>(map.values());
+ l = new ArrayList<>(map.values());
// Comparator to sort docs based on score. null scores/docs are set to 0.
@@ -352,12 +352,12 @@ public class MoreLikeThisComponent exten
IndexSchema schema = searcher.getSchema();
MoreLikeThisHandler.MoreLikeThisHelper mltHelper = new MoreLikeThisHandler.MoreLikeThisHelper(
p, searcher);
- NamedList<DocList> mlt = new SimpleOrderedMap<DocList>();
+ NamedList<DocList> mlt = new SimpleOrderedMap<>();
DocIterator iterator = docs.iterator();
SimpleOrderedMap<Object> dbg = null;
if (rb.isDebug()) {
- dbg = new SimpleOrderedMap<Object>();
+ dbg = new SimpleOrderedMap<>();
}
while (iterator.hasNext()) {
@@ -369,12 +369,12 @@ public class MoreLikeThisComponent exten
mlt.add(name, sim.docList);
if (dbg != null) {
- SimpleOrderedMap<Object> docDbg = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> docDbg = new SimpleOrderedMap<>();
docDbg.add("rawMLTQuery", mltHelper.getRawMLTQuery().toString());
docDbg
.add("boostedMLTQuery", mltHelper.getBoostedMLTQuery().toString());
docDbg.add("realMLTQuery", mltHelper.getRealMLTQuery().toString());
- SimpleOrderedMap<Object> explains = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> explains = new SimpleOrderedMap<>();
DocIterator mltIte = sim.docList.iterator();
while (mltIte.hasNext()) {
int mltid = mltIte.nextDoc();
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/PivotFacetHelper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/PivotFacetHelper.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/PivotFacetHelper.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/PivotFacetHelper.java Sun Mar 16 19:39:10 2014
@@ -60,7 +60,7 @@ public class PivotFacetHelper extends Si
if (!rb.doFacets || pivots == null)
return null;
- SimpleOrderedMap<List<NamedList<Object>>> pivotResponse = new SimpleOrderedMap<List<NamedList<Object>>>();
+ SimpleOrderedMap<List<NamedList<Object>>> pivotResponse = new SimpleOrderedMap<>();
for (String pivot : pivots) {
//ex: pivot == "features,cat" or even "{!ex=mytag}features,cat"
try {
@@ -79,7 +79,7 @@ public class PivotFacetHelper extends Si
String field = fields[0];
String subField = fields[1];
- Deque<String> fnames = new LinkedList<String>();
+ Deque<String> fnames = new LinkedList<>();
for( int i=fields.length-1; i>1; i-- ) {
fnames.push( fields[i] );
}
@@ -106,7 +106,7 @@ public class PivotFacetHelper extends Si
String nextField = fnames.poll();
- List<NamedList<Object>> values = new ArrayList<NamedList<Object>>( superFacets.size() );
+ List<NamedList<Object>> values = new ArrayList<>( superFacets.size() );
for (Map.Entry<String, Integer> kv : superFacets) {
// Only sub-facet if parent facet has positive count - still may not be any values for the sub-field though
if (kv.getValue() >= minMatch) {
@@ -118,7 +118,7 @@ public class PivotFacetHelper extends Si
// constructing Term objects used in TermQueries that may be cached.
BytesRef termval = null;
- SimpleOrderedMap<Object> pivot = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> pivot = new SimpleOrderedMap<>();
pivot.add( "field", field );
if (null == fieldValue) {
pivot.add( "value", null );
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java Sun Mar 16 19:39:10 2014
@@ -17,6 +17,21 @@
package org.apache.solr.handler.component;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
import org.apache.lucene.index.AtomicReaderContext;
import org.apache.lucene.index.IndexReaderContext;
import org.apache.lucene.index.ReaderUtil;
@@ -25,12 +40,15 @@ import org.apache.lucene.search.BooleanQ
import org.apache.lucene.search.FieldComparator;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
+import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.Sort;
import org.apache.lucene.search.SortField;
+import org.apache.lucene.search.Weight;
import org.apache.lucene.search.grouping.GroupDocs;
import org.apache.lucene.search.grouping.SearchGroup;
import org.apache.lucene.search.grouping.TopGroups;
import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.InPlaceMergeSorter;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
@@ -81,22 +99,6 @@ import org.apache.solr.search.grouping.e
import org.apache.solr.search.grouping.endresulttransformer.SimpleEndResultTransformer;
import org.apache.solr.util.SolrPluginUtils;
-import org.apache.commons.lang.StringUtils;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
/**
* TODO!
*
@@ -161,7 +163,7 @@ public class QueryComponent extends Sear
if (fqs!=null && fqs.length!=0) {
List<Query> filters = rb.getFilters();
// if filters already exists, make a copy instead of modifying the original
- filters = filters == null ? new ArrayList<Query>(fqs.length) : new ArrayList<Query>(filters);
+ filters = filters == null ? new ArrayList<Query>(fqs.length) : new ArrayList<>(filters);
for (String fq : fqs) {
if (fq != null && fq.trim().length()!=0) {
QParser fqp = QParser.getParser(fq, null, req);
@@ -289,7 +291,7 @@ public class QueryComponent extends Sear
res.docList = new DocSlice(0, docs, luceneIds, null, docs, 0);
if (rb.isNeedDocSet()) {
// TODO: create a cache for this!
- List<Query> queries = new ArrayList<Query>();
+ List<Query> queries = new ArrayList<>();
queries.add(rb.getQuery());
List<Query> filters = rb.getFilters();
if (filters != null) queries.addAll(filters);
@@ -351,9 +353,9 @@ public class QueryComponent extends Sear
topGroupsParam = new String[0];
}
- List<SearchGroup<BytesRef>> topGroups = new ArrayList<SearchGroup<BytesRef>>(topGroupsParam.length);
+ List<SearchGroup<BytesRef>> topGroups = new ArrayList<>(topGroupsParam.length);
for (String topGroup : topGroupsParam) {
- SearchGroup<BytesRef> searchGroup = new SearchGroup<BytesRef>();
+ SearchGroup<BytesRef> searchGroup = new SearchGroup<>();
if (!topGroup.equals(TopGroupsShardRequestFactory.GROUP_NULL_VALUE)) {
searchGroup.groupValue = new BytesRef(searcher.getSchema().getField(field).getType().readableToIndexed(topGroup));
}
@@ -486,7 +488,7 @@ public class QueryComponent extends Sear
// TODO: See SOLR-5595
boolean fsv = req.getParams().getBool(ResponseBuilder.FIELD_SORT_VALUES,false);
if(fsv){
- NamedList<Object[]> sortVals = new NamedList<Object[]>(); // order is important for the sort fields
+ NamedList<Object[]> sortVals = new NamedList<>(); // order is important for the sort fields
IndexReaderContext topReaderContext = searcher.getTopReaderContext();
List<AtomicReaderContext> leaves = topReaderContext.leaves();
AtomicReaderContext currentLeaf = null;
@@ -500,12 +502,32 @@ public class QueryComponent extends Sear
// sort ids from lowest to highest so we can access them in order
int nDocs = docList.size();
- long[] sortedIds = new long[nDocs];
- DocIterator it = rb.getResults().docList.iterator();
+ final long[] sortedIds = new long[nDocs];
+ final float[] scores = new float[nDocs]; // doc scores, parallel to sortedIds
+ DocList docs = rb.getResults().docList;
+ DocIterator it = docs.iterator();
for (int i=0; i<nDocs; i++) {
sortedIds[i] = (((long)it.nextDoc()) << 32) | i;
+ scores[i] = docs.hasScores() ? it.score() : Float.NaN;
}
- Arrays.sort(sortedIds);
+
+ // sort ids and scores together
+ new InPlaceMergeSorter() {
+ @Override
+ protected void swap(int i, int j) {
+ long tmpId = sortedIds[i];
+ float tmpScore = scores[i];
+ sortedIds[i] = sortedIds[j];
+ scores[i] = scores[j];
+ sortedIds[j] = tmpId;
+ scores[j] = tmpScore;
+ }
+
+ @Override
+ protected int compare(int i, int j) {
+ return Long.compare(sortedIds[i], sortedIds[j]);
+ }
+ }.sort(0, sortedIds.length);
SortSpec sortSpec = rb.getSortSpec();
Sort sort = searcher.weightSort(sortSpec.getSort());
@@ -527,7 +549,9 @@ public class QueryComponent extends Sear
int lastIdx = -1;
int idx = 0;
- for (long idAndPos : sortedIds) {
+ for (int i = 0; i < sortedIds.length; ++i) {
+ long idAndPos = sortedIds[i];
+ float score = scores[i];
int doc = (int)(idAndPos >>> 32);
int position = (int)idAndPos;
@@ -546,6 +570,7 @@ public class QueryComponent extends Sear
}
doc -= currentLeaf.docBase; // adjust for what segment this is in
+ comparator.setScorer(new FakeScorer(doc, score));
comparator.copy(0, doc);
Object val = comparator.value(0);
if (null != ft) val = ft.marshalSortValue(val);
@@ -689,7 +714,7 @@ public class QueryComponent extends Sear
for (String field : groupSpec.getFields()) {
rb.mergedTopGroups.put(field, new TopGroups(null, null, 0, 0, new GroupDocs[]{}, Float.NaN));
}
- rb.resultIds = new HashMap<Object, ShardDoc>();
+ rb.resultIds = new HashMap<>();
}
EndResultTransformer.SolrDocumentSource solrDocumentSource = new EndResultTransformer.SolrDocumentSource() {
@@ -711,7 +736,7 @@ public class QueryComponent extends Sear
} else {
return;
}
- Map<String, Object> combinedMap = new LinkedHashMap<String, Object>();
+ Map<String, Object> combinedMap = new LinkedHashMap<>();
combinedMap.putAll(rb.mergedTopGroups);
combinedMap.putAll(rb.mergedQueryCommandResults);
endResultTransformer.transform(combinedMap, rb, solrDocumentSource);
@@ -810,7 +835,7 @@ public class QueryComponent extends Sear
// id to shard mapping, to eliminate any accidental dups
- HashMap<Object,String> uniqueDoc = new HashMap<Object,String>();
+ HashMap<Object,String> uniqueDoc = new HashMap<>();
// Merge the docs via a priority queue so we don't have to sort *all* of the
// documents... we only need to order the top (rows+start)
@@ -819,7 +844,7 @@ public class QueryComponent extends Sear
NamedList<Object> shardInfo = null;
if(rb.req.getParams().getBool(ShardParams.SHARDS_INFO, false)) {
- shardInfo = new SimpleOrderedMap<Object>();
+ shardInfo = new SimpleOrderedMap<>();
rb.rsp.getValues().add(ShardParams.SHARDS_INFO,shardInfo);
}
@@ -830,7 +855,7 @@ public class QueryComponent extends Sear
SolrDocumentList docs = null;
if(shardInfo!=null) {
- SimpleOrderedMap<Object> nl = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> nl = new SimpleOrderedMap<>();
if (srsp.getException() != null) {
Throwable t = srsp.getException();
@@ -927,7 +952,7 @@ public class QueryComponent extends Sear
int resultSize = queue.size() - ss.getOffset();
resultSize = Math.max(0, resultSize); // there may not be any docs in range
- Map<Object,ShardDoc> resultIds = new HashMap<Object,ShardDoc>();
+ Map<Object,ShardDoc> resultIds = new HashMap<>();
for (int i=resultSize-1; i>=0; i--) {
ShardDoc shardDoc = queue.pop();
shardDoc.positionInResponse = i;
@@ -996,7 +1021,7 @@ public class QueryComponent extends Sear
}
}
SortField[] sortFields = lastCursorMark.getSortSpec().getSort().getSort();
- List<Object> nextCursorMarkValues = new ArrayList<Object>(sortFields.length);
+ List<Object> nextCursorMarkValues = new ArrayList<>(sortFields.length);
for (SortField sf : sortFields) {
if (sf.getType().equals(SortField.Type.SCORE)) {
assert null != lastDoc.score : "lastDoc has null score";
@@ -1059,11 +1084,11 @@ public class QueryComponent extends Sear
// unless those requests always go to the final destination shard
// for each shard, collect the documents for that shard.
- HashMap<String, Collection<ShardDoc>> shardMap = new HashMap<String,Collection<ShardDoc>>();
+ HashMap<String, Collection<ShardDoc>> shardMap = new HashMap<>();
for (ShardDoc sdoc : rb.resultIds.values()) {
Collection<ShardDoc> shardDocs = shardMap.get(sdoc.shard);
if (shardDocs == null) {
- shardDocs = new ArrayList<ShardDoc>();
+ shardDocs = new ArrayList<>();
shardMap.put(sdoc.shard, shardDocs);
}
shardDocs.add(sdoc);
@@ -1094,7 +1119,7 @@ public class QueryComponent extends Sear
sreq.params.add(CommonParams.FL, uniqueField.getName());
}
- ArrayList<String> ids = new ArrayList<String>(shardDocs.size());
+ ArrayList<String> ids = new ArrayList<>(shardDocs.size());
for (ShardDoc shardDoc : shardDocs) {
// TODO: depending on the type, we may need more tha a simple toString()?
ids.add(shardDoc.id.toString());
@@ -1157,4 +1182,60 @@ public class QueryComponent extends Sear
public URL[] getDocs() {
return null;
}
+
+ /**
+ * Fake scorer for a single document
+ *
+ * TODO: when SOLR-5595 is fixed, this wont be needed, as we dont need to recompute sort values here from the comparator
+ */
+ private static class FakeScorer extends Scorer {
+ final int docid;
+ final float score;
+
+ FakeScorer(int docid, float score) {
+ super(null);
+ this.docid = docid;
+ this.score = score;
+ }
+
+ @Override
+ public int docID() {
+ return docid;
+ }
+
+ @Override
+ public float score() throws IOException {
+ return score;
+ }
+
+ @Override
+ public int freq() throws IOException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public int nextDoc() throws IOException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public int advance(int target) throws IOException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public long cost() {
+ return 1;
+ }
+
+ @Override
+ public Weight getWeight() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Collection<ChildScorer> getChildren() {
+ throw new UnsupportedOperationException();
+ }
+ }
}
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java Sun Mar 16 19:39:10 2014
@@ -113,7 +113,7 @@ public class QueryElevationComponent ext
// The key is null if loaded from the config directory, and
// is never re-loaded.
final Map<IndexReader, Map<String, ElevationObj>> elevationCache =
- new WeakHashMap<IndexReader, Map<String, ElevationObj>>();
+ new WeakHashMap<>();
class ElevationObj {
final String text;
@@ -127,12 +127,12 @@ public class QueryElevationComponent ext
ElevationObj(String qstr, List<String> elevate, List<String> exclude) throws IOException {
this.text = qstr;
this.analyzed = getAnalyzedQuery(this.text);
- this.ids = new HashSet<String>();
- this.excludeIds = new HashSet<String>();
+ this.ids = new HashSet<>();
+ this.excludeIds = new HashSet<>();
this.include = new BooleanQuery();
this.include.setBoost(0);
- this.priority = new HashMap<BytesRef, Integer>();
+ this.priority = new HashMap<>();
int max = elevate.size() + 5;
for (String id : elevate) {
id = idSchemaFT.readableToIndexed(id);
@@ -279,7 +279,7 @@ public class QueryElevationComponent ext
//load up the elevation map
private Map<String, ElevationObj> loadElevationMap(Config cfg) throws IOException {
XPath xpath = XPathFactory.newInstance().newXPath();
- Map<String, ElevationObj> map = new HashMap<String, ElevationObj>();
+ Map<String, ElevationObj> map = new HashMap<>();
NodeList nodes = (NodeList) cfg.evaluate("elevate/query", XPathConstants.NODESET);
for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.item(i);
@@ -293,8 +293,8 @@ public class QueryElevationComponent ext
"query requires '<doc .../>' child");
}
- ArrayList<String> include = new ArrayList<String>();
- ArrayList<String> exclude = new ArrayList<String>();
+ ArrayList<String> include = new ArrayList<>();
+ ArrayList<String> exclude = new ArrayList<>();
for (int j = 0; j < children.getLength(); j++) {
Node child = children.item(j);
String id = DOMUtil.getAttr(child, "id", "missing 'id'");
@@ -333,7 +333,7 @@ public class QueryElevationComponent ext
Map<String, ElevationObj> elev = elevationCache.get(reader);
if (elev == null) {
- elev = new HashMap<String, ElevationObj>();
+ elev = new HashMap<>();
elevationCache.put(reader, elev);
}
ElevationObj obj = new ElevationObj(query, Arrays.asList(ids), Arrays.asList(ex));
@@ -463,14 +463,14 @@ public class QueryElevationComponent ext
List<String> match = null;
if (booster != null) {
// Extract the elevated terms into a list
- match = new ArrayList<String>(booster.priority.size());
+ match = new ArrayList<>(booster.priority.size());
for (Object o : booster.include.clauses()) {
TermQuery tq = (TermQuery) ((BooleanClause) o).getQuery();
match.add(tq.getTerm().text());
}
}
- SimpleOrderedMap<Object> dbg = new SimpleOrderedMap<Object>();
+ SimpleOrderedMap<Object> dbg = new SimpleOrderedMap<>();
dbg.add("q", qstr);
dbg.add("match", match);
if (rb.isDebugQuery()) {
@@ -490,8 +490,8 @@ public class QueryElevationComponent ext
SortField[] currentSorts = current.getSort().getSort();
List<SchemaField> currentFields = current.getSchemaFields();
- ArrayList<SortField> sorts = new ArrayList<SortField>(currentSorts.length + 1);
- List<SchemaField> fields = new ArrayList<SchemaField>(currentFields.size() + 1);
+ ArrayList<SortField> sorts = new ArrayList<>(currentSorts.length + 1);
+ List<SchemaField> fields = new ArrayList<>(currentFields.size() + 1);
// Perhaps force it to always sort by score
if (force && currentSorts[0].getType() != SortField.Type.SCORE) {
@@ -568,7 +568,7 @@ public class QueryElevationComponent ext
private int topVal;
private TermsEnum termsEnum;
private DocsEnum docsEnum;
- Set<String> seen = new HashSet<String>(elevations.ids.size());
+ Set<String> seen = new HashSet<>(elevations.ids.size());
@Override
public int compare(int slot1, int slot2) {
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java Sun Mar 16 19:39:10 2014
@@ -111,7 +111,7 @@ public class RealTimeGetComponent extend
String[] allIds = id==null ? new String[0] : id;
if (ids != null) {
- List<String> lst = new ArrayList<String>();
+ List<String> lst = new ArrayList<>();
for (String s : allIds) {
lst.add(s);
}
@@ -305,7 +305,7 @@ public class RealTimeGetComponent extend
if (sf != null && schema.isCopyFieldTarget(sf)) continue;
if (sf != null && sf.multiValued()) {
- List<Object> vals = new ArrayList<Object>();
+ List<Object> vals = new ArrayList<>();
vals.add( f );
out.setField( f.name(), vals );
}
@@ -354,7 +354,7 @@ public class RealTimeGetComponent extend
return ResponseBuilder.STAGE_DONE;
}
- List<String> allIds = new ArrayList<String>();
+ List<String> allIds = new ArrayList<>();
if (id1 != null) {
for (String s : id1) {
allIds.add(s);
@@ -379,13 +379,13 @@ public class RealTimeGetComponent extend
DocCollection coll = clusterState.getCollection(collection);
- Map<String, List<String>> sliceToId = new HashMap<String, List<String>>();
+ Map<String, List<String>> sliceToId = new HashMap<>();
for (String id : allIds) {
Slice slice = coll.getRouter().getTargetSlice(id, null, params, coll);
List<String> idsForShard = sliceToId.get(slice.getName());
if (idsForShard == null) {
- idsForShard = new ArrayList<String>(2);
+ idsForShard = new ArrayList<>(2);
sliceToId.put(slice.getName(), idsForShard);
}
idsForShard.add(id);
@@ -582,7 +582,7 @@ public class RealTimeGetComponent extend
List<String> versions = StrUtils.splitSmart(versionsStr, ",", true);
- List<Object> updates = new ArrayList<Object>(versions.size());
+ List<Object> updates = new ArrayList<>(versions.size());
long minVersion = Long.MAX_VALUE;
Modified: lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/ResponseBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/ResponseBuilder.java?rev=1578144&r1=1578143&r2=1578144&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/ResponseBuilder.java (original)
+++ lucene/dev/branches/lucene5376_2/solr/core/src/java/org/apache/solr/handler/component/ResponseBuilder.java Sun Mar 16 19:39:10 2014
@@ -55,6 +55,7 @@ public class ResponseBuilder
public SolrQueryResponse rsp;
public boolean doHighlights;
public boolean doFacets;
+ public boolean doExpand;
public boolean doStats;
public boolean doTerms;
@@ -128,7 +129,7 @@ public class ResponseBuilder
public int shards_start = -1;
public List<ShardRequest> outgoing; // requests to be sent
public List<ShardRequest> finished; // requests that have received responses from all shards
-
+ public String shortCircuitedURL;
public int getShardNum(String shard) {
for (int i = 0; i < shards.length; i++) {
@@ -167,12 +168,12 @@ public class ResponseBuilder
SimpleOrderedMap<List<NamedList<Object>>> _pivots;
// Context fields for grouping
- public final Map<String, Collection<SearchGroup<BytesRef>>> mergedSearchGroups = new HashMap<String, Collection<SearchGroup<BytesRef>>>();
- public final Map<String, Integer> mergedGroupCounts = new HashMap<String, Integer>();
- public final Map<String, Map<SearchGroup<BytesRef>, Set<String>>> searchGroupToShards = new HashMap<String, Map<SearchGroup<BytesRef>, Set<String>>>();
- public final Map<String, TopGroups<BytesRef>> mergedTopGroups = new HashMap<String, TopGroups<BytesRef>>();
- public final Map<String, QueryCommandResult> mergedQueryCommandResults = new HashMap<String, QueryCommandResult>();
- public final Map<Object, SolrDocument> retrievedDocuments = new HashMap<Object, SolrDocument>();
+ public final Map<String, Collection<SearchGroup<BytesRef>>> mergedSearchGroups = new HashMap<>();
+ public final Map<String, Integer> mergedGroupCounts = new HashMap<>();
+ public final Map<String, Map<SearchGroup<BytesRef>, Set<String>>> searchGroupToShards = new HashMap<>();
+ public final Map<String, TopGroups<BytesRef>> mergedTopGroups = new HashMap<>();
+ public final Map<String, QueryCommandResult> mergedQueryCommandResults = new HashMap<>();
+ public final Map<Object, SolrDocument> retrievedDocuments = new HashMap<>();
public int totalHitCount; // Hit count used when distributed grouping is performed.
// Used for timeAllowed parameter. First phase elapsed time is subtracted from the time allowed for the second phase.
public int firstPhaseElapsedTime;
@@ -184,14 +185,14 @@ public class ResponseBuilder
public void addDebugInfo( String name, Object val )
{
if( debugInfo == null ) {
- debugInfo = new SimpleOrderedMap<Object>();
+ debugInfo = new SimpleOrderedMap<>();
}
debugInfo.add( name, val );
}
public void addDebug(Object val, String... path) {
if( debugInfo == null ) {
- debugInfo = new SimpleOrderedMap<Object>();
+ debugInfo = new SimpleOrderedMap<>();
}
NamedList<Object> target = debugInfo;
@@ -199,7 +200,7 @@ public class ResponseBuilder
String elem = path[i];
NamedList<Object> newTarget = (NamedList<Object>)debugInfo.get(elem);
if (newTarget == null) {
- newTarget = new SimpleOrderedMap<Object>();
+ newTarget = new SimpleOrderedMap<>();
target.add(elem, newTarget);
}
target = newTarget;