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:30:07 UTC
svn commit: r1638712 - in /lucene/dev/branches/branch_5x: ./ 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:30:06 2014
New Revision: 1638712
URL: http://svn.apache.org/r1638712
Log:
SOLR-6085: Suggester crashes when prefixToken is longer than surface form (merge)
Modified:
lucene/dev/branches/branch_5x/ (props changed)
lucene/dev/branches/branch_5x/lucene/ (props changed)
lucene/dev/branches/branch_5x/lucene/suggest/ (props changed)
lucene/dev/branches/branch_5x/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java
lucene/dev/branches/branch_5x/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java
lucene/dev/branches/branch_5x/solr/ (props changed)
lucene/dev/branches/branch_5x/solr/CHANGES.txt (contents, props changed)
Modified: lucene/dev/branches/branch_5x/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java?rev=1638712&r1=1638711&r2=1638712&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java (original)
+++ lucene/dev/branches/branch_5x/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java Wed Nov 12 08:30:06 2014
@@ -701,12 +701,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/branch_5x/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java?rev=1638712&r1=1638711&r2=1638712&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java (original)
+++ lucene/dev/branches/branch_5x/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java Wed Nov 12 08:30:06 2014
@@ -41,9 +41,11 @@ import org.apache.lucene.search.BooleanC
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.LuceneTestCase;
import org.apache.lucene.util.TestUtil;
+import org.junit.Test;
public class AnalyzingInfixSuggesterTest extends LuceneTestCase {
@@ -1076,4 +1078,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(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/branch_5x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/CHANGES.txt?rev=1638712&r1=1638711&r2=1638712&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_5x/solr/CHANGES.txt Wed Nov 12 08:30:06 2014
@@ -371,6 +371,8 @@ Bug Fixes
* SOLR-6704: TrieDateField type drops schema properties in branch 4.10 (Tomás Fernández Löbbe)
+* SOLR-6085: Suggester crashes when prefixToken is longer than surface form (janhoy)
+
================== 4.10.2 ==================
Bug Fixes