You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2011/10/29 02:56:48 UTC

svn commit: r1190721 - in /lucene/dev/branches/lucene2621/solr/core/src: java/org/apache/solr/core/ java/org/apache/solr/schema/ test-files/solr/conf/ test/org/apache/solr/core/

Author: rmuir
Date: Sat Oct 29 00:56:47 2011
New Revision: 1190721

URL: http://svn.apache.org/viewvc?rev=1190721&view=rev
Log:
LUCENE-3490: clean up the solr integration some more

Added:
    lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/core/DefaultCodecProviderFactory.java   (with props)
Removed:
    lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/core/SchemaCodec.java
Modified:
    lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/core/CodecProviderFactory.java
    lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/core/SolrCore.java
    lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/schema/FieldType.java
    lucene/dev/branches/lucene2621/solr/core/src/test-files/solr/conf/schema_codec.xml
    lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/core/TestCodecProviderSupport.java

Modified: lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/core/CodecProviderFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/core/CodecProviderFactory.java?rev=1190721&r1=1190720&r2=1190721&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/core/CodecProviderFactory.java (original)
+++ lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/core/CodecProviderFactory.java Sat Oct 29 00:56:47 2011
@@ -19,6 +19,7 @@ package org.apache.solr.core;
 
 import org.apache.lucene.index.codecs.CodecProvider;
 import org.apache.solr.common.util.NamedList;
+import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.util.plugin.NamedListInitializedPlugin;
 
 /**
@@ -28,5 +29,5 @@ public abstract class CodecProviderFacto
   public void init(NamedList args) {  
   }
   
-  public abstract CodecProvider create();
+  public abstract CodecProvider create(IndexSchema schema);
 }

Added: lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/core/DefaultCodecProviderFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/core/DefaultCodecProviderFactory.java?rev=1190721&view=auto
==============================================================================
--- lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/core/DefaultCodecProviderFactory.java (added)
+++ lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/core/DefaultCodecProviderFactory.java Sat Oct 29 00:56:47 2011
@@ -0,0 +1,58 @@
+package org.apache.solr.core;
+
+/**
+ * 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.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.lucene.index.FieldInfo;
+import org.apache.lucene.index.codecs.Codec;
+import org.apache.lucene.index.codecs.CodecProvider;
+import org.apache.lucene.index.codecs.CoreCodecProvider;
+import org.apache.lucene.index.codecs.lucene40.Lucene40Codec;
+import org.apache.solr.schema.IndexSchema;
+import org.apache.solr.schema.SchemaField;
+
+/**
+ * Default CodecProviderFactory implementation, extends Lucene's 
+ * and returns postings format implementations according to the 
+ * schema configuration.
+ * @lucene.experimental
+ */
+public class DefaultCodecProviderFactory extends CodecProviderFactory {
+
+  @Override
+  public CodecProvider create(final IndexSchema schema) {
+    return new CoreCodecProvider() {
+      @Override
+      public Codec getDefaultCodec() {
+        return new Lucene40Codec() {
+          @Override
+          public String getPostingsFormatForField(FieldInfo field) {
+            final SchemaField fieldOrNull = schema.getFieldOrNull(field.name);
+            if (fieldOrNull == null) {
+              throw new IllegalArgumentException("no such field " + field.name);
+            }
+            String postingsFormatName = fieldOrNull.getType().getPostingsFormat();
+            if (postingsFormatName != null) {
+              return postingsFormatName;
+            }
+            return super.getPostingsFormatForField(field);
+          }
+        };
+      }
+    };
+  }
+}

Modified: lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/core/SolrCore.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/core/SolrCore.java?rev=1190721&r1=1190720&r2=1190721&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/core/SolrCore.java (original)
+++ lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/core/SolrCore.java Sat Oct 29 00:56:47 2011
@@ -20,9 +20,7 @@ package org.apache.solr.core;
 import org.apache.lucene.index.IndexDeletionPolicy;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.codecs.Codec;
 import org.apache.lucene.index.codecs.CodecProvider;
-import org.apache.lucene.index.codecs.CoreCodecProvider;
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.store.Directory;
 import org.apache.solr.common.SolrException;
