You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2011/05/17 20:37:17 UTC
svn commit: r1104453 - in /lucene/dev/trunk/lucene/src:
java/org/apache/lucene/index/codecs/VariableGapTermsIndexWriter.java
java/org/apache/lucene/util/automaton/fst/FST.java
test/org/apache/lucene/util/automaton/fst/TestFSTs.java
Author: mikemccand
Date: Tue May 17 18:37:17 2011
New Revision: 1104453
URL: http://svn.apache.org/viewvc?rev=1104453&view=rev
Log:
LUCENE-3111: multiple outputs for the empty string should always be merged by the outputs impl
Modified:
lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/VariableGapTermsIndexWriter.java
lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/fst/FST.java
lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/automaton/fst/TestFSTs.java
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/VariableGapTermsIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/VariableGapTermsIndexWriter.java?rev=1104453&r1=1104452&r2=1104453&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/VariableGapTermsIndexWriter.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/VariableGapTermsIndexWriter.java Tue May 17 18:37:17 2011
@@ -200,6 +200,7 @@ public class VariableGapTermsIndexWriter
private class FSTFieldWriter extends FieldWriter {
private final Builder<Long> fstBuilder;
private final PositiveIntOutputs fstOutputs;
+ private final long startTermsFilePointer;
final FieldInfo fieldInfo;
int numIndexTerms;
@@ -220,6 +221,7 @@ public class VariableGapTermsIndexWriter
// Always put empty string in
fstBuilder.add(new BytesRef(), fstOutputs.get(termsFilePointer));
+ startTermsFilePointer = termsFilePointer;
}
@Override
@@ -239,6 +241,11 @@ public class VariableGapTermsIndexWriter
@Override
public void add(BytesRef text, TermStats stats, long termsFilePointer) throws IOException {
+ if (text.length == 0) {
+ // We already added empty string in ctor
+ assert termsFilePointer == startTermsFilePointer;
+ return;
+ }
final int lengthSave = text.length;
text.length = indexedTermPrefixLength(lastTerm, text);
try {
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/fst/FST.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/fst/FST.java?rev=1104453&r1=1104452&r2=1104453&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/fst/FST.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/automaton/fst/FST.java Tue May 17 18:37:17 2011
@@ -232,9 +232,7 @@ public class FST<T> {
void setEmptyOutput(T v) throws IOException {
if (emptyOutput != null) {
- if (!emptyOutput.equals(v)) {
- emptyOutput = outputs.merge(emptyOutput, v);
- }
+ emptyOutput = outputs.merge(emptyOutput, v);
} else {
emptyOutput = v;
}
Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/automaton/fst/TestFSTs.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/automaton/fst/TestFSTs.java?rev=1104453&r1=1104452&r2=1104453&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/automaton/fst/TestFSTs.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/automaton/fst/TestFSTs.java Tue May 17 18:37:17 2011
@@ -540,7 +540,7 @@ public class TestFSTs extends LuceneTest
Object output = run(fst, term, null);
assertNotNull("term " + inputToString(inputMode, term) + " is not accepted", output);
- assertEquals(output, pair.output);
+ assertEquals(pair.output, output);
// verify enum's next
IntsRefFSTEnum.InputOutput<T> t = fstEnum.next();