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
  * &lt;/fieldType&gt;</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']");
+  }
+
+}