@@ -638,22 +636,14 @@ public final class SolrCore implements S
 
   private CodecProvider initCodecProvider(SolrConfig solrConfig, final IndexSchema schema) {
     final PluginInfo info = solrConfig.getPluginInfo(CodecProviderFactory.class.getName());
+    final CodecProviderFactory factory;
     if (info != null) {
-      // TODO: should we make a "SolrCodecProvider" class that ensures all custom subclasses are schema-aware?
-      // This would parallel how SimilarityProvider works.
-      CodecProviderFactory factory = (CodecProviderFactory) schema.getResourceLoader().newInstance(info.className);
-      factory.init(info.initArgs);
-      return factory.create();
+      factory = (CodecProviderFactory) schema.getResourceLoader().newInstance(info.className);
     } else {
-      // make sure we use the default if nothing is configured
-      final Codec schemaCodec = new SchemaCodec(schema);
-      return new CoreCodecProvider() {
-        @Override
-        public Codec getDefaultCodec() {
-          return schemaCodec;
-        }
-      };
+      factory = new DefaultCodecProviderFactory();
     }
+    factory.init(info.initArgs);
+    return factory.create(schema);
   }
 
   /**

Modified: lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/schema/FieldType.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/schema/FieldType.java?rev=1190721&r1=1190720&r2=1190721&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/schema/FieldType.java (original)
+++ lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/schema/FieldType.java Sat Oct 29 00:56:47 2011
@@ -167,10 +167,10 @@ public abstract class FieldType extends 
       initArgs.remove("positionIncrementGap");
     }
 
-    final String codec = initArgs.get("codec");
-    if (codec != null) {
-      this.codec = codec;
-      initArgs.remove("codec");
+    final String postingsFormat = initArgs.get("postingsFormat");
+    if (postingsFormat != null) {
+      this.postingsFormat = postingsFormat;
+      initArgs.remove("postingsFormat");
     }
 
     if (initArgs.size() > 0) {
@@ -527,12 +527,12 @@ public abstract class FieldType extends 
   }
   
   /**
-   * The codec ID used for this field type
+   * The postings format used for this field type
    */
-  protected String codec;
+  protected String postingsFormat;
   
-  public String getCodec() {
-    return codec;
+  public String getPostingsFormat() {
+    return postingsFormat;
   }
   
   /**

Modified: lucene/dev/branches/lucene2621/solr/core/src/test-files/solr/conf/schema_codec.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/solr/core/src/test-files/solr/conf/schema_codec.xml?rev=1190721&r1=1190720&r2=1190721&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/solr/core/src/test-files/solr/conf/schema_codec.xml (original)
+++ lucene/dev/branches/lucene2621/solr/core/src/test-files/solr/conf/schema_codec.xml Sat Oct 29 00:56:47 2011
@@ -17,9 +17,9 @@
 -->
 <schema name="codec" version="1.2">
  <types>
-  <fieldType name="string_pulsing" class="solr.StrField" codec="Pulsing"/>
-  <fieldType name="string_simpletext" class="solr.StrField" codec="SimpleText"/>
-  <fieldType name="string_standard" class="solr.StrField" codec="Standard"/>
+  <fieldType name="string_pulsing" class="solr.StrField" postingsFormat="Pulsing"/>
+  <fieldType name="string_simpletext" class="solr.StrField" postingsFormat="SimpleText"/>
+  <fieldType name="string_standard" class="solr.StrField" postingsFormat="Lucene40"/>
     <fieldType name="string" class="solr.StrField" />
   
  </types>

Modified: lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/core/TestCodecProviderSupport.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/core/TestCodecProviderSupport.java?rev=1190721&r1=1190720&r2=1190721&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/core/TestCodecProviderSupport.java (original)
+++ lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/core/TestCodecProviderSupport.java Sat Oct 29 00:56:47 2011
@@ -62,37 +62,6 @@ public class TestCodecProviderSupport ex
     assertEquals("Standard", codecProvider.getFieldCodec("foo_standard"));
   }
 
-  public void testUnmodifiable() {
-    CodecProvider codecProvider = h.getCore().getCodecProvider();
-    try {
-      codecProvider.setDefaultFieldCodec("foo");
-      fail("should be unmodifiable");
-    } catch (UnsupportedOperationException e) {
-      //
-    }
-
-    try {
-      codecProvider.setFieldCodec("foo", "bar");
-      fail("should be unmodifiable");
-    } catch (UnsupportedOperationException e) {
-      //
-    }
-
-    try {
-      codecProvider.register(new Lucene40PostingsFormat());
-      fail("should be unmodifiable");
-    } catch (UnsupportedOperationException e) {
-      //
-    }
-
-    try {
-      codecProvider.unregister(new Lucene40PostingsFormat());
-      fail("should be unmodifiable");
-    } catch (UnsupportedOperationException e) {
-      //
-    }
-  }
-
   public void testUnknownField() {
     CodecProvider codecProvider = h.getCore().getCodecProvider();
     try {