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();
 }