You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ja...@apache.org on 2014/11/12 09:38:33 UTC
svn commit: r1638716 - in /lucene/dev/branches/lucene_solr_4_10: ./ lucene/
lucene/suggest/
lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/
lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/ solr/
Author: janhoy
Date: Wed Nov 12 08:38:32 2014
New Revision: 1638716
URL: http://svn.apache.org/r1638716
Log:
SOLR-6085: Suggester crashes when prefixToken is longer than surface form (backport)
Modified:
lucene/dev/branches/lucene_solr_4_10/ (props changed)
lucene/dev/branches/lucene_solr_4_10/lucene/ (props changed)
lucene/dev/branches/lucene_solr_4_10/lucene/suggest/ (props changed)
lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java
lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java
lucene/dev/branches/lucene_solr_4_10/solr/ (props changed)
lucene/dev/branches/lucene_solr_4_10/solr/CHANGES.txt (contents, props changed)
Modified: lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java?rev=1638716&r1=1638715&r2=1638716&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java (original)
+++ lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java Wed Nov 12 08:38:32 2014
@@ -626,12 +626,14 @@ public class AnalyzingInfixSuggester ext
protected void addPrefixMatch(StringBuilder sb, String surface, String analyzed, String prefixToken) {
// TODO: apps can try to invert their analysis logic
// here, e.g. downcase the two before checking prefix:
+ if (prefixToken.length() >= surface.length()) {
+ addWholeMatch(sb, surface, analyzed);
+ return;
+ }
sb.append("<b>");
sb.append(surface.substring(0, prefixToken.length()));
sb.append("</b>");
- if (prefixToken.length() < surface.length()) {
- sb.append(surface.substring(prefixToken.length()));
- }
+ sb.append(surface.substring(prefixToken.length()));
}
@Override
Modified: lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java?rev=1638716&r1=1638715&r2=1638716&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java (original)
+++ lucene/dev/branches/lucene_solr_4_10/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java Wed Nov 12 08:38:32 2014
@@ -39,11 +39,13 @@ import org.apache.lucene.analysis.util.C
import org.apache.lucene.search.suggest.Input;
import org.apache.lucene.search.suggest.InputArrayIterator;
import org.apache.lucene.search.suggest.Lookup.LookupResult;
+import org.apache.lucene.store.Directory;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.IOUtils;
import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.TestUtil;
+import org.junit.Test;
// Test requires postings offsets:
@SuppressCodecs({"Lucene3x","MockFixedIntBlock","MockVariableIntBlock","MockSep","MockRandom"})
@@ -921,4 +923,28 @@ public class AnalyzingInfixSuggesterTest
suggester.close();
}
}
+
+ @Test
+ public void testAddPrefixMatch() throws IOException {
+ Analyzer a = new MockAnalyzer(random(), MockTokenizer.WHITESPACE, false);
+ Directory dir = newDirectory();
+ AnalyzingInfixSuggester suggester = new AnalyzingInfixSuggester(TEST_VERSION_CURRENT, dir, a);
+
+ assertEquals("<b>Sol</b>r", pfmToString(suggester, "Solr", "Sol"));
+ assertEquals("<b>Solr</b>", pfmToString(suggester, "Solr", "Solr"));
+
+ // Test SOLR-6085 - the analyzed tokens match due to ss->Ã normalization
+ assertEquals("<b>daÃ</b>", pfmToString(suggester, "daÃ", "dass"));
+
+ dir.close();
+ suggester.close();
+ }
+
+ private String pfmToString(AnalyzingInfixSuggester suggester, String surface, String prefix) throws IOException {
+ StringBuilder sb = new StringBuilder();
+ suggester.addPrefixMatch(sb, surface, "", prefix);
+ return sb.toString();
+ }
+
+
}
Modified: lucene/dev/branches/lucene_solr_4_10/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_10/solr/CHANGES.txt?rev=1638716&r1=1638715&r2=1638716&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_10/solr/CHANGES.txt (original)
+++ lucene/dev/branches/lucene_solr_4_10/solr/CHANGES.txt Wed Nov 12 08:38:32 2014
@@ -37,6 +37,8 @@ Bug Fixes
scripts; remove -XX:+AggressiveOpts and only set -XX:-UseSuperWord for Java 1.7u40
to u51. (Uwe Schindler, janhoy, hossman, Timothy Potter)
+* SOLR-6085: Suggester crashes when prefixToken is longer than surface form (janhoy)
+
Other Changes
----------------------