From c024cd87facde89344941a114b6231321b2b68ea Mon Sep 17 00:00:00 2001 From: tballison Date: Mon, 26 Feb 2018 13:14:33 -0500 Subject: [PATCH] SOLR-12035 -- don't forget to copy charfilters into nostopanalyzer --- .../solr/search/ExtendedDismaxQParser.java | 2 +- .../solr/collection1/conf/schema12.xml | 12 ++++++++++++ .../solr/search/TestExtendedDismaxParser.java | 19 ++++++++++++++++++- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java b/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java index 004d1c042af4..9d6cd593514d 100644 --- a/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java +++ b/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java @@ -1412,7 +1412,7 @@ private Analyzer noStopwordFilterAnalyzer(String fieldName) { newtf[j++] = facs[i]; } - TokenizerChain newa = new TokenizerChain(tcq.getTokenizerFactory(), newtf); + TokenizerChain newa = new TokenizerChain(tcq.getCharFilterFactories(), tcq.getTokenizerFactory(), newtf); newa.setPositionIncrementGap(tcq.getPositionIncrementGap(fieldName)); return newa; } diff --git a/solr/core/src/test-files/solr/collection1/conf/schema12.xml b/solr/core/src/test-files/solr/collection1/conf/schema12.xml index 97b6ed0df81d..de1b99809748 100644 --- a/solr/core/src/test-files/solr/collection1/conf/schema12.xml +++ b/solr/core/src/test-files/solr/collection1/conf/schema12.xml @@ -272,6 +272,17 @@ + + + + + + + + + + + @@ -590,6 +601,7 @@ + diff --git a/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java b/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java index 21d47db268c5..f77baaf6ee1d 100644 --- a/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java +++ b/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java @@ -96,6 +96,7 @@ public static void index() throws Exception { assertU(adoc("id", "71", "text_sw", "ties")); assertU(adoc("id", "72", "text_sw", "wifi ATM")); assertU(adoc("id", "73", "shingle23", "A B X D E")); + assertU(adoc("id", "74", "isocharfilter", "niño")); // assertU(adoc("id", "74", "text_pick_best", "tabby")); // assertU(adoc("id", "74", "text_as_distinct", "persian")); @@ -210,7 +211,23 @@ public void testLowercaseOperators() { , "*[count(//doc)=1]"); } } - + + public void testCharFilter() throws Exception { + // test that charfilter was applied by the indexer + assertQ(req("defType", "edismax", + "stopwords","false", + "qf", "isocharfilter", + "q","nino"), "*[count(//doc)=1]" + ); + + // test that charfilter was applied to the query + assertQ(req("defType", "edismax", + "stopwords","false", + "qf", "isocharfilter", + "q","niño"), "*[count(//doc)=1]" + ); + } + // test the edismax query parser based on the dismax parser public void testFocusQueryParser() { String allq = "id:[42 TO 51]";