Index: modules/facet/src/java/org/apache/lucene/facet/taxonomy/lucene/LuceneTaxonomyWriter.java =================================================================== --- modules/facet/src/java/org/apache/lucene/facet/taxonomy/lucene/LuceneTaxonomyWriter.java (revision 1141290) +++ modules/facet/src/java/org/apache/lucene/facet/taxonomy/lucene/LuceneTaxonomyWriter.java (working copy) @@ -30,7 +30,6 @@ import org.apache.lucene.index.Term; import org.apache.lucene.index.Terms; import org.apache.lucene.index.TermsEnum; -import org.apache.lucene.index.TermsEnum.SeekStatus; import org.apache.lucene.search.DocIdSetIterator; import org.apache.lucene.store.Directory; import org.apache.lucene.store.LockObtainFailedException; @@ -798,6 +797,7 @@ // per step) while (otherTaxonomiesLeft>0) { + // TODO: use a pq here String first=null; for (int i=0; i terms = new ArrayList(); + final TermsEnum termsEnum = MultiFields.getTerms(r, "body").iterator(); + BytesRef term; + while((term = termsEnum.next()) != null) { + terms.add(new BytesRef(term)); + } + if (VERBOSE) { + System.out.println("TEST: " + terms.size() + " terms"); + } + + int upto = -1; + final int iters = atLeast(200); + for(int iter=0;iter= terms.size()) { + assertEquals(TermsEnum.SeekStatus.END, status); + upto = -1; + } else { + assertEquals(TermsEnum.SeekStatus.NOT_FOUND, status); + assertEquals(terms.get(upto), termsEnum.term()); + } + } else { + assertEquals(TermsEnum.SeekStatus.FOUND, status); + assertEquals(terms.get(upto), termsEnum.term()); + } + } else { + if (VERBOSE) { + System.out.println("TEST: iter seekExact target=" + target.utf8ToString() + " exists=" + exists); + } + // seekExact + final boolean result = termsEnum.seekExact(target, false); + if (VERBOSE) { + System.out.println(" got " + result); + } + if (upto < 0) { + assertFalse(result); + upto = -1; + } else { + assertTrue(result); + assertEquals(target, termsEnum.term()); + } + } + } + } + + r.close(); + d.close(); + } +} Property changes on: lucene/src/test/org/apache/lucene/index/TestTermsEnum.java ___________________________________________________________________ Added: svn:eol-style + native Index: lucene/src/test/org/apache/lucene/util/fst/TestFSTs.java =================================================================== --- lucene/src/test/org/apache/lucene/util/fst/TestFSTs.java (revision 1141290) +++ lucene/src/test/org/apache/lucene/util/fst/TestFSTs.java (working copy) @@ -714,12 +714,12 @@ if (random.nextBoolean()) { if (VERBOSE) { - System.out.println(" do advanceCeil(" + inputToString(inputMode, pairs.get(upto).input) + ")"); + System.out.println(" do seekCeil(" + inputToString(inputMode, pairs.get(upto).input) + ")"); } isDone = fstEnum.seekCeil(pairs.get(upto).input) == null; } else { if (VERBOSE) { - System.out.println(" do advanceFloor(" + inputToString(inputMode, pairs.get(upto).input) + ")"); + System.out.println(" do seekFloor(" + inputToString(inputMode, pairs.get(upto).input) + ")"); } isDone = fstEnum.seekFloor(pairs.get(upto).input) == null; } Index: lucene/src/java/org/apache/lucene/index/MultiTermsEnum.java =================================================================== --- lucene/src/java/org/apache/lucene/index/MultiTermsEnum.java (revision 1141290) +++ lucene/src/java/org/apache/lucene/index/MultiTermsEnum.java (working copy) @@ -43,6 +43,7 @@ private final MultiDocsAndPositionsEnum.EnumWithSlice[] subDocsAndPositions; private BytesRef lastSeek; + private boolean lastSeekExact; private final BytesRef lastSeekScratch = new BytesRef(); private int numTop; @@ -149,6 +150,7 @@ } lastSeek = null; + lastSeekExact = true; for(int i=0;i