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 2015/09/02 15:06:22 UTC
svn commit: r1700800 [12/24] - in /lucene/dev/branches/lucene6699: ./
dev-tools/ dev-tools/eclipse/ dev-tools/idea/.idea/ dev-tools/scripts/
lucene/ lucene/analysis/ lucene/analysis/common/
lucene/analysis/common/src/java/org/apache/lucene/analysis/ar/...
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ScoreAugmenter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ScoreAugmenter.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ScoreAugmenter.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ScoreAugmenter.java Wed Sep 2 13:06:13 2015
@@ -17,7 +17,6 @@
package org.apache.solr.response.transform;
import org.apache.solr.common.SolrDocument;
-import org.apache.solr.request.SolrQueryRequest;
/**
* Simple Augmenter that adds the score
@@ -40,11 +39,9 @@ public class ScoreAugmenter extends DocT
}
@Override
- public void transform(SolrDocument doc, int docid) {
+ public void transform(SolrDocument doc, int docid, float score) {
if( context != null && context.wantsScores() ) {
- if( context.getDocIterator() != null ) {
- doc.setField( name, context.getDocIterator().score() );
- }
+ doc.setField( name, score );
}
}
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ValueAugmenterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ValueAugmenterFactory.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ValueAugmenterFactory.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ValueAugmenterFactory.java Wed Sep 2 13:06:13 2015
@@ -96,7 +96,7 @@ class ValueAugmenter extends DocTransfor
}
@Override
- public void transform(SolrDocument doc, int docid) {
+ public void transform(SolrDocument doc, int docid, float score) {
doc.setField( name, value );
}
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java Wed Sep 2 13:06:13 2015
@@ -27,6 +27,7 @@ import org.apache.lucene.queries.functio
import org.apache.lucene.queries.function.ValueSource;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrException;
+import org.apache.solr.response.ResultContext;
import org.apache.solr.search.QParser;
import org.apache.solr.search.SolrIndexSearcher;
@@ -60,7 +61,8 @@ public class ValueSourceAugmenter extend
}
@Override
- public void setContext( TransformContext context ) {
+ public void setContext( ResultContext context ) {
+ super.setContext(context);
try {
IndexReader reader = qparser.getReq().getSearcher().getIndexReader();
readerContexts = reader.leaves();
@@ -82,7 +84,7 @@ public class ValueSourceAugmenter extend
@Override
- public void transform(SolrDocument doc, int docid) {
+ public void transform(SolrDocument doc, int docid, float score) {
// This is only good for random-access functions
try {
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java Wed Sep 2 13:06:13 2015
@@ -16,6 +16,27 @@ package org.apache.solr.schema;
* limitations under the License.
*/
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.StringWriter;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+
import org.apache.commons.io.IOUtils;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.util.CharFilterFactory;
@@ -53,28 +74,6 @@ import org.apache.zookeeper.KeeperExcept
import org.apache.zookeeper.data.Stat;
import org.xml.sax.InputSource;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.StringWriter;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-
/** Solr-managed schema - non-user-editable, but can be mutable via internal and external REST API requests. */
public final class ManagedIndexSchema extends IndexSchema {
@@ -269,7 +268,7 @@ public final class ManagedIndexSchema ex
Thread.currentThread().interrupt();
} finally {
if (!parallelExecutor.isShutdown())
- parallelExecutor.shutdownNow();
+ parallelExecutor.shutdown();
}
log.info("Took {}ms for {} replicas to apply schema update version {} for collection {}",
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java Wed Sep 2 13:06:13 2015
@@ -27,8 +27,8 @@ import java.util.Map;
import com.carrotsearch.hppc.FloatArrayList;
import com.carrotsearch.hppc.IntArrayList;
-import com.carrotsearch.hppc.IntIntOpenHashMap;
-import com.carrotsearch.hppc.IntLongOpenHashMap;
+import com.carrotsearch.hppc.IntIntHashMap;
+import com.carrotsearch.hppc.IntLongHashMap;
import com.carrotsearch.hppc.cursors.IntIntCursor;
import com.carrotsearch.hppc.cursors.IntLongCursor;
import org.apache.lucene.index.DocValues;
@@ -228,8 +228,8 @@ public class CollapsingQParserPlugin ext
}
}
- private IntIntOpenHashMap getBoostDocs(SolrIndexSearcher indexSearcher, Map<BytesRef, Integer> boosted, Map context) throws IOException {
- IntIntOpenHashMap boostDocs = QueryElevationComponent.getBoostDocs(indexSearcher, boosted, context);
+ private IntIntHashMap getBoostDocs(SolrIndexSearcher indexSearcher, Map<BytesRef, Integer> boosted, Map context) throws IOException {
+ IntIntHashMap boostDocs = QueryElevationComponent.getBoostDocs(indexSearcher, boosted, context);
return boostDocs;
}
@@ -242,7 +242,7 @@ public class CollapsingQParserPlugin ext
//We have to deal with it here rather then the constructor because
//because the QueryElevationComponent runs after the Queries are constructed.
- IntIntOpenHashMap boostDocsMap = null;
+ IntIntHashMap boostDocsMap = null;
Map context = null;
SolrRequestInfo info = SolrRequestInfo.getRequestInfo();
if(info != null) {
@@ -413,7 +413,7 @@ public class CollapsingQParserPlugin ext
int segments,
SortedDocValues collapseValues,
int nullPolicy,
- IntIntOpenHashMap boostDocsMap) {
+ IntIntHashMap boostDocsMap) {
this.maxDoc = maxDoc;
this.contexts = new LeafReaderContext[segments];
this.collapsedSet = new FixedBitSet(maxDoc);
@@ -608,7 +608,7 @@ public class CollapsingQParserPlugin ext
private LeafReaderContext[] contexts;
private FixedBitSet collapsedSet;
private NumericDocValues collapseValues;
- private IntLongOpenHashMap cmap;
+ private IntLongHashMap cmap;
private int maxDoc;
private int nullPolicy;
private float nullScore = -Float.MAX_VALUE;
@@ -627,7 +627,7 @@ public class CollapsingQParserPlugin ext
int nullPolicy,
int size,
String field,
- IntIntOpenHashMap boostDocsMap) {
+ IntIntHashMap boostDocsMap) {
this.maxDoc = maxDoc;
this.contexts = new LeafReaderContext[segments];
this.collapsedSet = new FixedBitSet(maxDoc);
@@ -636,7 +636,7 @@ public class CollapsingQParserPlugin ext
if(nullPolicy == CollapsingPostFilter.NULL_POLICY_EXPAND) {
nullScores = new FloatArrayList();
}
- this.cmap = new IntLongOpenHashMap(size);
+ this.cmap = new IntLongHashMap(size);
this.field = field;
if(boostDocsMap != null) {
@@ -680,18 +680,19 @@ public class CollapsingQParserPlugin ext
if(collapseValue != nullValue) {
float score = scorer.score();
- if(cmap.containsKey(collapseValue)) {
- long scoreDoc = cmap.lget();
+ final int idx;
+ if((idx = cmap.indexOf(collapseValue)) >= 0) {
+ long scoreDoc = cmap.indexGet(idx);
int testScore = (int)(scoreDoc>>32);
int currentScore = Float.floatToRawIntBits(score);
if(currentScore > testScore) {
//Current score is higher so replace the old scoreDoc with the current scoreDoc
- cmap.lset((((long)currentScore)<<32)+globalDoc);
+ cmap.indexReplace(idx, (((long)currentScore)<<32)+globalDoc);
}
} else {
//Combine the score and document into a long.
long scoreDoc = (((long)Float.floatToRawIntBits(score))<<32)+globalDoc;
- cmap.put(collapseValue, scoreDoc);
+ cmap.indexInsert(idx, collapseValue, scoreDoc);
}
} else if(nullPolicy == CollapsingPostFilter.NULL_POLICY_COLLAPSE) {
float score = scorer.score();
@@ -807,7 +808,7 @@ public class CollapsingQParserPlugin ext
boolean max,
boolean needsScores,
FieldType fieldType,
- IntIntOpenHashMap boostDocs,
+ IntIntHashMap boostDocs,
FunctionQuery funcQuery, IndexSearcher searcher) throws IOException{
this.maxDoc = maxDoc;
@@ -975,7 +976,7 @@ public class CollapsingQParserPlugin ext
boolean max,
boolean needsScores,
FieldType fieldType,
- IntIntOpenHashMap boostDocsMap,
+ IntIntHashMap boostDocsMap,
FunctionQuery funcQuery,
IndexSearcher searcher) throws IOException{
@@ -1035,7 +1036,7 @@ public class CollapsingQParserPlugin ext
DocIdSetIterator it = new BitSetIterator(collapseStrategy.getCollapsedSet(), 0); // cost is not useful here
int globalDoc = -1;
int nullScoreIndex = 0;
- IntIntOpenHashMap cmap = collapseStrategy.getCollapseMap();
+ IntIntHashMap cmap = collapseStrategy.getCollapseMap();
int[] docs = collapseStrategy.getDocs();
float[] scores = collapseStrategy.getScores();
FloatArrayList nullScores = collapseStrategy.getNullScores();
@@ -1090,7 +1091,7 @@ public class CollapsingQParserPlugin ext
String hint,
boolean needsScores,
int size,
- IntIntOpenHashMap boostDocs,
+ IntIntHashMap boostDocs,
SolrIndexSearcher searcher) throws IOException {
@@ -1285,7 +1286,7 @@ public class CollapsingQParserPlugin ext
int nullPolicy,
boolean max,
boolean needsScores,
- IntIntOpenHashMap boostDocsMap,
+ IntIntHashMap boostDocsMap,
SortedDocValues values) {
this.field = field;
this.nullPolicy = nullPolicy;
@@ -1376,7 +1377,7 @@ public class CollapsingQParserPlugin ext
int[] ords,
boolean max,
boolean needsScores,
- IntIntOpenHashMap boostDocs,
+ IntIntHashMap boostDocs,
SortedDocValues values) throws IOException {
super(maxDoc, field, nullPolicy, max, needsScores, boostDocs, values);
this.ords = ords;
@@ -1457,7 +1458,7 @@ public class CollapsingQParserPlugin ext
int[] ords,
boolean max,
boolean needsScores,
- IntIntOpenHashMap boostDocs,
+ IntIntHashMap boostDocs,
SortedDocValues values) throws IOException {
super(maxDoc, field, nullPolicy, max, needsScores, boostDocs, values);
this.ords = ords;
@@ -1539,7 +1540,7 @@ public class CollapsingQParserPlugin ext
int[] ords,
boolean max,
boolean needsScores,
- IntIntOpenHashMap boostDocs, SortedDocValues values) throws IOException {
+ IntIntHashMap boostDocs, SortedDocValues values) throws IOException {
super(maxDoc, field, nullPolicy, max, needsScores, boostDocs, values);
this.ords = ords;
this.ordVals = new long[ords.length];
@@ -1623,7 +1624,7 @@ public class CollapsingQParserPlugin ext
int[] ords,
boolean max,
boolean needsScores,
- IntIntOpenHashMap boostDocs,
+ IntIntHashMap boostDocs,
FunctionQuery funcQuery,
IndexSearcher searcher,
SortedDocValues values) throws IOException {
@@ -1707,7 +1708,7 @@ public class CollapsingQParserPlugin ext
private abstract class IntFieldValueStrategy {
protected int nullPolicy;
- protected IntIntOpenHashMap cmap;
+ protected IntIntHashMap cmap;
protected Scorer scorer;
protected FloatArrayList nullScores;
protected float nullScore;
@@ -1736,7 +1737,7 @@ public class CollapsingQParserPlugin ext
int nullPolicy,
boolean max,
boolean needsScores,
- IntIntOpenHashMap boostDocsMap) {
+ IntIntHashMap boostDocsMap) {
this.field = field;
this.collapseField = collapseField;
this.nullValue = nullValue;
@@ -1744,7 +1745,7 @@ public class CollapsingQParserPlugin ext
this.max = max;
this.needsScores = needsScores;
this.collapsedSet = new FixedBitSet(maxDoc);
- this.cmap = new IntIntOpenHashMap(size);
+ this.cmap = new IntIntHashMap(size);
if(boostDocsMap != null) {
this.boosts = true;
this.boostDocs = new IntArrayList();
@@ -1801,7 +1802,7 @@ public class CollapsingQParserPlugin ext
return nullScores;
}
- public IntIntOpenHashMap getCollapseMap() {
+ public IntIntHashMap getCollapseMap() {
return cmap;
}
@@ -1842,7 +1843,7 @@ public class CollapsingQParserPlugin ext
int nullPolicy,
boolean max,
boolean needsScores,
- IntIntOpenHashMap boostDocs) throws IOException {
+ IntIntHashMap boostDocs) throws IOException {
super(maxDoc, size, collapseField, field, nullValue, nullPolicy, max, needsScores, boostDocs);
@@ -1881,8 +1882,9 @@ public class CollapsingQParserPlugin ext
int currentVal = (int) minMaxVals.get(contextDoc);
if(collapseKey != nullValue) {
- if(cmap.containsKey(collapseKey)) {
- int pointer = cmap.lget();
+ final int idx;
+ if((idx = cmap.indexOf(collapseKey)) >= 0) {
+ int pointer = cmap.indexGet(idx);
if(comp.test(currentVal, testValues[pointer])) {
testValues[pointer]= currentVal;
docs[pointer] = globalDoc;
@@ -1942,7 +1944,7 @@ public class CollapsingQParserPlugin ext
int nullPolicy,
boolean max,
boolean needsScores,
- IntIntOpenHashMap boostDocs) throws IOException {
+ IntIntHashMap boostDocs) throws IOException {
super(maxDoc, size, collapseField, field, nullValue, nullPolicy, max, needsScores, boostDocs);
@@ -1982,8 +1984,9 @@ public class CollapsingQParserPlugin ext
float currentVal = Float.intBitsToFloat(minMaxVal);
if(collapseKey != nullValue) {
- if(cmap.containsKey(collapseKey)) {
- int pointer = cmap.lget();
+ final int idx;
+ if((idx = cmap.indexOf(collapseKey)) >= 0) {
+ int pointer = cmap.indexGet(idx);
if(comp.test(currentVal, testValues[pointer])) {
testValues[pointer] = currentVal;
docs[pointer] = globalDoc;
@@ -2054,7 +2057,7 @@ public class CollapsingQParserPlugin ext
int nullPolicy,
boolean max,
boolean needsScores,
- IntIntOpenHashMap boostDocs,
+ IntIntHashMap boostDocs,
FunctionQuery funcQuery,
IndexSearcher searcher) throws IOException {
@@ -2108,8 +2111,9 @@ public class CollapsingQParserPlugin ext
float currentVal = functionValues.floatVal(contextDoc);
if(collapseKey != nullValue) {
- if(cmap.containsKey(collapseKey)) {
- int pointer = cmap.lget();
+ final int idx;
+ if((idx = cmap.indexOf(collapseKey)) >= 0) {
+ int pointer = cmap.indexGet(idx);
if(comp.test(currentVal, testValues[pointer])) {
testValues[pointer] = currentVal;
docs[pointer] = globalDoc;
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/EarlyTerminatingCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/EarlyTerminatingCollector.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/EarlyTerminatingCollector.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/EarlyTerminatingCollector.java Wed Sep 2 13:06:13 2015
@@ -1,6 +1,6 @@
package org.apache.solr.search;
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/EarlyTerminatingCollectorException.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/EarlyTerminatingCollectorException.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/EarlyTerminatingCollectorException.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/EarlyTerminatingCollectorException.java Wed Sep 2 13:06:13 2015
@@ -1,6 +1,6 @@
package org.apache.solr.search;
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java Wed Sep 2 13:06:13 2015
@@ -21,7 +21,6 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import java.util.Map;
import org.apache.lucene.index.Fields;
import org.apache.lucene.index.IndexReader;
@@ -44,12 +43,7 @@ import org.apache.lucene.util.Bits;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.FixedBitSet;
import org.apache.lucene.util.StringHelper;
-import org.apache.solr.cloud.ZkController;
import org.apache.solr.common.SolrException;
-import org.apache.solr.common.cloud.Aliases;
-import org.apache.solr.common.cloud.Replica;
-import org.apache.solr.common.cloud.Slice;
-import org.apache.solr.common.cloud.ZkStateReader;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
@@ -85,10 +79,12 @@ public class JoinQParserPlugin extends Q
}
Query parseJoin() throws SyntaxError {
- String fromField = getParam("from");
- String fromIndex = getParam("fromIndex");
- String toField = getParam("to");
- String v = localParams.get("v");
+ final String fromField = getParam("from");
+ final String fromIndex = getParam("fromIndex");
+ final String toField = getParam("to");
+ final String v = localParams.get("v");
+ final String coreName;
+
Query fromQuery;
long fromCoreOpenTime = 0;
@@ -96,42 +92,13 @@ public class JoinQParserPlugin extends Q
CoreContainer container = req.getCore().getCoreDescriptor().getCoreContainer();
// if in SolrCloud mode, fromIndex should be the name of a single-sharded collection
- if (container.isZooKeeperAware()) {
- ZkController zkController = container.getZkController();
- if (!zkController.getClusterState().hasCollection(fromIndex)) {
- // collection not found ... but it might be an alias?
- String resolved = null;
- Aliases aliases = zkController.getZkStateReader().getAliases();
- if (aliases != null) {
- Map<String, String> collectionAliases = aliases.getCollectionAliasMap();
- resolved = (collectionAliases != null) ? collectionAliases.get(fromIndex) : null;
- if (resolved != null) {
- // ok, was an alias, but if the alias points to multiple collections, then we don't support that yet
- if (resolved.split(",").length > 1)
- throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
- "SolrCloud join: Collection alias '" + fromIndex +
- "' maps to multiple collections ("+resolved+
- "), which is not currently supported for joins.");
- }
- }
-
- if (resolved == null)
- throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
- "SolrCloud join: Collection '" + fromIndex + "' not found!");
-
- // ok, resolved to an alias
- fromIndex = resolved;
- }
-
- // the fromIndex is a local replica for a single-sharded collection with replicas
- // across all nodes that have replicas for the collection we're joining with
- fromIndex = findLocalReplicaForFromIndex(zkController, fromIndex);
- }
+ coreName = ScoreJoinQParserPlugin.getCoreName(fromIndex, container);
- final SolrCore fromCore = container.getCore(fromIndex);
- if (fromCore == null)
+ final SolrCore fromCore = container.getCore(coreName);
+ if (fromCore == null) {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
- "Cross-core join: no such core " + fromIndex);
+ "Cross-core join: no such core " + coreName);
+ }
RefCounted<SolrIndexSearcher> fromHolder = null;
LocalSolrQueryRequest otherReq = new LocalSolrQueryRequest(fromCore, params);
@@ -146,48 +113,18 @@ public class JoinQParserPlugin extends Q
if (fromHolder != null) fromHolder.decref();
}
} else {
+ coreName = null;
QParser fromQueryParser = subQuery(v, null);
fromQuery = fromQueryParser.getQuery();
}
- JoinQuery jq = new JoinQuery(fromField, toField, fromIndex, fromQuery);
+ JoinQuery jq = new JoinQuery(fromField, toField, coreName == null ? fromIndex : coreName, fromQuery);
jq.fromCoreOpenTime = fromCoreOpenTime;
return jq;
}
};
}
- protected String findLocalReplicaForFromIndex(ZkController zkController, String fromIndex) {
- String fromReplica = null;
-
- String nodeName = zkController.getNodeName();
- for (Slice slice : zkController.getClusterState().getActiveSlices(fromIndex)) {
- if (fromReplica != null)
- throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
- "SolrCloud join: multiple shards not yet supported " + fromIndex);
-
- for (Replica replica : slice.getReplicas()) {
- if (replica.getNodeName().equals(nodeName)) {
- fromReplica = replica.getStr(ZkStateReader.CORE_NAME_PROP);
-
- // found local replica, but is it Active?
- if (replica.getState() != Replica.State.ACTIVE)
- throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
- "SolrCloud join: "+fromIndex+" has a local replica ("+fromReplica+
- ") on "+nodeName+", but it is "+replica.getState());
-
- break;
- }
- }
- }
-
- if (fromReplica == null)
- throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
- "SolrCloud join: No active replicas for "+fromIndex+
- " found in node " + nodeName);
-
- return fromReplica;
- }
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java Wed Sep 2 13:06:13 2015
@@ -23,8 +23,9 @@ import java.util.Comparator;
import java.util.Map;
import java.util.Set;
-import com.carrotsearch.hppc.IntFloatOpenHashMap;
-import com.carrotsearch.hppc.IntIntOpenHashMap;
+import com.carrotsearch.hppc.IntFloatHashMap;
+import com.carrotsearch.hppc.IntIntHashMap;
+
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.Term;
@@ -42,7 +43,6 @@ import org.apache.lucene.search.TopDocsC
import org.apache.lucene.search.TopFieldCollector;
import org.apache.lucene.search.TopScoreDocCollector;
import org.apache.lucene.search.Weight;
-import org.apache.lucene.util.Bits;
import org.apache.lucene.util.BytesRef;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.params.CommonParams;
@@ -157,7 +157,7 @@ public class ReRankQParserPlugin extends
return "{!rerank mainQuery='"+mainQuery.toString()+
"' reRankQuery='"+reRankQuery.toString()+
"' reRankDocs="+reRankDocs+
- " reRankWeigh="+reRankWeight+"}";
+ " reRankWeight="+reRankWeight+"}";
}
public Query rewrite(IndexReader reader) throws IOException {
@@ -292,7 +292,7 @@ public class ReRankQParserPlugin extends
requestContext = info.getReq().getContext();
}
- IntIntOpenHashMap boostedDocs = QueryElevationComponent.getBoostDocs((SolrIndexSearcher)searcher, boostedPriority, requestContext);
+ IntIntHashMap boostedDocs = QueryElevationComponent.getBoostDocs((SolrIndexSearcher)searcher, boostedPriority, requestContext);
ScoreDoc[] mainScoreDocs = mainDocs.scoreDocs;
ScoreDoc[] reRankScoreDocs = new ScoreDoc[Math.min(mainScoreDocs.length, reRankDocs)];
@@ -391,14 +391,15 @@ public class ReRankQParserPlugin extends
}
public class BoostedComp implements Comparator {
- IntFloatOpenHashMap boostedMap;
+ IntFloatHashMap boostedMap;
- public BoostedComp(IntIntOpenHashMap boostedDocs, ScoreDoc[] scoreDocs, float maxScore) {
- this.boostedMap = new IntFloatOpenHashMap(boostedDocs.size()*2);
+ public BoostedComp(IntIntHashMap boostedDocs, ScoreDoc[] scoreDocs, float maxScore) {
+ this.boostedMap = new IntFloatHashMap(boostedDocs.size()*2);
for(int i=0; i<scoreDocs.length; i++) {
- if(boostedDocs.containsKey(scoreDocs[i].doc)) {
- boostedMap.put(scoreDocs[i].doc, maxScore+boostedDocs.lget());
+ final int idx;
+ if((idx = boostedDocs.indexOf(scoreDocs[i].doc)) >= 0) {
+ boostedMap.put(scoreDocs[i].doc, maxScore+boostedDocs.indexGet(idx));
} else {
break;
}
@@ -410,21 +411,16 @@ public class ReRankQParserPlugin extends
ScoreDoc doc2 = (ScoreDoc) o2;
float score1 = doc1.score;
float score2 = doc2.score;
- if(boostedMap.containsKey(doc1.doc)) {
- score1 = boostedMap.lget();
+ int idx;
+ if((idx = boostedMap.indexOf(doc1.doc)) >= 0) {
+ score1 = boostedMap.indexGet(idx);
}
- if(boostedMap.containsKey(doc2.doc)) {
- score2 = boostedMap.lget();
+ if((idx = boostedMap.indexOf(doc2.doc)) >= 0) {
+ score2 = boostedMap.indexGet(idx);
}
- if(score1 > score2) {
- return -1;
- } else if(score1 < score2) {
- return 1;
- } else {
- return 0;
- }
+ return -Float.compare(score1, score2);
}
}
}
\ No newline at end of file
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java Wed Sep 2 13:06:13 2015
@@ -107,7 +107,7 @@ public class SolrIndexSearcher extends I
public static final AtomicLong numCloses = new AtomicLong();
- private static Logger log = LoggerFactory.getLogger(SolrIndexSearcher.class);
+ static Logger log = LoggerFactory.getLogger(SolrIndexSearcher.class);
private final SolrCore core;
private final IndexSchema schema;
@@ -1259,21 +1259,7 @@ public class SolrIndexSearcher extends I
// query must be positive
protected DocSet getDocSetNC(Query query, DocSet filter) throws IOException {
- DocSetCollector collector = new DocSetCollector(maxDoc()>>6, maxDoc());
-
- try {
- if (filter != null) {
- Filter luceneFilter = filter.getTopFilter();
- query = new BooleanQuery.Builder()
- .add(query, Occur.MUST)
- .add(luceneFilter, Occur.FILTER)
- .build();
- }
- super.search(query, collector);
- } catch ( ExitableDirectoryReader.ExitingReaderException e) {
- log.warn("Query: " + query + "; " + e.getMessage());
- }
- return collector.getDocSet();
+ return DocSetUtil.createDocSet(this, query, filter);
}
@@ -2649,3 +2635,4 @@ class FilterImpl extends Filter {
}
}
+
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/SolrQueryTimeoutImpl.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/SolrQueryTimeoutImpl.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/SolrQueryTimeoutImpl.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/SolrQueryTimeoutImpl.java Wed Sep 2 13:06:13 2015
@@ -49,6 +49,11 @@ public class SolrQueryTimeoutImpl implem
return timeoutAt.get();
}
+ @Override
+ public boolean isTimeoutEnabled() {
+ return get() != null;
+ }
+
/**
* Return true if a timeoutAt value is set and the current time has exceeded the set timeOut.
*/
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorNumeric.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorNumeric.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorNumeric.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorNumeric.java Wed Sep 2 13:06:13 2015
@@ -317,7 +317,7 @@ class FacetFieldProcessorNumeric extends
int segDoc = doc - segBase;
long val = values.get(segDoc);
- if (val != 0 && docsWithField.get(segDoc)) {
+ if (val != 0 || docsWithField.get(segDoc)) {
int slot = table.add(val); // this can trigger a rehash rehash
// countAcc.incrementCount(slot, 1);
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/SearchGroupsFieldCommand.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/SearchGroupsFieldCommand.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/SearchGroupsFieldCommand.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/SearchGroupsFieldCommand.java Wed Sep 2 13:06:13 2015
@@ -38,7 +38,7 @@ import java.util.*;
/**
* Creates all the collectors needed for the first phase and how to handle the results.
*/
-public class SearchGroupsFieldCommand implements Command<Pair<Integer, Collection<SearchGroup<BytesRef>>>> {
+public class SearchGroupsFieldCommand implements Command<SearchGroupsFieldCommandResult> {
public static class Builder {
@@ -118,7 +118,7 @@ public class SearchGroupsFieldCommand im
}
@Override
- public Pair<Integer, Collection<SearchGroup<BytesRef>>> result() {
+ public SearchGroupsFieldCommandResult result() {
final Collection<SearchGroup<BytesRef>> topGroups;
if (topNGroups > 0) {
if (field.getType().getNumericType() != null) {
@@ -135,7 +135,7 @@ public class SearchGroupsFieldCommand im
} else {
groupCount = null;
}
- return new Pair<>(groupCount, topGroups);
+ return new SearchGroupsFieldCommandResult(groupCount, topGroups);
}
@Override
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/SearchGroupShardResponseProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/SearchGroupShardResponseProcessor.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/SearchGroupShardResponseProcessor.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/SearchGroupShardResponseProcessor.java Wed Sep 2 13:06:13 2015
@@ -30,7 +30,7 @@ import org.apache.solr.handler.component
import org.apache.solr.handler.component.ShardResponse;
import org.apache.solr.search.SortSpec;
import org.apache.solr.search.grouping.distributed.ShardResponseProcessor;
-import org.apache.solr.search.grouping.distributed.command.Pair;
+import org.apache.solr.search.grouping.distributed.command.SearchGroupsFieldCommandResult;
import org.apache.solr.search.grouping.distributed.shardresultserializer.SearchGroupsResultTransformer;
import java.io.IOException;
@@ -106,17 +106,18 @@ public class SearchGroupShardResponsePro
maxElapsedTime = (int) Math.max(maxElapsedTime, srsp.getSolrResponse().getElapsedTime());
@SuppressWarnings("unchecked")
NamedList<NamedList> firstPhaseResult = (NamedList<NamedList>) srsp.getSolrResponse().getResponse().get("firstPhase");
- Map<String, Pair<Integer, Collection<SearchGroup<BytesRef>>>> result = serializer.transformToNative(firstPhaseResult, groupSort, null, srsp.getShard());
+ final Map<String, SearchGroupsFieldCommandResult> result = serializer.transformToNative(firstPhaseResult, groupSort, null, srsp.getShard());
for (String field : commandSearchGroups.keySet()) {
- Pair<Integer, Collection<SearchGroup<BytesRef>>> firstPhaseCommandResult = result.get(field);
- Integer groupCount = firstPhaseCommandResult.getA();
+ final SearchGroupsFieldCommandResult firstPhaseCommandResult = result.get(field);
+
+ final Integer groupCount = firstPhaseCommandResult.getGroupCount();
if (groupCount != null) {
Integer existingGroupCount = rb.mergedGroupCounts.get(field);
// Assuming groups don't cross shard boundary...
rb.mergedGroupCounts.put(field, existingGroupCount != null ? existingGroupCount + groupCount : groupCount);
}
- Collection<SearchGroup<BytesRef>> searchGroups = firstPhaseCommandResult.getB();
+ final Collection<SearchGroup<BytesRef>> searchGroups = firstPhaseCommandResult.getSearchGroups();
if (searchGroups == null) {
continue;
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java Wed Sep 2 13:06:13 2015
@@ -27,8 +27,8 @@ import org.apache.solr.schema.FieldType;
import org.apache.solr.schema.SchemaField;
import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.search.grouping.Command;
-import org.apache.solr.search.grouping.distributed.command.Pair;
import org.apache.solr.search.grouping.distributed.command.SearchGroupsFieldCommand;
+import org.apache.solr.search.grouping.distributed.command.SearchGroupsFieldCommandResult;
import java.io.IOException;
import java.util.*;
@@ -36,7 +36,7 @@ import java.util.*;
/**
* Implementation for transforming {@link SearchGroup} into a {@link NamedList} structure and visa versa.
*/
-public class SearchGroupsResultTransformer implements ShardResultTransformer<List<Command>, Map<String, Pair<Integer, Collection<SearchGroup<BytesRef>>>>> {
+public class SearchGroupsResultTransformer implements ShardResultTransformer<List<Command>, Map<String, SearchGroupsFieldCommandResult>> {
private final SolrIndexSearcher searcher;
@@ -54,12 +54,12 @@ public class SearchGroupsResultTransform
final NamedList<Object> commandResult = new NamedList<>();
if (SearchGroupsFieldCommand.class.isInstance(command)) {
SearchGroupsFieldCommand fieldCommand = (SearchGroupsFieldCommand) command;
- Pair<Integer, Collection<SearchGroup<BytesRef>>> pair = fieldCommand.result();
- Integer groupedCount = pair.getA();
- Collection<SearchGroup<BytesRef>> searchGroups = pair.getB();
+ final SearchGroupsFieldCommandResult fieldCommandResult = fieldCommand.result();
+ final Collection<SearchGroup<BytesRef>> searchGroups = fieldCommandResult.getSearchGroups();
if (searchGroups != null) {
commandResult.add("topGroups", serializeSearchGroup(searchGroups, fieldCommand.getGroupSort()));
}
+ final Integer groupedCount = fieldCommandResult.getGroupCount();
if (groupedCount != null) {
commandResult.add("groupCount", groupedCount);
}
@@ -76,8 +76,8 @@ public class SearchGroupsResultTransform
* {@inheritDoc}
*/
@Override
- public Map<String, Pair<Integer, Collection<SearchGroup<BytesRef>>>> transformToNative(NamedList<NamedList> shardResponse, Sort groupSort, Sort sortWithinGroup, String shard) {
- Map<String, Pair<Integer, Collection<SearchGroup<BytesRef>>>> result = new HashMap<>();
+ public Map<String, SearchGroupsFieldCommandResult> transformToNative(NamedList<NamedList> shardResponse, Sort groupSort, Sort sortWithinGroup, String shard) {
+ final Map<String, SearchGroupsFieldCommandResult> result = new HashMap<>();
for (Map.Entry<String, NamedList> command : shardResponse) {
List<SearchGroup<BytesRef>> searchGroups = new ArrayList<>();
NamedList topGroupsAndGroupCount = command.getValue();
@@ -102,7 +102,7 @@ public class SearchGroupsResultTransform
}
Integer groupCount = (Integer) topGroupsAndGroupCount.get("groupCount");
- result.put(command.getKey(), new Pair<Integer, Collection<SearchGroup<BytesRef>>>(groupCount, searchGroups));
+ result.put(command.getKey(), new SearchGroupsFieldCommandResult(groupCount, searchGroups));
}
return result;
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java Wed Sep 2 13:06:13 2015
@@ -18,6 +18,7 @@
package org.apache.solr.search.join;
import java.io.IOException;
+import java.util.Map;
import org.apache.lucene.index.DocValuesType;
import org.apache.lucene.index.IndexReader;
@@ -25,7 +26,12 @@ import org.apache.lucene.search.Query;
import org.apache.lucene.search.join.JoinUtil;
import org.apache.lucene.search.join.ScoreMode;
import org.apache.lucene.uninverting.UninvertingReader;
+import org.apache.solr.cloud.ZkController;
import org.apache.solr.common.SolrException;
+import org.apache.solr.common.cloud.Aliases;
+import org.apache.solr.common.cloud.Replica;
+import org.apache.solr.common.cloud.Slice;
+import org.apache.solr.common.cloud.ZkStateReader;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
@@ -59,10 +65,9 @@ import org.apache.solr.util.RefCounted;
* Thus, it only supports {@link DocValuesType#SORTED}, {@link DocValuesType#SORTED_SET}, {@link DocValuesType#BINARY}. </li>
* <li>fromIndex - optional parameter, a core name where subordinate query should run (and <code>from</code> values are collected) rather than current core.
* <br>Example:<code>q={!join from=manu_id_s to=id score=total fromIndex=products}foo</code>
- * <br>Follow up <a href="https://issues.apache.org/jira/browse/SOLR-7775">SOLR-7775</a> for SolrCloud collections support.</li>
* <li>to - "primary key" field name which is searched for values collected from subordinate query.
* it should be declared as <code>indexed="true"</code>. Now it's treated as a single value field.</li>
- * <li>score - one of {@link ScoreMode}: None,Avg,Total,Max. Lowercase is also accepted.</li>
+ * <li>score - one of {@link ScoreMode}: <code>none,avg,total,max,min</code>. Capital case is also accepted.</li>
* </ul>
*/
public class ScoreJoinQParserPlugin extends QParserPlugin {
@@ -235,11 +240,12 @@ public class ScoreJoinQParserPlugin exte
if (fromIndex != null && (!fromIndex.equals(myCore) || byPassShortCircutCheck)) {
CoreContainer container = req.getCore().getCoreDescriptor().getCoreContainer();
- final SolrCore fromCore = container.getCore(fromIndex);
+ final String coreName = getCoreName(fromIndex, container);
+ final SolrCore fromCore = container.getCore(coreName);
RefCounted<SolrIndexSearcher> fromHolder = null;
if (fromCore == null) {
- throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Cross-core join: no such core " + fromIndex);
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Cross-core join: no such core " + coreName);
}
long fromCoreOpenTime = 0;
@@ -253,7 +259,7 @@ public class ScoreJoinQParserPlugin exte
if (fromHolder != null) {
fromCoreOpenTime = fromHolder.get().getOpenNanoTime();
}
- return new OtherCoreJoinQuery(fromQuery, fromField, fromIndex, fromCoreOpenTime,
+ return new OtherCoreJoinQuery(fromQuery, fromField, coreName, fromCoreOpenTime,
scoreMode, toField);
} finally {
otherReq.close();
@@ -268,6 +274,84 @@ public class ScoreJoinQParserPlugin exte
}
};
}
+
+ /**
+ * Returns an String with the name of a core.
+ * <p>
+ * This method searches the core with fromIndex name in the core's container.
+ * If fromIndex isn't name of collection or alias it's returns fromIndex without changes.
+ * If fromIndex is name of alias but if the alias points to multiple collections it's throw
+ * SolrException.ErrorCode.BAD_REQUEST because multiple shards not yet supported.
+ *
+ * @param fromIndex name of the index
+ * @param container the core container for searching the core with fromIndex name or alias
+ * @return the string with name of core
+ */
+ public static String getCoreName(final String fromIndex, CoreContainer container) {
+ if (container.isZooKeeperAware()) {
+ ZkController zkController = container.getZkController();
+ final String resolved =
+ zkController.getClusterState().hasCollection(fromIndex)
+ ? fromIndex : resolveAlias(fromIndex, zkController);
+ if (resolved == null) {
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
+ "SolrCloud join: Collection '" + fromIndex + "' not found!");
+ }
+ return findLocalReplicaForFromIndex(zkController, resolved);
+ }
+ return fromIndex;
+ }
+
+ private static String resolveAlias(String fromIndex, ZkController zkController) {
+ final Aliases aliases = zkController.getZkStateReader().getAliases();
+ if (aliases != null) {
+ final String resolved;
+ Map<String, String> collectionAliases = aliases.getCollectionAliasMap();
+ resolved = (collectionAliases != null) ? collectionAliases.get(fromIndex) : null;
+ if (resolved != null) {
+ if (resolved.split(",").length > 1) {
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
+ "SolrCloud join: Collection alias '" + fromIndex +
+ "' maps to multiple collections (" + resolved +
+ "), which is not currently supported for joins.");
+ }
+ return resolved;
+ }
+ }
+ return null;
+ }
+
+ private static String findLocalReplicaForFromIndex(ZkController zkController, String fromIndex) {
+ String fromReplica = null;
+
+ String nodeName = zkController.getNodeName();
+ for (Slice slice : zkController.getClusterState().getActiveSlices(fromIndex)) {
+ if (fromReplica != null)
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
+ "SolrCloud join: multiple shards not yet supported " + fromIndex);
+
+ for (Replica replica : slice.getReplicas()) {
+ if (replica.getNodeName().equals(nodeName)) {
+ fromReplica = replica.getStr(ZkStateReader.CORE_NAME_PROP);
+ // found local replica, but is it Active?
+ if (replica.getState() != Replica.State.ACTIVE)
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
+ "SolrCloud join: "+fromIndex+" has a local replica ("+fromReplica+
+ ") on "+nodeName+", but it is "+replica.getState());
+
+ break;
+ }
+ }
+ }
+
+ if (fromReplica == null)
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
+ "SolrCloud join: No active replicas for "+fromIndex+
+ " found in node " + nodeName);
+
+ return fromReplica;
+ }
}
+
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/CollectionStats.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/CollectionStats.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/CollectionStats.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/CollectionStats.java Wed Sep 2 13:06:13 2015
@@ -1,6 +1,6 @@
package org.apache.solr.search.stats;
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/LocalStatsCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/LocalStatsCache.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/LocalStatsCache.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/LocalStatsCache.java Wed Sep 2 13:06:13 2015
@@ -1,6 +1,6 @@
package org.apache.solr.search.stats;
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/LocalStatsSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/LocalStatsSource.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/LocalStatsSource.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/LocalStatsSource.java Wed Sep 2 13:06:13 2015
@@ -1,6 +1,6 @@
package org.apache.solr.search.stats;
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/StatsCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/StatsCache.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/StatsCache.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/StatsCache.java Wed Sep 2 13:06:13 2015
@@ -1,6 +1,6 @@
package org.apache.solr.search.stats;
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/StatsSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/StatsSource.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/StatsSource.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/StatsSource.java Wed Sep 2 13:06:13 2015
@@ -1,6 +1,6 @@
package org.apache.solr.search.stats;
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/StatsUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/StatsUtil.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/StatsUtil.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/StatsUtil.java Wed Sep 2 13:06:13 2015
@@ -1,6 +1,6 @@
package org.apache.solr.search.stats;
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/TermStats.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/TermStats.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/TermStats.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/search/stats/TermStats.java Wed Sep 2 13:06:13 2015
@@ -1,6 +1,6 @@
package org.apache.solr.search.stats;
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java Wed Sep 2 13:06:13 2015
@@ -88,7 +88,7 @@ public class RuleBasedAuthorizationPlugi
@Override
public AuthorizationResponse authorize(AuthorizationContext context) {
List<AuthorizationContext.CollectionRequest> collectionRequests = context.getCollectionRequests();
- if (collectionRequests.isEmpty()) {
+ if (context.getRequestType() == AuthorizationContext.RequestType.ADMIN) {
MatchStatus flag = checkCollPerm(mapping.get(""), context);
return flag.rsp;
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/servlet/LoadAdminUiServlet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/servlet/LoadAdminUiServlet.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/servlet/LoadAdminUiServlet.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/servlet/LoadAdminUiServlet.java Wed Sep 2 13:06:13 2015
@@ -20,6 +20,7 @@ package org.apache.solr.servlet;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
+import org.apache.solr.common.params.CommonParams;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.core.SolrCore;
@@ -42,9 +43,11 @@ public final class LoadAdminUiServlet ex
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException {
+
+ response.addHeader("X-Frame-Options", "DENY"); // security: SOLR-7966 - avoid clickjacking for admin interface
+
// This attribute is set by the SolrDispatchFilter
CoreContainer cores = (CoreContainer) request.getAttribute("org.apache.solr.CoreContainer");
-
InputStream in = getServletContext().getResourceAsStream("/admin.html");
if(in != null && cores != null) {
try {
@@ -62,7 +65,7 @@ public final class LoadAdminUiServlet ex
};
String[] replace = new String[] {
StringEscapeUtils.escapeJavaScript(request.getContextPath()),
- StringEscapeUtils.escapeJavaScript(CoreContainer.CORES_HANDLER_PATH),
+ StringEscapeUtils.escapeJavaScript(CommonParams.CORES_HANDLER_PATH),
StringEscapeUtils.escapeJavaScript(pack.getSpecificationVersion())
};
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/store/blockcache/CachedIndexOutput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/store/blockcache/CachedIndexOutput.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/store/blockcache/CachedIndexOutput.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/store/blockcache/CachedIndexOutput.java Wed Sep 2 13:06:13 2015
@@ -1,6 +1,6 @@
package org.apache.solr.store.blockcache;
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/update/CommitTracker.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/update/CommitTracker.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/update/CommitTracker.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/update/CommitTracker.java Wed Sep 2 13:06:13 2015
@@ -89,10 +89,10 @@ public final class CommitTracker impleme
public synchronized void close() {
if (pending != null) {
- pending.cancel(true);
+ pending.cancel(false);
pending = null;
}
- scheduler.shutdownNow();
+ scheduler.shutdown();
}
/** schedule individual commits */
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/update/UpdateLog.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/update/UpdateLog.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/update/UpdateLog.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/update/UpdateLog.java Wed Sep 2 13:06:13 2015
@@ -906,7 +906,7 @@ public class UpdateLog implements Plugin
}
try {
- ExecutorUtil.shutdownNowAndAwaitTermination(recoveryExecutor);
+ ExecutorUtil.shutdownAndAwaitTermination(recoveryExecutor);
} catch (Exception e) {
SolrException.log(log, e);
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java Wed Sep 2 13:06:13 2015
@@ -21,8 +21,8 @@ import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.CharsRefBuilder;
import org.apache.solr.client.solrj.request.UpdateRequest;
import org.apache.solr.cloud.CloudDescriptor;
-import org.apache.solr.cloud.DistributedQueue;
import org.apache.solr.cloud.LeaderInitiatedRecoveryThread;
+import org.apache.solr.cloud.DistributedQueue;
import org.apache.solr.cloud.Overseer;
import org.apache.solr.cloud.ZkController;
import org.apache.solr.cloud.overseer.OverseerAction;
@@ -1640,7 +1640,7 @@ public class DistributedUpdateProcessor
if (ulog == null || ulog.getState() == UpdateLog.State.ACTIVE || (cmd.getFlags() & UpdateCommand.REPLAY) != 0) {
super.processCommit(cmd);
} else {
- log.info("Ignoring commit while not ACTIVE - state: " + ulog.getState() + " replay:" + (cmd.getFlags() & UpdateCommand.REPLAY));
+ log.info("Ignoring commit while not ACTIVE - state: " + ulog.getState() + " replay: " + ((cmd.getFlags() & UpdateCommand.REPLAY) != 0));
}
} finally {
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/update/processor/DocExpirationUpdateProcessorFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/update/processor/DocExpirationUpdateProcessorFactory.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/update/processor/DocExpirationUpdateProcessorFactory.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/update/processor/DocExpirationUpdateProcessorFactory.java Wed Sep 2 13:06:13 2015
@@ -23,6 +23,7 @@ import org.apache.solr.common.SolrExcept
import static org.apache.solr.common.SolrException.ErrorCode.*;
+import org.apache.solr.common.util.ExecutorUtil;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.cloud.Replica;
@@ -266,11 +267,11 @@ public final class DocExpirationUpdatePr
core.addCloseHook(new CloseHook() {
public void postClose(SolrCore core) {
- // update handler is gone, hard terminiate anything that's left.
+ // update handler is gone, terminate anything that's left.
if (executor.isTerminating()) {
- log.info("Triggering hard close of DocExpiration Executor");
- executor.shutdownNow();
+ log.info("Waiting for close of DocExpiration Executor");
+ ExecutorUtil.shutdownAndAwaitTermination(executor);
}
}
public void preClose(SolrCore core) {
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/SimplePostTool.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/SimplePostTool.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/SimplePostTool.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/SimplePostTool.java Wed Sep 2 13:06:13 2015
@@ -1093,7 +1093,7 @@ public class SimplePostTool {
// Raw content type of form "text/html; encoding=utf-8"
String rawContentType = conn.getContentType();
String type = rawContentType.split(";")[0];
- if(typeSupported(type)) {
+ if(typeSupported(type) || "*".equals(fileTypes)) {
String encoding = conn.getContentEncoding();
InputStream is;
if (encoding != null && encoding.equalsIgnoreCase("gzip")) {
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/SolrCLI.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/SolrCLI.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/SolrCLI.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/SolrCLI.java Wed Sep 2 13:06:13 2015
@@ -70,6 +70,7 @@ import org.apache.http.client.utils.URIB
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.util.EntityUtils;
+import org.apache.lucene.util.Version;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
@@ -225,6 +226,12 @@ public class SolrCLI {
exit(1);
}
+ if (args.length == 1 && Arrays.asList("-v","-version","version").contains(args[0])) {
+ // Simple version tool, no need for its own class
+ System.out.println(Version.LATEST);
+ exit(0);
+ }
+
String configurerClassName = System.getProperty("solr.authentication.httpclient.configurer");
if (configurerClassName!=null) {
try {
@@ -1446,13 +1453,7 @@ public class SolrCLI {
try {
json = getJson(createCollectionUrl);
} catch (SolrServerException sse) {
- // check if already exists
- if (safeCheckCollectionExists(collectionListUrl, collectionName)) {
- throw new IllegalArgumentException("Collection '"+collectionName+
- "' already exists!\nChecked collection existence using Collections API command:\n"+collectionListUrl);
- } else {
- throw new Exception("Failed to create collection '"+collectionName+"' due to: "+sse.getMessage());
- }
+ throw new Exception("Failed to create collection '"+collectionName+"' due to: "+sse.getMessage());
}
CharArr arr = new CharArr();
@@ -1584,18 +1585,7 @@ public class SolrCLI {
echo("\nCreating new core '" + coreName + "' using command:\n" + createCoreUrl + "\n");
- Map<String,Object> json = null;
- try {
- json = getJson(createCoreUrl);
- } catch (SolrServerException sse) {
- // mostly likely the core already exists ...
- if (safeCheckCoreExists(coreStatusUrl, coreName)) {
- // core already exists
- throw new IllegalArgumentException("Core '"+coreName+"' already exists!\nChecked core existence using Core API command:\n"+coreStatusUrl);
- } else {
- throw sse;
- }
- }
+ Map<String,Object> json = getJson(createCoreUrl);
CharArr arr = new CharArr();
new JSONWriter(arr, 2).write(json);
@@ -2150,25 +2140,16 @@ public class SolrCLI {
}
if (exampledocsDir.isDirectory()) {
- File postJarFile = new File(exampledocsDir, "post.jar");
String updateUrl = String.format(Locale.ROOT, "%s/%s/update", solrUrl, collectionName);
echo("Indexing tech product example docs from "+exampledocsDir.getAbsolutePath());
- if (postJarFile.isFile()) {
- String javaHome = System.getProperty("java.home");
- String java = javaHome+"/bin/java";
- String postCmd = String.format(Locale.ROOT, "%s -Durl=\"%s\" -jar %s \"%s\"/*.xml",
- java, updateUrl, postJarFile.getAbsolutePath(), exampledocsDir.getAbsolutePath());
- executor.execute(org.apache.commons.exec.CommandLine.parse(postCmd));
+
+ String currentPropVal = System.getProperty("url");
+ System.setProperty("url", updateUrl);
+ SimplePostTool.main(new String[] {exampledocsDir.getAbsolutePath()+"/*.xml"});
+ if (currentPropVal != null) {
+ System.setProperty("url", currentPropVal); // reset
} else {
- // a bit hacky, but just use SimplePostTool directly
- String currentPropVal = System.getProperty("url");
- System.setProperty("url", updateUrl);
- SimplePostTool.main(new String[] {exampledocsDir.getAbsolutePath()+"/*.xml"});
- if (currentPropVal != null) {
- System.setProperty("url", currentPropVal); // reset
- } else {
- System.clearProperty("url");
- }
+ System.clearProperty("url");
}
} else {
echo("exampledocs directory not found, skipping indexing step for the techproducts example");
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/hll/BigEndianAscendingWordDeserializer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/hll/BigEndianAscendingWordDeserializer.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/hll/BigEndianAscendingWordDeserializer.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/hll/BigEndianAscendingWordDeserializer.java Wed Sep 2 13:06:13 2015
@@ -99,7 +99,7 @@ class BigEndianAscendingWordDeserializer
}
// First bit of the word
- final long firstBitIndex = (position * wordLength);
+ final long firstBitIndex = ((long)position) * ((long)wordLength);
final int firstByteIndex = (bytePadding + (int)(firstBitIndex / BITS_PER_BYTE));
final int firstByteSkipBits = (int)(firstBitIndex % BITS_PER_BYTE);
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/hll/BigEndianAscendingWordSerializer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/hll/BigEndianAscendingWordSerializer.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/hll/BigEndianAscendingWordSerializer.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/hll/BigEndianAscendingWordSerializer.java Wed Sep 2 13:06:13 2015
@@ -85,7 +85,7 @@ class BigEndianAscendingWordSerializer i
this.wordLength = wordLength;
this.wordCount = wordCount;
- final long bitsRequired = (wordLength * wordCount);
+ final long bitsRequired = ((long)wordLength) * ((long)wordCount);
final boolean leftoverBits = ((bitsRequired % BITS_PER_BYTE) != 0);
final int bytesRequired = (int)(bitsRequired / BITS_PER_BYTE) + (leftoverBits ? 1 : 0) + bytePadding;
bytes = new byte[bytesRequired];
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/hll/HLL.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/hll/HLL.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/hll/HLL.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/util/hll/HLL.java Wed Sep 2 13:06:13 2015
@@ -19,8 +19,8 @@ package org.apache.solr.util.hll;
import java.util.Arrays;
-import com.carrotsearch.hppc.IntByteOpenHashMap;
-import com.carrotsearch.hppc.LongOpenHashSet;
+import com.carrotsearch.hppc.IntByteHashMap;
+import com.carrotsearch.hppc.LongHashSet;
import com.carrotsearch.hppc.cursors.IntByteCursor;
import com.carrotsearch.hppc.cursors.LongCursor;
@@ -69,9 +69,9 @@ public class HLL implements Cloneable {
// ************************************************************************
// Storage
// storage used when #type is EXPLICIT, null otherwise
- LongOpenHashSet explicitStorage;
+ LongHashSet explicitStorage;
// storage used when #type is SPARSE, null otherwise
- IntByteOpenHashMap sparseProbabilisticStorage;
+ IntByteHashMap sparseProbabilisticStorage;
// storage used when #type is FULL, null otherwise
BitVector probabilisticStorage;
@@ -398,8 +398,9 @@ public class HLL implements Cloneable {
final int j = (int)(rawValue & mBitsMask);
final byte currentValue;
- if (sparseProbabilisticStorage.containsKey(j)) {
- currentValue = sparseProbabilisticStorage.lget();
+ final int index = sparseProbabilisticStorage.indexOf(j);
+ if (index >= 0) {
+ currentValue = sparseProbabilisticStorage.indexGet(index);
} else {
currentValue = 0;
}
@@ -467,10 +468,10 @@ public class HLL implements Cloneable {
// nothing to be done
break;
case EXPLICIT:
- this.explicitStorage = new LongOpenHashSet();
+ this.explicitStorage = new LongHashSet();
break;
case SPARSE:
- this.sparseProbabilisticStorage = new IntByteOpenHashMap();
+ this.sparseProbabilisticStorage = new IntByteHashMap();
break;
case FULL:
this.probabilisticStorage = new BitVector(regwidth, m);
@@ -522,7 +523,7 @@ public class HLL implements Cloneable {
for(int j=0; j<m; j++) {
final long register;
if (sparseProbabilisticStorage.containsKey(j)) {
- register = sparseProbabilisticStorage.lget();
+ register = sparseProbabilisticStorage.get(j);
} else {
register = 0;
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/test-files/solr/collection1/conf/schema-HighlighterMaxOffsetTest.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/test-files/solr/collection1/conf/schema-HighlighterMaxOffsetTest.xml?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/test-files/solr/collection1/conf/schema-HighlighterMaxOffsetTest.xml (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/test-files/solr/collection1/conf/schema-HighlighterMaxOffsetTest.xml Wed Sep 2 13:06:13 2015
@@ -50,7 +50,7 @@ Test for HighlighterMaxOffsetTest which
<!-- Just like text_general except it reverses the characters of
- each token, to enable more efficient leading wildcard queries. -->
+ each token, to enable more efficient leading wildcard queries. -->
<fieldType name="text_general_rev" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
Modified: lucene/dev/branches/lucene6699/solr/core/src/test-files/solr/collection1/conf/schema-phrasesuggest.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/test-files/solr/collection1/conf/schema-phrasesuggest.xml?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/test-files/solr/collection1/conf/schema-phrasesuggest.xml (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/test-files/solr/collection1/conf/schema-phrasesuggest.xml Wed Sep 2 13:06:13 2015
@@ -31,23 +31,23 @@
</fieldType>
<fieldType name="phrase_suggest" class="solr.TextField">
- <analyzer>
- <tokenizer class="solr.KeywordTokenizerFactory"/>
- <filter class="solr.PatternReplaceFilterFactory"
- pattern="([^\p{L}\p{M}\p{N}\p{Cs}]*[\p{L}\p{M}\p{N}\p{Cs}\_]+:)|([^\p{L}\p{M}\p{N}\p{Cs}])+"
- replacement=" " replace="all"/>
- <filter class="solr.LowerCaseFilterFactory"/>
- <filter class="solr.TrimFilterFactory"/>
- </analyzer>
- </fieldType>
-
- <fieldType name="ja_suggest" class="solr.TextField">
- <analyzer>
- <tokenizer class="solr.JapaneseTokenizerFactory" mode="normal"/>
- <filter class="solr.CJKWidthFilterFactory"/>
- <filter class="solr.JapaneseReadingFormFilterFactory" useRomaji="true"/>
- </analyzer>
- </fieldType>
+ <analyzer>
+ <tokenizer class="solr.KeywordTokenizerFactory"/>
+ <filter class="solr.PatternReplaceFilterFactory"
+ pattern="([^\p{L}\p{M}\p{N}\p{Cs}]*[\p{L}\p{M}\p{N}\p{Cs}\_]+:)|([^\p{L}\p{M}\p{N}\p{Cs}])+"
+ replacement=" " replace="all"/>
+ <filter class="solr.LowerCaseFilterFactory"/>
+ <filter class="solr.TrimFilterFactory"/>
+ </analyzer>
+ </fieldType>
+
+ <fieldType name="ja_suggest" class="solr.TextField">
+ <analyzer>
+ <tokenizer class="solr.JapaneseTokenizerFactory" mode="normal"/>
+ <filter class="solr.CJKWidthFilterFactory"/>
+ <filter class="solr.JapaneseReadingFormFilterFactory" useRomaji="true"/>
+ </analyzer>
+ </fieldType>
</types>
<fields>
Modified: lucene/dev/branches/lucene6699/solr/core/src/test-files/solr/collection1/conf/schema-spellchecker.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/test-files/solr/collection1/conf/schema-spellchecker.xml?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/test-files/solr/collection1/conf/schema-spellchecker.xml (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/test-files/solr/collection1/conf/schema-spellchecker.xml Wed Sep 2 13:06:13 2015
@@ -46,22 +46,22 @@
</analyzer>
</fieldType>
- <fieldType name="spellText" class="solr.TextField" positionIncrementGap="100">
- <analyzer type="index">
- <tokenizer class="solr.StandardTokenizerFactory"/>
- <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
- <filter class="solr.StandardFilterFactory"/>
- <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
- </analyzer>
- <analyzer type="query">
- <tokenizer class="solr.StandardTokenizerFactory"/>
- <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
- <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
- <filter class="solr.StandardFilterFactory"/>
- <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
- </analyzer>
- </fieldType>
-
+ <fieldType name="spellText" class="solr.TextField" positionIncrementGap="100">
+ <analyzer type="index">
+ <tokenizer class="solr.StandardTokenizerFactory"/>
+ <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
+ <filter class="solr.StandardFilterFactory"/>
+ <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+ </analyzer>
+ <analyzer type="query">
+ <tokenizer class="solr.StandardTokenizerFactory"/>
+ <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+ <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
+ <filter class="solr.StandardFilterFactory"/>
+ <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+ </analyzer>
+ </fieldType>
+
</types>
Modified: lucene/dev/branches/lucene6699/solr/core/src/test-files/solr/collection1/conf/schema.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/test-files/solr/collection1/conf/schema.xml?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/test-files/solr/collection1/conf/schema.xml (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/test-files/solr/collection1/conf/schema.xml Wed Sep 2 13:06:13 2015
@@ -508,7 +508,7 @@
<field name="standardfilt" type="standardfilt" indexed="true" stored="true"/>
<field name="lowerfilt" type="lowerfilt" indexed="true" stored="true"/>
<field name="lowerfilt1" type="lowerfilt" indexed="true" stored="true"/>
- <field name="lowerfilt1and2" type="lowerfilt" indexed="true" stored="true"/>
+ <field name="lowerfilt1and2" type="lowerfilt" indexed="true" stored="true"/>
<field name="patterntok" type="patterntok" indexed="true" stored="true"/>
<field name="patternreplacefilt" type="patternreplacefilt" indexed="true" stored="true"/>
<field name="porterfilt" type="porterfilt" indexed="true" stored="true"/>
@@ -665,22 +665,22 @@
<copyField source="title" dest="title_stringNoNorms"/>
<copyField source="title" dest="text"/>
- <copyField source="subject" dest="text"/>
+ <copyField source="subject" dest="text"/>
- <copyField source="lowerfilt1" dest="lowerfilt1and2"/>
- <copyField source="lowerfilt" dest="lowerfilt1and2"/>
+ <copyField source="lowerfilt1" dest="lowerfilt1and2"/>
+ <copyField source="lowerfilt" dest="lowerfilt1and2"/>
- <copyField source="*_t" dest="text"/>
+ <copyField source="*_t" dest="text"/>
- <copyField source="id" dest="range_facet_l"/>
- <copyField source="range_facet_f" dest="range_facet_d"/>
- <copyField source="range_facet_f1" dest="range_facet_f1_dv"/>
-
- <copyField source="id" dest="range_facet_l_dv"/>
- <copyField source="id" dest="range_facet_i_dv"/>
- <copyField source="range_facet_f" dest="range_facet_f_dv"/>
- <copyField source="range_facet_f" dest="range_facet_d_dv"/>
- <copyField source="bday" dest="range_facet_dt_dv"/>
+ <copyField source="id" dest="range_facet_l"/>
+ <copyField source="range_facet_f" dest="range_facet_d"/>
+ <copyField source="range_facet_f1" dest="range_facet_f1_dv"/>
+
+ <copyField source="id" dest="range_facet_l_dv"/>
+ <copyField source="id" dest="range_facet_i_dv"/>
+ <copyField source="range_facet_f" dest="range_facet_f_dv"/>
+ <copyField source="range_facet_f" dest="range_facet_d_dv"/>
+ <copyField source="bday" dest="range_facet_dt_dv"/>
<!-- dynamic destination -->
<copyField source="*_dynamic" dest="dynamic_*"/>