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 {