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/02/09 00:53:25 UTC
svn commit: r1658277 [21/38] - in /lucene/dev/branches/lucene6005: ./
dev-tools/ dev-tools/idea/solr/contrib/dataimporthandler/
dev-tools/idea/solr/contrib/velocity/ dev-tools/maven/lucene/replicator/
dev-tools/maven/solr/ dev-tools/maven/solr/contrib/...
Modified: lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java (original)
+++ lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java Sun Feb 8 23:53:14 2015
@@ -19,12 +19,13 @@ package org.apache.solr.schema;
import org.apache.commons.io.IOUtils;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.util.CharFilterFactory;
+import org.apache.lucene.analysis.util.ResourceLoaderAware;
import org.apache.lucene.analysis.util.TokenFilterFactory;
import org.apache.lucene.analysis.util.TokenizerFactory;
import org.apache.solr.analysis.TokenizerChain;
+import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrResponse;
-import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.cloud.ZkController;
@@ -47,7 +48,6 @@ import org.apache.solr.core.SolrResource
import org.apache.solr.rest.schema.FieldTypeXmlAdapter;
import org.apache.solr.util.DefaultSolrThreadFactory;
import org.apache.solr.util.FileUtils;
-import org.apache.lucene.analysis.util.ResourceLoaderAware;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.data.Stat;
@@ -58,7 +58,6 @@ import org.xml.sax.InputSource;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
-
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -80,9 +79,6 @@ import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
-import static java.util.Collections.singletonList;
-import static java.util.Collections.singletonMap;
-
/** Solr-managed schema - non-user-editable, but can be mutable via internal and external REST API requests. */
public final class ManagedIndexSchema extends IndexSchema {
@@ -331,9 +327,8 @@ public final class ManagedIndexSchema ex
@Override
public Integer call() throws Exception {
- HttpSolrClient solr = new HttpSolrClient(coreUrl);
int remoteVersion = -1;
- try {
+ try (HttpSolrClient solr = new HttpSolrClient(coreUrl)) {
// eventually, this loop will get killed by the ExecutorService's timeout
while (remoteVersion == -1 || remoteVersion < expectedZkVersion) {
try {
@@ -358,10 +353,7 @@ public final class ManagedIndexSchema ex
}
}
}
- } finally {
- solr.shutdown();
}
-
return remoteVersion;
}
@@ -560,34 +552,8 @@ public final class ManagedIndexSchema ex
aware.inform(newSchema);
// looks good for the add, notify ResoureLoaderAware objects
- for (FieldType fieldType : fieldTypeList) {
-
- // must inform any sub-components used in the
- // tokenizer chain if they are ResourceLoaderAware
- if (fieldType.supportsAnalyzers()) {
- Analyzer indexAnalyzer = fieldType.getIndexAnalyzer();
- if (indexAnalyzer != null && indexAnalyzer instanceof TokenizerChain)
- informResourceLoaderAwareObjectsInChain((TokenizerChain)indexAnalyzer);
-
- Analyzer queryAnalyzer = fieldType.getQueryAnalyzer();
- // ref comparison is correct here (vs. equals) as they may be the same
- // object in which case, we don't need to inform twice ... however, it's
- // actually safe to call inform multiple times on an object anyway
- if (queryAnalyzer != null &&
- queryAnalyzer != indexAnalyzer &&
- queryAnalyzer instanceof TokenizerChain)
- informResourceLoaderAwareObjectsInChain((TokenizerChain)queryAnalyzer);
-
- // if fieldType is a TextField, it might have a multi-term analyzer
- if (fieldType instanceof TextField) {
- TextField textFieldType = (TextField)fieldType;
- Analyzer multiTermAnalyzer = textFieldType.getMultiTermAnalyzer();
- if (multiTermAnalyzer != null && multiTermAnalyzer != indexAnalyzer &&
- multiTermAnalyzer != queryAnalyzer && multiTermAnalyzer instanceof TokenizerChain)
- informResourceLoaderAwareObjectsInChain((TokenizerChain)multiTermAnalyzer);
- }
- }
- }
+ for (FieldType fieldType : fieldTypeList)
+ informResourceLoaderAwareObjectsForFieldType(fieldType);
newSchema.refreshAnalyzers();
@@ -611,7 +577,39 @@ public final class ManagedIndexSchema ex
}
return newSchema;
- }
+ }
+
+ /**
+ * Informs analyzers used by a fieldType.
+ */
+ protected void informResourceLoaderAwareObjectsForFieldType(FieldType fieldType) {
+ // must inform any sub-components used in the
+ // tokenizer chain if they are ResourceLoaderAware
+ if (!fieldType.supportsAnalyzers())
+ return;
+
+ Analyzer indexAnalyzer = fieldType.getIndexAnalyzer();
+ if (indexAnalyzer != null && indexAnalyzer instanceof TokenizerChain)
+ informResourceLoaderAwareObjectsInChain((TokenizerChain)indexAnalyzer);
+
+ Analyzer queryAnalyzer = fieldType.getQueryAnalyzer();
+ // ref comparison is correct here (vs. equals) as they may be the same
+ // object in which case, we don't need to inform twice ... however, it's
+ // actually safe to call inform multiple times on an object anyway
+ if (queryAnalyzer != null &&
+ queryAnalyzer != indexAnalyzer &&
+ queryAnalyzer instanceof TokenizerChain)
+ informResourceLoaderAwareObjectsInChain((TokenizerChain)queryAnalyzer);
+
+ // if fieldType is a TextField, it might have a multi-term analyzer
+ if (fieldType instanceof TextField) {
+ TextField textFieldType = (TextField)fieldType;
+ Analyzer multiTermAnalyzer = textFieldType.getMultiTermAnalyzer();
+ if (multiTermAnalyzer != null && multiTermAnalyzer != indexAnalyzer &&
+ multiTermAnalyzer != queryAnalyzer && multiTermAnalyzer instanceof TokenizerChain)
+ informResourceLoaderAwareObjectsInChain((TokenizerChain)multiTermAnalyzer);
+ }
+ }
@Override
public SchemaField newField(String fieldName, String fieldType, Map<String,?> options) {
@@ -786,6 +784,11 @@ public final class ManagedIndexSchema ex
for (SchemaAware aware : newSchema.schemaAware) {
aware.inform(newSchema);
}
+
+ // notify analyzers and other objects for our fieldTypes
+ for (FieldType fieldType : newSchema.fieldTypes.values())
+ informResourceLoaderAwareObjectsForFieldType(fieldType);
+
newSchema.refreshAnalyzers();
newSchema.schemaZkVersion = schemaZkVersion;
} catch (SolrException e) {
Modified: lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/PointType.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/PointType.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/PointType.java (original)
+++ lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/PointType.java Sun Feb 8 23:53:14 2015
@@ -17,10 +17,16 @@
package org.apache.solr.schema;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import com.spatial4j.core.distance.DistanceUtils;
import org.apache.lucene.document.FieldType;
+import org.apache.lucene.index.StorableField;
import org.apache.lucene.queries.function.ValueSource;
import org.apache.lucene.queries.function.valuesource.VectorValueSource;
-import org.apache.lucene.index.StorableField;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Query;
@@ -33,11 +39,6 @@ import org.apache.solr.response.TextResp
import org.apache.solr.search.QParser;
import org.apache.solr.search.SpatialOptions;
-import java.io.IOException;
-import java.util.Map;
-import java.util.List;
-import java.util.ArrayList;
-
/**
* A point type that indexes a point in an n-dimensional space as separate fields and supports range queries.
* See {@link LatLonType} for geo-spatial queries.
@@ -178,6 +179,7 @@ public class PointType extends Coordinat
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
}
IndexSchema schema = parser.getReq().getSchema();
+
if (dimension == 1){
//TODO: Handle distance measures
String lower = String.valueOf(point[0] - options.distance);
@@ -273,6 +275,13 @@ public class PointType extends Coordinat
return out;
}
+ @Override
+ public double getSphereRadius() {
+ // This won't likely be used. You should probably be using LatLonType instead if you felt the need for this.
+ // This is here just for backward compatibility reasons.
+ return DistanceUtils.EARTH_MEAN_RADIUS_KM;
+ }
+
}
@@ -293,4 +302,4 @@ class PointTypeValueSource extends Vecto
public String description() {
return name()+"("+sf.getName()+")";
}
-}
\ No newline at end of file
+}
Modified: lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/RandomSortField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/RandomSortField.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/RandomSortField.java (original)
+++ lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/RandomSortField.java Sun Feb 8 23:53:14 2015
@@ -109,7 +109,7 @@ public class RandomSortField extends Fie
private static FieldComparatorSource randomComparatorSource = new FieldComparatorSource() {
@Override
public FieldComparator<Integer> newComparator(final String fieldname, final int numHits, int sortPos, boolean reversed) {
- return new FieldComparator<Integer>() {
+ return new SimpleFieldComparator<Integer>() {
int seed;
private final int[] values = new int[numHits];
int bottomVal;
@@ -141,9 +141,8 @@ public class RandomSortField extends Fie
}
@Override
- public FieldComparator setNextReader(LeafReaderContext context) {
+ protected void doSetNextReader(LeafReaderContext context) {
seed = getSeed(fieldname, context);
- return this;
}
@Override
Modified: lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/SchemaField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/SchemaField.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/SchemaField.java (original)
+++ lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/SchemaField.java Sun Feb 8 23:53:14 2015
@@ -96,10 +96,6 @@ public final class SchemaField extends F
public boolean storeTermOffsets() { return (properties & STORE_TERMOFFSETS)!=0; }
public boolean omitNorms() { return (properties & OMIT_NORMS)!=0; }
- /** @deprecated Use {@link #omitTermFreqAndPositions} */
- @Deprecated
- public boolean omitTf() { return omitTermFreqAndPositions(); }
-
public boolean omitTermFreqAndPositions() { return (properties & OMIT_TF_POSITIONS)!=0; }
public boolean omitPositions() { return (properties & OMIT_POSITIONS)!=0; }
public boolean storeOffsetsWithPositions() { return (properties & STORE_OFFSETS)!=0; }
Modified: lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/SchemaManager.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/SchemaManager.java (original)
+++ lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/SchemaManager.java Sun Feb 8 23:53:14 2015
@@ -134,7 +134,7 @@ public class SchemaManager {
if (!errs.isEmpty()) return errs;
SolrResourceLoader loader = req.getCore().getResourceLoader();
if (loader instanceof ZkSolrResourceLoader) {
-
+ ZkSolrResourceLoader zkLoader = (ZkSolrResourceLoader) loader;
StringWriter sw = new StringWriter();
try {
managedIndexSchema.persist(sw);
@@ -145,7 +145,7 @@ public class SchemaManager {
}
try {
- ZkController.persistConfigResourceToZooKeeper(loader,
+ ZkController.persistConfigResourceToZooKeeper(zkLoader,
managedIndexSchema.getSchemaZkVersion(),
managedIndexSchema.getResourceName(),
sw.toString().getBytes(StandardCharsets.UTF_8),
Modified: lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/SpatialQueryable.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/SpatialQueryable.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/SpatialQueryable.java (original)
+++ lucene/dev/branches/lucene6005/solr/core/src/java/org/apache/solr/schema/SpatialQueryable.java Sun Feb 8 23:53:14 2015
@@ -31,4 +31,6 @@ import org.apache.solr.search.SpatialOpt
public interface SpatialQueryable {
public Query createSpatialQuery(QParser parser, SpatialOptions options);
+
+ public double getSphereRadius();
}