You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ho...@apache.org on 2012/08/31 05:44:06 UTC
svn commit: r1379275 - in /lucene/dev/trunk: lucene/
lucene/analysis/common/src/java/org/apache/lucene/analysis/util/
solr/core/src/test-files/solr/collection1/conf/
solr/core/src/test/org/apache/solr/search/
Author: hossman
Date: Fri Aug 31 03:44:05 2012
New Revision: 1379275
URL: http://svn.apache.org/viewvc?rev=1379275&view=rev
Log:
SOLR-3441: ElisionFilterFactory is now MultiTermAware
Added:
lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestElisionMultitermQuery.java (with props)
Modified:
lucene/dev/trunk/lucene/CHANGES.txt
lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ElisionFilterFactory.java
lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-folding.xml
Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1379275&r1=1379274&r2=1379275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Fri Aug 31 03:44:05 2012
@@ -29,6 +29,9 @@ New Features
as the default Codec on IndexWriter, because it cannot write new segments.
(Mike McCandless, Robert Muir)
+* SOLR-3441: ElisionFilterFactory is now MultiTermAware
+ (Jack Krupansky via hossman)
+
API Changes
* LUCENE-4299: Added Terms.hasPositions() and Terms.hasOffsets().
Modified: lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ElisionFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ElisionFilterFactory.java?rev=1379275&r1=1379274&r2=1379275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ElisionFilterFactory.java (original)
+++ lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/util/ElisionFilterFactory.java Fri Aug 31 03:44:05 2012
@@ -34,7 +34,7 @@ import org.apache.lucene.analysis.fr.Fre
* </fieldType></pre>
*
*/
-public class ElisionFilterFactory extends TokenFilterFactory implements ResourceLoaderAware {
+public class ElisionFilterFactory extends TokenFilterFactory implements ResourceLoaderAware, MultiTermAwareComponent {
private CharArraySet articles;
@@ -53,5 +53,10 @@ public class ElisionFilterFactory extend
public ElisionFilter create(TokenStream input) {
return new ElisionFilter(input, articles);
}
+
+ @Override
+ public AbstractAnalysisFactory getMultiTermComponent() {
+ return this;
+ }
}
Modified: lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-folding.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-folding.xml?rev=1379275&r1=1379274&r2=1379275&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-folding.xml (original)
+++ lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema-folding.xml Fri Aug 31 03:44:05 2012
@@ -206,6 +206,16 @@
</analyzer>
</fieldType>
+ <fieldType name="text_fr" class="solr.TextField" positionIncrementGap="100">
+ <analyzer>
+ <tokenizer class="solr.StandardTokenizerFactory"/>
+ <!-- removes l', etc -->
+ <filter class="solr.ElisionFilterFactory" ignoreCase="true" />
+ <filter class="solr.LowerCaseFilterFactory"/>
+ <filter class="solr.FrenchLightStemFilterFactory"/>
+ </analyzer>
+ </fieldType>
+
<fieldType name="int" class="solr.TrieIntField" precisionStep="4" omitNorms="true" positionIncrementGap="0"/>
<fieldType name="float" class="solr.TrieFloatField" precisionStep="4" omitNorms="true" positionIncrementGap="0"/>
@@ -250,6 +260,7 @@
<dynamicField name="*_folding" type="text_folding" indexed="true" stored="true"/>
<dynamicField name="*_stemming" type="text_stemming" indexed="true" stored="true"/>
<dynamicField name="*_keyword" type="text_keyword" indexed="true" stored="true"/>
+ <dynamicField name="*_fr" type="text_fr" indexed="true" stored="true"/>
</fields>
Added: lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestElisionMultitermQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestElisionMultitermQuery.java?rev=1379275&view=auto
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestElisionMultitermQuery.java (added)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestElisionMultitermQuery.java Fri Aug 31 03:44:05 2012
@@ -0,0 +1,52 @@
+package org.apache.solr.search;
+
+import org.apache.solr.SolrTestCaseJ4;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * 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.
+ */
+
+public class TestElisionMultitermQuery extends SolrTestCaseJ4 {
+
+ public String getCoreName() {
+ return "basic";
+ }
+
+ @BeforeClass
+ public static void beforeTests() throws Exception {
+ initCore("solrconfig-basic.xml", "schema-folding.xml");
+
+ assertU(adoc("id", "1", "text_fr", "l'Auberge"));
+ assertU(adoc("id", "2", "text_fr", "Auberge"));
+ assertU(adoc("id", "3", "text_fr", "other"));
+ assertU(commit());
+ }
+
+ @Test
+ public void testElisionMultitermQuery() {
+ assertQ(req("q", "text_fr:auberge"), "//result[@numFound='2']");
+ assertQ(req("q", "text_fr:Auberge"), "//result[@numFound='2']");
+ assertQ(req("q", "text_fr:l'auberge"), "//result[@numFound='2']");
+ assertQ(req("q", "text_fr:l'Auberge"), "//result[@numFound='2']");
+ assertQ(req("q", "text_fr:aub*"), "//result[@numFound='2']");
+ assertQ(req("q", "text_fr:Aub*"), "//result[@numFound='2']");
+ assertQ(req("q", "text_fr:l'aub*"), "//result[@numFound='2']");
+ assertQ(req("q", "text_fr:l'Aub*"), "//result[@numFound='2']");
+ }
+
+}