You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by si...@apache.org on 2012/10/19 21:07:27 UTC
svn commit: r1400233 -
/lucene/dev/branches/lucene3846/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggester.java
Author: simonw
Date: Fri Oct 19 19:07:27 2012
New Revision: 1400233
URL: http://svn.apache.org/viewvc?rev=1400233&view=rev
Log:
LUCENE-3846: compare UTF-8 bytes instead of converting to UTF-16 first
Modified:
lucene/dev/branches/lucene3846/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggester.java
Modified: lucene/dev/branches/lucene3846/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggester.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3846/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggester.java?rev=1400233&r1=1400232&r2=1400233&view=diff
==============================================================================
--- lucene/dev/branches/lucene3846/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggester.java (original)
+++ lucene/dev/branches/lucene3846/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggester.java Fri Oct 19 19:07:27 2012
@@ -472,7 +472,7 @@ public class AnalyzingSuggester extends
assert num > 0;
//System.out.println("lookup key=" + key + " num=" + num);
-
+ final BytesRef utf8Key = new BytesRef(key);
try {
Automaton lookupAutomaton = toLookupAutomaton(key);
@@ -538,9 +538,9 @@ public class AnalyzingSuggester extends
// nodes we have and the
// maxSurfaceFormsPerAnalyzedForm:
for(MinResult<Pair<Long,BytesRef>> completion : completions) {
- spare.grow(completion.output.output2.length);
- UnicodeUtil.UTF8toUTF16(completion.output.output2, spare);
- if (CHARSEQUENCE_COMPARATOR.compare(spare, key) == 0) {
+ if (utf8Key.bytesEquals(completion.output.output2)) {
+ spare.grow(completion.output.output2.length);
+ UnicodeUtil.UTF8toUTF16(completion.output.output2, spare);
results.add(new LookupResult(spare.toString(), decodeWeight(completion.output.output1)));
break;
}
@@ -574,16 +574,12 @@ public class AnalyzingSuggester extends
// In exactFirst mode, don't accept any paths
// matching the surface form since that will
// create duplicate results:
- spare.grow(output.output2.length);
- UnicodeUtil.UTF8toUTF16(output.output2, spare);
- return CHARSEQUENCE_COMPARATOR.compare(spare, key) != 0;
+ return !utf8Key.bytesEquals(output.output2);
}
}
};
final List<FSTUtil.Path<Pair<Long,BytesRef>>> prefixPaths = intersector.intersectAll();
-// System.out.println(key);
for (FSTUtil.Path<Pair<Long,BytesRef>> path : prefixPaths) {
-// System.out.println(UnicodeUtil.newString(path.input.ints, path.input.offset, path.input.length));
searcher.addStartPaths(path.fstNode, path.output, true, path.input);
}