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/11/15 01:01:46 UTC

svn commit: r1201968 [1/2] - in /lucene/dev/branches/lucene2621: lucene/contrib/highlighter/src/java/org/apache/lucene/search/highlight/ lucene/contrib/highlighter/src/java/org/apache/lucene/search/vectorhighlight/ lucene/contrib/memory/src/java/org/ap...

Author: mikemccand
Date: Tue Nov 15 00:01:43 2011
New Revision: 1201968

URL: http://svn.apache.org/viewvc?rev=1201968&view=rev
Log:
LUCENE-2621: add TermsEnum reuse; clean up more nocommits

Modified:
    lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/highlight/TokenSources.java
    lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/highlight/TokenStreamFromTermPositionVector.java
    lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldTermStack.java
    lucene/dev/branches/lucene2621/lucene/contrib/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
    lucene/dev/branches/lucene2621/lucene/contrib/misc/src/java/org/apache/lucene/index/FieldNormModifier.java
    lucene/dev/branches/lucene2621/lucene/contrib/misc/src/java/org/apache/lucene/misc/HighFreqTerms.java
    lucene/dev/branches/lucene2621/lucene/contrib/misc/src/test/org/apache/lucene/index/TestMultiPassIndexSplitter.java
    lucene/dev/branches/lucene2621/lucene/contrib/misc/src/test/org/apache/lucene/index/codecs/appending/TestAppendingCodec.java
    lucene/dev/branches/lucene2621/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/DuplicateFilter.java
    lucene/dev/branches/lucene2621/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeQuery.java
    lucene/dev/branches/lucene2621/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/regex/RegexQuery.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/BufferedDeletesStream.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/CheckIndex.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/DocTermOrds.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/FilterIndexReader.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/MultiTerms.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/ParallelReader.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/SegmentMerger.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/Terms.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/BlockTermsReader.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/BlockTreeTermsReader.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsReader.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsWriter.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/FieldsConsumer.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/lucene3x/Lucene3xFields.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/memory/MemoryPostingsFormat.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldsReader.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/FieldCacheImpl.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/FuzzyQuery.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/FuzzyTermsEnum.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/NumericRangeQuery.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/PrefixQuery.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/TermRangeQuery.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/util/automaton/CompiledAutomaton.java
    lucene/dev/branches/lucene2621/lucene/src/test-framework/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java
    lucene/dev/branches/lucene2621/lucene/src/test-framework/java/org/apache/lucene/index/codecs/ramonly/RAMOnlyPostingsFormat.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/Test2BTerms.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestCodecs.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDirectoryReader.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDoc.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDocCount.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDocTermOrds.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestFilterIndexReader.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestFlex.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexReader.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexWriterUnicode.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexableField.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestParallelTermEnum.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestPayloads.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentMerger.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentReader.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentTermDocs.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentTermEnum.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestStressAdvance.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestStressIndexing2.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSumDocFreq.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestTermVectorsReader.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestTermVectorsWriter.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestTermdocPerf.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestTermsEnum.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestTermsEnum2.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/codecs/lucene3x/TestSurrogates.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/codecs/lucene3x/TestTermInfosReaderIndex.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/codecs/pulsing/Test10KPulsings.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/codecs/pulsing/TestPulsingReuse.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/search/FieldCacheRewriteMethod.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/search/TestMultiPhraseQuery.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/search/TestMultiTermQueryRewrites.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/search/TestMultiThreadTermVectors.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/search/TestPhrasePrefixQuery.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/search/TestPrefixRandom.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/search/TestRegexpRandom2.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/search/TestTermVectors.java
    lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/util/fst/TestFSTs.java
    lucene/dev/branches/lucene2621/modules/analysis/common/src/java/org/apache/lucene/analysis/query/QueryAutoStopWordAnalyzer.java
    lucene/dev/branches/lucene2621/modules/analysis/common/src/test/org/apache/lucene/analysis/sinks/TestTeeSinkTokenFilter.java
    lucene/dev/branches/lucene2621/modules/benchmark/src/java/org/apache/lucene/benchmark/quality/utils/QualityQueriesFinder.java
    lucene/dev/branches/lucene2621/modules/benchmark/src/test/org/apache/lucene/benchmark/byTask/TestPerfTasksLogic.java
    lucene/dev/branches/lucene2621/modules/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyWriter.java
    lucene/dev/branches/lucene2621/modules/facet/src/test/org/apache/lucene/facet/FacetTestBase.java
    lucene/dev/branches/lucene2621/modules/queries/src/java/org/apache/lucene/queries/TermsFilter.java
    lucene/dev/branches/lucene2621/modules/queries/src/java/org/apache/lucene/queries/mlt/MoreLikeThis.java
    lucene/dev/branches/lucene2621/modules/queryparser/src/java/org/apache/lucene/queryparser/surround/query/SrndPrefixQuery.java
    lucene/dev/branches/lucene2621/modules/queryparser/src/java/org/apache/lucene/queryparser/surround/query/SrndTermQuery.java
    lucene/dev/branches/lucene2621/modules/queryparser/src/java/org/apache/lucene/queryparser/surround/query/SrndTruncQuery.java
    lucene/dev/branches/lucene2621/modules/suggest/src/java/org/apache/lucene/search/spell/HighFrequencyDictionary.java
    lucene/dev/branches/lucene2621/modules/suggest/src/java/org/apache/lucene/search/spell/LuceneDictionary.java
    lucene/dev/branches/lucene2621/modules/suggest/src/java/org/apache/lucene/search/spell/SpellChecker.java
    lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java
    lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/handler/component/TermVectorComponent.java
    lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
    lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
    lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java
    lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/search/function/FileFloatSource.java

Modified: lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/highlight/TokenSources.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/highlight/TokenSources.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/highlight/TokenSources.java (original)
+++ lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/highlight/TokenSources.java Tue Nov 15 00:01:43 2011
@@ -124,7 +124,7 @@ public class TokenSources {
   }
 
   private static boolean hasPositions(Terms vector) throws IOException {
-    final TermsEnum termsEnum = vector.iterator();
+    final TermsEnum termsEnum = vector.iterator(null);
     if (termsEnum.next() != null) {
       DocsAndPositionsEnum dpEnum = termsEnum.docsAndPositions(null, null);
       if (dpEnum != null) {
@@ -207,14 +207,14 @@ public class TokenSources {
       }
     }
     // code to reconstruct the original sequence of Tokens
-    TermsEnum termsEnum = tpv.iterator();
+    TermsEnum termsEnum = tpv.iterator(null);
     int totalTokens = 0;
     while(termsEnum.next() != null) {
       totalTokens += (int) termsEnum.totalTermFreq();
     }
     Token tokensInOriginalOrder[] = new Token[totalTokens];
     ArrayList<Token> unsortedTokens = null;
-    termsEnum = tpv.iterator();
+    termsEnum = tpv.iterator(null);
     BytesRef text;
     DocsAndPositionsEnum dpEnum = null;
     while ((text = termsEnum.next()) != null) {

Modified: lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/highlight/TokenStreamFromTermPositionVector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/highlight/TokenStreamFromTermPositionVector.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/highlight/TokenStreamFromTermPositionVector.java (original)
+++ lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/highlight/TokenStreamFromTermPositionVector.java Tue Nov 15 00:01:43 2011
@@ -56,7 +56,7 @@ public final class TokenStreamFromTermPo
     termAttribute = addAttribute(CharTermAttribute.class);
     positionIncrementAttribute = addAttribute(PositionIncrementAttribute.class);
     offsetAttribute = addAttribute(OffsetAttribute.class);
-    final TermsEnum termsEnum = vector.iterator();
+    final TermsEnum termsEnum = vector.iterator(null);
     BytesRef text;
     DocsAndPositionsEnum dpEnum = null;
     while((text = termsEnum.next()) != null) {

Modified: lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldTermStack.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldTermStack.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldTermStack.java (original)
+++ lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldTermStack.java Tue Nov 15 00:01:43 2011
@@ -91,7 +91,7 @@ public class FieldTermStack {
     }
 
     final CharsRef spare = new CharsRef();
-    final TermsEnum termsEnum = vector.iterator();
+    final TermsEnum termsEnum = vector.iterator(null);
     DocsAndPositionsEnum dpEnum = null;
     BytesRef text;
     while ((text = termsEnum.next()) != null) {

Modified: lucene/dev/branches/lucene2621/lucene/contrib/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/contrib/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/contrib/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java (original)
+++ lucene/dev/branches/lucene2621/lucene/contrib/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java Tue Nov 15 00:01:43 2011
@@ -813,7 +813,7 @@ public class MemoryIndex {
 
           return new Terms() {
             @Override 
-            public TermsEnum iterator() {
+            public TermsEnum iterator(TermsEnum reuse) {
               return new MemoryTermsEnum(info);
             }
 

Modified: lucene/dev/branches/lucene2621/lucene/contrib/misc/src/java/org/apache/lucene/index/FieldNormModifier.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/contrib/misc/src/java/org/apache/lucene/index/FieldNormModifier.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/contrib/misc/src/java/org/apache/lucene/index/FieldNormModifier.java (original)
+++ lucene/dev/branches/lucene2621/lucene/contrib/misc/src/java/org/apache/lucene/index/FieldNormModifier.java Tue Nov 15 00:01:43 2011
@@ -127,7 +127,7 @@ public class FieldNormModifier {
         if (fields != null) {
           Terms terms = fields.terms(field);
           if (terms != null) {
-            TermsEnum termsEnum = terms.iterator();
+            TermsEnum termsEnum = terms.iterator(null);
             DocsEnum docs = null;
             while(termsEnum.next() != null) {
               docs = termsEnum.docs(liveDocs, docs);

Modified: lucene/dev/branches/lucene2621/lucene/contrib/misc/src/java/org/apache/lucene/misc/HighFreqTerms.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/contrib/misc/src/java/org/apache/lucene/misc/HighFreqTerms.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/contrib/misc/src/java/org/apache/lucene/misc/HighFreqTerms.java (original)
+++ lucene/dev/branches/lucene2621/lucene/contrib/misc/src/java/org/apache/lucene/misc/HighFreqTerms.java Tue Nov 15 00:01:43 2011
@@ -117,7 +117,7 @@ public class HighFreqTerms {
       }
       Terms terms = fields.terms(field);
       if (terms != null) {
-        TermsEnum termsEnum = terms.iterator();
+        TermsEnum termsEnum = terms.iterator(null);
         tiq = new TermStatsQueue(numTerms);
         fillQueue(termsEnum, tiq, field);
       }
@@ -133,7 +133,7 @@ public class HighFreqTerms {
         if (field != null) {
           Terms terms = fieldsEnum.terms();
           if (terms != null) {
-            fillQueue(terms.iterator(), tiq, field);
+            fillQueue(terms.iterator(null), tiq, field);
           }
         } else {
           break;
@@ -187,7 +187,7 @@ public class HighFreqTerms {
       return 0;
     }
 
-    TermsEnum termsEnum = terms.iterator();
+    TermsEnum termsEnum = terms.iterator(null);
     if (termsEnum.seekCeil(termText) != TermsEnum.SeekStatus.FOUND) {
       return 0;
     }

Modified: lucene/dev/branches/lucene2621/lucene/contrib/misc/src/test/org/apache/lucene/index/TestMultiPassIndexSplitter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/contrib/misc/src/test/org/apache/lucene/index/TestMultiPassIndexSplitter.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/contrib/misc/src/test/org/apache/lucene/index/TestMultiPassIndexSplitter.java (original)
+++ lucene/dev/branches/lucene2621/lucene/contrib/misc/src/test/org/apache/lucene/index/TestMultiPassIndexSplitter.java Tue Nov 15 00:01:43 2011
@@ -70,7 +70,7 @@ public class TestMultiPassIndexSplitter 
     assertTrue(ir.numDocs() - NUM_DOCS / 3 <= 1); // rounding error
     Document doc = ir.document(0);
     assertEquals("0", doc.get("id"));
-    TermsEnum te = MultiFields.getTerms(ir, "id").iterator();
+    TermsEnum te = MultiFields.getTerms(ir, "id").iterator(null);
     assertEquals(TermsEnum.SeekStatus.NOT_FOUND, te.seekCeil(new BytesRef("1")));
     assertNotSame("1", te.term().utf8ToString());
     ir.close();
@@ -78,7 +78,7 @@ public class TestMultiPassIndexSplitter 
     assertTrue(ir.numDocs() - NUM_DOCS / 3 <= 1);
     doc = ir.document(0);
     assertEquals("1", doc.get("id"));
-    te = MultiFields.getTerms(ir, "id").iterator();
+    te = MultiFields.getTerms(ir, "id").iterator(null);
     assertEquals(TermsEnum.SeekStatus.NOT_FOUND, te.seekCeil(new BytesRef("0")));
 
     assertNotSame("0", te.term().utf8ToString());
@@ -88,7 +88,7 @@ public class TestMultiPassIndexSplitter 
     doc = ir.document(0);
     assertEquals("2", doc.get("id"));
 
-    te = MultiFields.getTerms(ir, "id").iterator();
+    te = MultiFields.getTerms(ir, "id").iterator(null);
     assertEquals(TermsEnum.SeekStatus.NOT_FOUND, te.seekCeil(new BytesRef("1")));
     assertNotSame("1", te.term());
 
@@ -128,7 +128,7 @@ public class TestMultiPassIndexSplitter 
     doc = ir.document(0);
     assertEquals(start + "", doc.get("id"));
     // make sure the deleted doc is not here
-    TermsEnum te = MultiFields.getTerms(ir, "id").iterator();
+    TermsEnum te = MultiFields.getTerms(ir, "id").iterator(null);
     Term t = new Term("id", (NUM_DOCS - 1) + "");
     assertEquals(TermsEnum.SeekStatus.NOT_FOUND, te.seekCeil(new BytesRef(t.text())));
     assertNotSame(t.text(), te.term().utf8ToString());

Modified: lucene/dev/branches/lucene2621/lucene/contrib/misc/src/test/org/apache/lucene/index/codecs/appending/TestAppendingCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/contrib/misc/src/test/org/apache/lucene/index/codecs/appending/TestAppendingCodec.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/contrib/misc/src/test/org/apache/lucene/index/codecs/appending/TestAppendingCodec.java (original)
+++ lucene/dev/branches/lucene2621/lucene/contrib/misc/src/test/org/apache/lucene/index/codecs/appending/TestAppendingCodec.java Tue Nov 15 00:01:43 2011
@@ -130,7 +130,7 @@ public class TestAppendingCodec extends 
     Fields fields = MultiFields.getFields(reader);
     Terms terms = fields.terms("f");
     assertNotNull(terms);
-    TermsEnum te = terms.iterator();
+    TermsEnum te = terms.iterator(null);
     assertEquals(SeekStatus.FOUND, te.seekCeil(new BytesRef("quick")));
     assertEquals(SeekStatus.FOUND, te.seekCeil(new BytesRef("brown")));
     assertEquals(SeekStatus.FOUND, te.seekCeil(new BytesRef("fox")));

Modified: lucene/dev/branches/lucene2621/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/DuplicateFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/DuplicateFilter.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/DuplicateFilter.java (original)
+++ lucene/dev/branches/lucene2621/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/DuplicateFilter.java Tue Nov 15 00:01:43 2011
@@ -86,7 +86,7 @@ public class DuplicateFilter extends Fil
       return bits;
     }
 
-    TermsEnum termsEnum = terms.iterator();
+    TermsEnum termsEnum = terms.iterator(null);
     DocsEnum docs = null;
     while (true) {
       BytesRef currTerm = termsEnum.next();
@@ -124,7 +124,7 @@ public class DuplicateFilter extends Fil
       return bits;
     }
 
-    TermsEnum termsEnum = terms.iterator();
+    TermsEnum termsEnum = terms.iterator(null);
     DocsEnum docs = null;
     while (true) {
       BytesRef currTerm = termsEnum.next();

Modified: lucene/dev/branches/lucene2621/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeQuery.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeQuery.java (original)
+++ lucene/dev/branches/lucene2621/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedTermRangeQuery.java Tue Nov 15 00:01:43 2011
@@ -101,7 +101,7 @@ public class SlowCollatedTermRangeQuery 
       return TermsEnum.EMPTY;
     }
     
-    TermsEnum tenum = terms.iterator();
+    TermsEnum tenum = terms.iterator(null);
 
     if (lowerTerm == null && upperTerm == null) {
       return tenum;

Modified: lucene/dev/branches/lucene2621/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/regex/RegexQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/regex/RegexQuery.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/regex/RegexQuery.java (original)
+++ lucene/dev/branches/lucene2621/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/regex/RegexQuery.java Tue Nov 15 00:01:43 2011
@@ -69,7 +69,7 @@ public class RegexQuery extends MultiTer
 
   @Override
   protected FilteredTermsEnum getTermsEnum(Terms terms, AttributeSource atts) throws IOException {
-    return new RegexTermsEnum(terms.iterator(), term, regexImpl);
+    return new RegexTermsEnum(terms.iterator(null), term, regexImpl);
   }
 
   @Override

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/BufferedDeletesStream.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/BufferedDeletesStream.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/BufferedDeletesStream.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/BufferedDeletesStream.java Tue Nov 15 00:01:43 2011
@@ -373,7 +373,7 @@ class BufferedDeletesStream {
         currentField = term.field();
         Terms terms = fields.terms(currentField);
         if (terms != null) {
-          termsEnum = terms.iterator();
+          termsEnum = terms.iterator(null);
         } else {
           termsEnum = null;
         }

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/CheckIndex.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/CheckIndex.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/CheckIndex.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/CheckIndex.java Tue Nov 15 00:01:43 2011
@@ -693,7 +693,9 @@ public class CheckIndex {
           break;
         }
 
-        // nocommit -- can we fix this!?
+        // TODO: really the codec should not return a field
+        // from FieldsEnum if it has to Terms... but we do
+        // this today:
         // assert fields.terms(field) != null;
         computedFieldCount++;
         
@@ -702,7 +704,7 @@ public class CheckIndex {
           continue;
         }
 
-        final TermsEnum termsEnum = terms.iterator();
+        final TermsEnum termsEnum = terms.iterator(null);
 
         boolean hasOrd = true;
         final long termCountStart = status.termCount;
@@ -911,7 +913,7 @@ public class CheckIndex {
           // docs got deleted and then merged away):
           // make sure TermsEnum is empty:
           final Terms fieldTerms2 = fieldsEnum.terms();
-          if (fieldTerms2 != null && fieldTerms2.iterator().next() != null) {
+          if (fieldTerms2 != null && fieldTerms2.iterator(null).next() != null) {
             throw new RuntimeException("Fields.terms(field=" + field + ") returned null yet the field appears to have terms");
           }
         } else {
@@ -1159,6 +1161,7 @@ public class CheckIndex {
   private Status.TermVectorStatus testTermVectors(SegmentInfo info, SegmentReader reader, NumberFormat format) {
     final Status.TermVectorStatus status = new Status.TermVectorStatus();
     
+    TermsEnum termsEnum = null;
     try {
       if (infoStream != null) {
         infoStream.print("    test: term vectors........");
@@ -1186,11 +1189,11 @@ public class CheckIndex {
               if (lastField == null) {
                 lastField = field;
               } else if (lastField.compareTo(field) > 0) {
-                throw new RuntimeException("vector fields are out of order: lastField=" + lastField + " field=" + field);
+                throw new RuntimeException("vector fields are out of order: lastField=" + lastField + " field=" + field + " doc=" + j);
               }
               
               Terms terms = tfv.terms(field);
-              TermsEnum termsEnum = terms.iterator();
+              termsEnum = terms.iterator(termsEnum);
               
               long tfvComputedTermCountForField = 0;
               long tfvComputedSumTotalTermFreq = 0;

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/DocTermOrds.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/DocTermOrds.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/DocTermOrds.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/DocTermOrds.java Tue Nov 15 00:01:43 2011
@@ -200,7 +200,7 @@ public class DocTermOrds {
       //System.out.println("GET normal enum");
       final Terms terms = MultiFields.getTerms(reader, field);
       if (terms != null) {
-        return terms.iterator();
+        return terms.iterator(null);
       } else {
         return null;
       }
@@ -234,7 +234,7 @@ public class DocTermOrds {
       return;
     }
 
-    final TermsEnum te = terms.iterator();
+    final TermsEnum te = terms.iterator(null);
     final BytesRef seekStart = termPrefix != null ? termPrefix : new BytesRef();
     //System.out.println("seekStart=" + seekStart.utf8ToString());
     if (te.seekCeil(seekStart) == TermsEnum.SeekStatus.END) {
@@ -644,7 +644,7 @@ public class DocTermOrds {
     public OrdWrappedTermsEnum(IndexReader reader) throws IOException {
       this.reader = reader;
       assert indexedTermsArray != null;
-      termsEnum = MultiFields.getTerms(reader, field).iterator();
+      termsEnum = MultiFields.getTerms(reader, field).iterator(null);
     }
 
     @Override

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/FilterIndexReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/FilterIndexReader.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/FilterIndexReader.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/FilterIndexReader.java Tue Nov 15 00:01:43 2011
@@ -76,8 +76,8 @@ public class FilterIndexReader extends I
     }
 
     @Override
-    public TermsEnum iterator() throws IOException {
-      return in.iterator();
+    public TermsEnum iterator(TermsEnum reuse) throws IOException {
+      return in.iterator(reuse);
     }
 
     @Override

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/MultiTerms.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/MultiTerms.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/MultiTerms.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/MultiTerms.java Tue Nov 15 00:01:43 2011
@@ -78,11 +78,11 @@ public final class MultiTerms extends Te
   }
 
   @Override
-  public TermsEnum iterator() throws IOException {
+  public TermsEnum iterator(TermsEnum reuse) throws IOException {
 
     final List<MultiTermsEnum.TermsEnumIndex> termsEnums = new ArrayList<MultiTermsEnum.TermsEnumIndex>();
     for(int i=0;i<subs.length;i++) {
-      final TermsEnum termsEnum = subs[i].iterator();
+      final TermsEnum termsEnum = subs[i].iterator(null);
       if (termsEnum != null) {
         termsEnums.add(new MultiTermsEnum.TermsEnumIndex(termsEnum, i));
       }

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/ParallelReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/ParallelReader.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/ParallelReader.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/ParallelReader.java Tue Nov 15 00:01:43 2011
@@ -152,8 +152,10 @@ public class ParallelReader extends Inde
   private class ParallelFieldsEnum extends FieldsEnum {
     String currentField;
     Iterator<String> keys;
+    private final Fields fields;
 
-    ParallelFieldsEnum() {
+    ParallelFieldsEnum(Fields fields) {
+      this.fields = fields;
       keys = fieldToReader.keySet().iterator();
     }
 
@@ -169,7 +171,7 @@ public class ParallelReader extends Inde
 
     @Override
     public Terms terms() throws IOException {
-      return ParallelReader.this.fields.terms(currentField);
+      return fields.terms(currentField);
     }
 
   }
@@ -184,7 +186,7 @@ public class ParallelReader extends Inde
 
     @Override
     public FieldsEnum iterator() throws IOException {
-      return new ParallelFieldsEnum();
+      return new ParallelFieldsEnum(this);
     }
 
     @Override

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/SegmentMerger.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/SegmentMerger.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/SegmentMerger.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/SegmentMerger.java Tue Nov 15 00:01:43 2011
@@ -163,7 +163,10 @@ final class SegmentMerger {
         boolean same = true;
         FieldInfos segmentFieldInfos = segmentReader.fieldInfos();
         for (FieldInfo fi : segmentFieldInfos) {
-          same = mergeState.fieldInfos.fieldName(fi.number).equals(fi.name);
+          if (!mergeState.fieldInfos.fieldName(fi.number).equals(fi.name)) {
+            same = false;
+            break;
+          }
         }
         if (same) {
           mergeState.matchingSegmentReaders[i] = segmentReader;

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/Terms.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/Terms.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/Terms.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/Terms.java Tue Nov 15 00:01:43 2011
@@ -37,9 +37,11 @@ public abstract class Terms {
   private final CloseableThreadLocal<TermsEnum> threadEnums = new CloseableThreadLocal<TermsEnum>();
 
   /** Returns an iterator that will step through all
-   *  terms. This method will not return null.*/
-  // nocommit add reuse required param
-  public abstract TermsEnum iterator() throws IOException;
+   *  terms. This method will not return null.  If you have
+   *  a previous TermsEnum, for example from a different
+   *  field, you can pass it for possible reuse if the
+   *  implementation can do so. */
+  public abstract TermsEnum iterator(TermsEnum reuse) throws IOException;
 
   /** Returns a TermsEnum that iterates over all terms that
    *  are accepted by the provided {@link
@@ -60,9 +62,9 @@ public abstract class Terms {
       throw new IllegalArgumentException("please use CompiledAutomaton.getTermsEnum instead");
     }
     if (startTerm == null) {
-      return new AutomatonTermsEnum(iterator(), compiled);
+      return new AutomatonTermsEnum(iterator(null), compiled);
     } else {
-      return new AutomatonTermsEnum(iterator(), compiled) {
+      return new AutomatonTermsEnum(iterator(null), compiled) {
         @Override
         protected BytesRef nextSeekTerm(BytesRef term) throws IOException {
           if (term == null) {
@@ -202,7 +204,7 @@ public abstract class Terms {
   public TermsEnum getThreadTermsEnum() throws IOException {
     TermsEnum termsEnum = threadEnums.get();
     if (termsEnum == null) {
-      termsEnum = iterator();
+      termsEnum = iterator(null);
       threadEnums.set(termsEnum);
     }
     return termsEnum;

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/BlockTermsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/BlockTermsReader.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/BlockTermsReader.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/BlockTermsReader.java Tue Nov 15 00:01:43 2011
@@ -267,7 +267,7 @@ public class BlockTermsReader extends Fi
     }
     
     @Override
-    public TermsEnum iterator() throws IOException {
+    public TermsEnum iterator(TermsEnum reuse) throws IOException {
       return new SegmentTermsEnum();
     }
 

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/BlockTreeTermsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/BlockTreeTermsReader.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/BlockTreeTermsReader.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/BlockTreeTermsReader.java Tue Nov 15 00:01:43 2011
@@ -456,7 +456,7 @@ public class BlockTreeTermsReader extend
     }
     
     @Override
-    public TermsEnum iterator() throws IOException {
+    public TermsEnum iterator(TermsEnum reuse) throws IOException {
       return new SegmentTermsEnum();
     }
 
@@ -916,8 +916,6 @@ public class BlockTreeTermsReader extend
 
         for(int idx=0;idx<=target.length;idx++) {
 
-          boolean lastIsSubBlock = false;
-
           while (true) {
             final int savePos = currentFrame.suffixesReader.getPosition();
             final int saveStartBytePos = currentFrame.startBytePos;
@@ -952,7 +950,6 @@ public class BlockTreeTermsReader extend
                     return;
                   }
                 }
-                lastIsSubBlock = isSubBlock;
                 continue;
               } else if (cmp == 0) {
                 //if (DEBUG) System.out.println("  return term=" + brToString(term));

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsReader.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsReader.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsReader.java Tue Nov 15 00:01:43 2011
@@ -331,17 +331,24 @@ public class DefaultTermVectorsReader ex
     private final long tvfFPStart;
 
     public TVTerms(long tvfFP) throws IOException {
-      // nocommit -- to be "safe" we should clone tvf here...?
       tvf.seek(tvfFP);
       numTerms = tvf.readVInt();
       tvfFPStart = tvf.getFilePointer();
     }
 
     @Override
-    public TermsEnum iterator() throws IOException {
-      // nocommit -- to be "safe" we should clone tvf here...?
-      tvf.seek(tvfFPStart);
-      return new TVTermsEnum(numTerms);
+    public TermsEnum iterator(TermsEnum reuse) throws IOException {
+      TVTermsEnum termsEnum;
+      if (reuse instanceof TVTermsEnum) {
+        termsEnum = (TVTermsEnum) reuse;
+        if (!termsEnum.canReuse(tvf)) {
+          termsEnum = new TVTermsEnum();
+        }
+      } else {
+        termsEnum = new TVTermsEnum();
+      }
+      termsEnum.reset(numTerms, tvfFPStart);
+      return termsEnum;
     }
 
     @Override
@@ -374,28 +381,45 @@ public class DefaultTermVectorsReader ex
   }
 
   private class TVTermsEnum extends TermsEnum {
-    private final int numTerms;
+    private final IndexInput origTVF;
+    private final IndexInput tvf;
+    private int numTerms;
     private int nextTerm;
     private int freq;
     private BytesRef lastTerm = new BytesRef();
     private BytesRef term = new BytesRef();
-    private final boolean storePositions;
-    private final boolean storeOffsets;
-    private final long tvfFP;
+    private boolean storePositions;
+    private boolean storeOffsets;
+    private long tvfFP;
 
     private int[] positions;
     private int[] startOffsets;
     private int[] endOffsets;
 
     // NOTE: tvf is pre-positioned by caller
-    public TVTermsEnum(int numTerms) throws IOException {
+    public TVTermsEnum() throws IOException {
+      this.origTVF = DefaultTermVectorsReader.this.tvf;
+      tvf = (IndexInput) origTVF.clone();
+
+      // nocommit not needed?
+      // tvf.seek(origTVF.getFilePointer());
+    }
+
+    public boolean canReuse(IndexInput tvf) {
+      return tvf == origTVF;
+    }
+
+    public void reset(int numTerms, long tvfFPStart) throws IOException {
       this.numTerms = numTerms;
-    
+      nextTerm = 0;
+      tvf.seek(tvfFPStart);
       final byte bits = tvf.readByte();
       storePositions = (bits & STORE_POSITIONS_WITH_TERMVECTOR) != 0;
       storeOffsets = (bits & STORE_OFFSET_WITH_TERMVECTOR) != 0;
-      
-      tvfFP = tvf.getFilePointer();
+      tvfFP = 1+tvfFPStart;
+      positions = null;
+      startOffsets = null;
+      endOffsets = null;
     }
 
     // NOTE: slow!  (linear scan)
@@ -627,6 +651,7 @@ public class DefaultTermVectorsReader ex
       this.liveDocs = liveDocs;
       this.positions = positions;
       this.startOffsets = startOffsets;
+      assert (offsetAtt != null) == (startOffsets != null);
       this.endOffsets = endOffsets;
       didNext = false;
       nextPos = 0;

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsWriter.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsWriter.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsWriter.java Tue Nov 15 00:01:43 2011
@@ -71,6 +71,7 @@ public final class DefaultTermVectorsWri
  
   @Override
   public void startDocument(int numVectorFields) throws IOException {
+    lastFieldName = null;
     this.numVectorFields = numVectorFields;
     tvx.writeLong(tvd.getFilePointer());
     tvx.writeLong(tvf.getFilePointer());
@@ -82,9 +83,12 @@ public final class DefaultTermVectorsWri
   private long fps[] = new long[10]; // pointers to the tvf before writing each field 
   private int fieldCount = 0;        // number of fields we have written so far for this document
   private int numVectorFields = 0;   // total number of fields we will write for this document
-  
+  private String lastFieldName;
+
   @Override
   public void startField(FieldInfo info, int numTerms, boolean positions, boolean offsets) throws IOException {
+    assert lastFieldName == null || info.name.compareTo(lastFieldName) > 0: "fieldName=" + info.name + " lastFieldName=" + lastFieldName;
+    lastFieldName = info.name;
     this.positions = positions;
     this.offsets = offsets;
     lastTerm.length = 0;

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/FieldsConsumer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/FieldsConsumer.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/FieldsConsumer.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/FieldsConsumer.java Tue Nov 15 00:01:43 2011
@@ -51,7 +51,7 @@ public abstract class FieldsConsumer imp
       Terms terms = fieldsEnum.terms();
       if (terms != null) {
         final TermsConsumer termsConsumer = addField(mergeState.fieldInfo);
-        termsConsumer.merge(mergeState, terms.iterator());
+        termsConsumer.merge(mergeState, terms.iterator(null));
       }
     }
   }

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java Tue Nov 15 00:01:43 2011
@@ -182,11 +182,15 @@ public abstract class TermVectorsWriter 
     
     final FieldsEnum fieldsEnum = vectors.iterator();
     String fieldName;
+    String lastFieldName = null;
 
     while((fieldName = fieldsEnum.next()) != null) {
       
       final FieldInfo fieldInfo = fieldInfos.fieldInfo(fieldName);
 
+      assert lastFieldName == null || fieldName.compareTo(lastFieldName) > 0: "lastFieldName=" + lastFieldName + " fieldName=" + fieldName;
+      lastFieldName = fieldName;
+
       final Terms terms = fieldsEnum.terms();
       if (terms == null) {
         // FieldsEnum shouldn't lie...
@@ -201,7 +205,7 @@ public abstract class TermVectorsWriter 
 
       final OffsetAttribute offsetAtt;
 
-      final TermsEnum termsEnum = terms.iterator();
+      final TermsEnum termsEnum = terms.iterator(null);
 
       DocsAndPositionsEnum docsAndPositionsEnum = null;
 

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/lucene3x/Lucene3xFields.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/lucene3x/Lucene3xFields.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/lucene3x/Lucene3xFields.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/lucene3x/Lucene3xFields.java Tue Nov 15 00:01:43 2011
@@ -199,13 +199,10 @@ public class Lucene3xFields extends Fiel
 
   private class PreFlexFieldsEnum extends FieldsEnum {
     final Iterator<FieldInfo> it;
-    // nocommit cleanup
-    //private final PreTermsEnum termsEnum;
     FieldInfo current;
 
     public PreFlexFieldsEnum() throws IOException {
       it = fields.values().iterator();
-      //termsEnum = new PreTermsEnum();
     }
 
     @Override
@@ -221,8 +218,6 @@ public class Lucene3xFields extends Fiel
     @Override
     public Terms terms() throws IOException {
       return Lucene3xFields.this.terms(current.name);
-      //termsEnum.reset(current);
-      //return termsEnum;
     }
   }
   
@@ -233,7 +228,7 @@ public class Lucene3xFields extends Fiel
     }
 
     @Override
-    public TermsEnum iterator() throws IOException {    
+    public TermsEnum iterator(TermsEnum reuse) throws IOException {    
       PreTermsEnum termsEnum = new PreTermsEnum();
       termsEnum.reset(fieldInfo);
       return termsEnum;

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/memory/MemoryPostingsFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/memory/MemoryPostingsFormat.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/memory/MemoryPostingsFormat.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/memory/MemoryPostingsFormat.java Tue Nov 15 00:01:43 2011
@@ -723,7 +723,7 @@ public class MemoryPostingsFormat extend
     }
 
     @Override
-    public TermsEnum iterator() {
+    public TermsEnum iterator(TermsEnum reuse) {
       return new FSTTermsEnum(field, fst);
     }
 

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldsReader.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldsReader.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldsReader.java Tue Nov 15 00:01:43 2011
@@ -523,7 +523,7 @@ class SimpleTextFieldsReader extends Fie
     }
 
     @Override
-    public TermsEnum iterator() throws IOException {
+    public TermsEnum iterator(TermsEnum reuse) throws IOException {
       if (fst != null) {
         return new SimpleTextTermsEnum(fst, indexOptions);
       } else {

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/FieldCacheImpl.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/FieldCacheImpl.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/FieldCacheImpl.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/FieldCacheImpl.java Tue Nov 15 00:01:43 2011
@@ -333,7 +333,7 @@ class FieldCacheImpl implements FieldCac
             setDocsWithField = false;
           }
         }
-        final TermsEnum termsEnum = terms.iterator();
+        final TermsEnum termsEnum = terms.iterator(null);
         DocsEnum docs = null;
         try {
           while(true) {
@@ -406,7 +406,7 @@ class FieldCacheImpl implements FieldCac
             setDocsWithField = false;
           }
         }
-        final TermsEnum termsEnum = terms.iterator();
+        final TermsEnum termsEnum = terms.iterator(null);
         DocsEnum docs = null;
         try {
           while(true) {
@@ -505,7 +505,7 @@ class FieldCacheImpl implements FieldCac
             setDocsWithField = false;
           }
         }
-        final TermsEnum termsEnum = terms.iterator();
+        final TermsEnum termsEnum = terms.iterator(null);
         DocsEnum docs = null;
         try {
           while(true) {
@@ -574,7 +574,7 @@ class FieldCacheImpl implements FieldCac
           // Fast case: all docs have this field:
           return new Bits.MatchAllBits(maxDoc);
         }
-        final TermsEnum termsEnum = terms.iterator();
+        final TermsEnum termsEnum = terms.iterator(null);
         DocsEnum docs = null;
         while(true) {
           final BytesRef term = termsEnum.next();
@@ -655,7 +655,7 @@ class FieldCacheImpl implements FieldCac
             setDocsWithField = false;
           }
         }
-        final TermsEnum termsEnum = terms.iterator();
+        final TermsEnum termsEnum = terms.iterator(null);
         DocsEnum docs = null;
         try {
           while(true) {
@@ -743,7 +743,7 @@ class FieldCacheImpl implements FieldCac
             setDocsWithField = false;
           }
         }
-        final TermsEnum termsEnum = terms.iterator();
+        final TermsEnum termsEnum = terms.iterator(null);
         DocsEnum docs = null;
         try {
           while(true) {
@@ -832,7 +832,7 @@ class FieldCacheImpl implements FieldCac
             setDocsWithField = false;
           }
         }
-        final TermsEnum termsEnum = terms.iterator();
+        final TermsEnum termsEnum = terms.iterator(null);
         DocsEnum docs = null;
         try {
           while(true) {
@@ -1128,7 +1128,7 @@ class FieldCacheImpl implements FieldCac
       int termOrd = 1;
 
       if (terms != null) {
-        final TermsEnum termsEnum = terms.iterator();
+        final TermsEnum termsEnum = terms.iterator(null);
         DocsEnum docs = null;
 
         while(true) {
@@ -1253,7 +1253,7 @@ class FieldCacheImpl implements FieldCac
 
       if (terms != null) {
         int termCount = 0;
-        final TermsEnum termsEnum = terms.iterator();
+        final TermsEnum termsEnum = terms.iterator(null);
         DocsEnum docs = null;
         while(true) {
           if (termCount++ == termCountHardLimit) {

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/FuzzyQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/FuzzyQuery.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/FuzzyQuery.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/FuzzyQuery.java Tue Nov 15 00:01:43 2011
@@ -139,7 +139,7 @@ public class FuzzyQuery extends MultiTer
   @Override
   protected TermsEnum getTermsEnum(Terms terms, AttributeSource atts) throws IOException {
     if (!termLongEnough) {  // can only match if it's exact
-      return new SingleTermsEnum(terms.iterator(), term.bytes());
+      return new SingleTermsEnum(terms.iterator(null), term.bytes());
     }
     return new FuzzyTermsEnum(terms, atts, getTerm(), minimumSimilarity, prefixLength);
   }

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/FuzzyTermsEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/FuzzyTermsEnum.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/FuzzyTermsEnum.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/FuzzyTermsEnum.java Tue Nov 15 00:01:43 2011
@@ -406,7 +406,7 @@ public final class FuzzyTermsEnum extend
      * @throws IOException
      */
     public LinearFuzzyTermsEnum() throws IOException {
-      super(terms.iterator());
+      super(terms.iterator(null));
 
       this.text = new int[termLength - realPrefixLength];
       System.arraycopy(termText, realPrefixLength, text, 0, text.length);

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/NumericRangeQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/NumericRangeQuery.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/NumericRangeQuery.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/NumericRangeQuery.java Tue Nov 15 00:01:43 2011
@@ -305,7 +305,7 @@ public final class NumericRangeQuery<T e
     // very strange: java.lang.Number itsself is not Comparable, but all subclasses used here are
     return (min != null && max != null && ((Comparable<T>) min).compareTo(max) > 0) ?
       TermsEnum.EMPTY :
-      new NumericRangeTermsEnum(terms.iterator());
+      new NumericRangeTermsEnum(terms.iterator(null));
   }
 
   /** Returns <code>true</code> if the lower endpoint is inclusive */

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/PrefixQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/PrefixQuery.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/PrefixQuery.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/PrefixQuery.java Tue Nov 15 00:01:43 2011
@@ -45,7 +45,7 @@ public class PrefixQuery extends MultiTe
   
   @Override  
   protected TermsEnum getTermsEnum(Terms terms, AttributeSource atts) throws IOException {
-    TermsEnum tenum = terms.iterator();
+    TermsEnum tenum = terms.iterator(null);
     
     if (prefix.bytes().length == 0) {
       // no prefix -- match all terms for this field:

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/TermRangeQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/TermRangeQuery.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/TermRangeQuery.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/search/TermRangeQuery.java Tue Nov 15 00:01:43 2011
@@ -103,7 +103,7 @@ public class TermRangeQuery extends Mult
       return TermsEnum.EMPTY;
     }
     
-    TermsEnum tenum = terms.iterator();
+    TermsEnum tenum = terms.iterator(null);
     
     if ((lowerTerm == null || (includeLower && lowerTerm.length == 0)) && upperTerm == null) {
       return tenum;

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/util/automaton/CompiledAutomaton.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/util/automaton/CompiledAutomaton.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/util/automaton/CompiledAutomaton.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/util/automaton/CompiledAutomaton.java Tue Nov 15 00:01:43 2011
@@ -198,13 +198,13 @@ public class CompiledAutomaton {
     case NONE:
       return TermsEnum.EMPTY;
     case ALL:
-      return terms.iterator();
+      return terms.iterator(null);
     case SINGLE:
-      return new SingleTermsEnum(terms.iterator(), term);
+      return new SingleTermsEnum(terms.iterator(null), term);
     case PREFIX:
       // TODO: this is very likely faster than .intersect,
       // but we should test and maybe cutover
-      return new PrefixTermsEnum(terms.iterator(), term);
+      return new PrefixTermsEnum(terms.iterator(null), term);
     case NORMAL:
       return terms.intersect(this, null);
     default:

Modified: lucene/dev/branches/lucene2621/lucene/src/test-framework/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test-framework/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test-framework/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test-framework/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java Tue Nov 15 00:01:43 2011
@@ -348,7 +348,7 @@ public abstract class ThreadedIndexingAn
                     if (terms == null) {
                       continue;
                     }
-                    TermsEnum termsEnum = terms.iterator();
+                    TermsEnum termsEnum = terms.iterator(null);
                     int seenTermCount = 0;
                     int shift;
                     int trigger; 

Modified: lucene/dev/branches/lucene2621/lucene/src/test-framework/java/org/apache/lucene/index/codecs/ramonly/RAMOnlyPostingsFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test-framework/java/org/apache/lucene/index/codecs/ramonly/RAMOnlyPostingsFormat.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test-framework/java/org/apache/lucene/index/codecs/ramonly/RAMOnlyPostingsFormat.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test-framework/java/org/apache/lucene/index/codecs/ramonly/RAMOnlyPostingsFormat.java Tue Nov 15 00:01:43 2011
@@ -155,7 +155,7 @@ public class RAMOnlyPostingsFormat exten
     }
 
     @Override
-    public TermsEnum iterator() {
+    public TermsEnum iterator(TermsEnum reuse) {
       return new RAMTermsEnum(RAMOnlyPostingsFormat.RAMField.this);
     }
 

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/Test2BTerms.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/Test2BTerms.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/Test2BTerms.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/Test2BTerms.java Tue Nov 15 00:01:43 2011
@@ -225,7 +225,7 @@ public class Test2BTerms extends LuceneT
 
   private List<BytesRef> findTerms(IndexReader r) throws IOException {
     System.out.println("TEST: findTerms");
-    final TermsEnum termsEnum = MultiFields.getTerms(r, "field").iterator();
+    final TermsEnum termsEnum = MultiFields.getTerms(r, "field").iterator(null);
     final List<BytesRef> savedTerms = new ArrayList<BytesRef>();
     int nextSave = _TestUtil.nextInt(random, 500000, 1000000);
     BytesRef term;
@@ -243,7 +243,7 @@ public class Test2BTerms extends LuceneT
     System.out.println("TEST: run " + terms.size() + " terms on reader=" + r);
     IndexSearcher s = new IndexSearcher(r);
     Collections.shuffle(terms);
-    TermsEnum termsEnum = MultiFields.getTerms(r, "field").iterator();
+    TermsEnum termsEnum = MultiFields.getTerms(r, "field").iterator(null);
     boolean failed = false;
     for(int iter=0;iter<10*terms.size();iter++) {
       final BytesRef term = terms.get(random.nextInt(terms.size()));

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java Tue Nov 15 00:01:43 2011
@@ -644,7 +644,7 @@ public class TestBackwardsCompatibility 
     	_TestUtil.unzip(getDataFile("index." + oldNames[i] + ".zip"), oldIndexDir);
       Directory dir = newFSDirectory(oldIndexDir);
       IndexReader r = IndexReader.open(dir);
-      TermsEnum terms = MultiFields.getFields(r).terms("content").iterator();
+      TermsEnum terms = MultiFields.getFields(r).terms("content").iterator(null);
       BytesRef t = terms.next();
       assertNotNull(t);
 

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestCodecs.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestCodecs.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestCodecs.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestCodecs.java Tue Nov 15 00:01:43 2011
@@ -267,7 +267,7 @@ public class TestCodecs extends LuceneTe
     final Terms terms2 = fieldsEnum.terms();
     assertNotNull(terms2);
 
-    final TermsEnum termsEnum = terms2.iterator();
+    final TermsEnum termsEnum = terms2.iterator(null);
 
     DocsEnum docsEnum = null;
     for(int i=0;i<NUM_TERMS;i++) {
@@ -455,7 +455,7 @@ public class TestCodecs extends LuceneTe
 
       for(int iter=0;iter<NUM_TEST_ITER;iter++) {
         final FieldData field = fields[TestCodecs.random.nextInt(fields.length)];
-        final TermsEnum termsEnum = termsDict.terms(field.fieldInfo.name).iterator();
+        final TermsEnum termsEnum = termsDict.terms(field.fieldInfo.name).iterator(null);
         if (si.getCodec() instanceof Lucene3xCodec) {
           // code below expects unicode sort order
           continue;

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDirectoryReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDirectoryReader.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDirectoryReader.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDirectoryReader.java Tue Nov 15 00:01:43 2011
@@ -165,14 +165,14 @@ public class TestDirectoryReader extends
     MultiReader mr3 = new MultiReader(readers2);
 
     // test mixing up TermDocs and TermEnums from different readers.
-    TermsEnum te2 = MultiFields.getTerms(mr2, "body").iterator();
+    TermsEnum te2 = MultiFields.getTerms(mr2, "body").iterator(null);
     te2.seekCeil(new BytesRef("wow"));
     DocsEnum td = MultiFields.getTermDocsEnum(mr2,
                                               MultiFields.getLiveDocs(mr2),
                                               "body",
                                               te2.term());
 
-    TermsEnum te3 = MultiFields.getTerms(mr3, "body").iterator();
+    TermsEnum te3 = MultiFields.getTerms(mr3, "body").iterator(null);
     te3.seekCeil(new BytesRef("wow"));
     td = te3.docs(MultiFields.getLiveDocs(mr3),
                   td);

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDoc.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDoc.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDoc.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDoc.java Tue Nov 15 00:01:43 2011
@@ -234,7 +234,7 @@ public class TestDoc extends LuceneTestC
       while(field != null)  {
         Terms terms = fis.terms();
         assertNotNull(terms);
-        TermsEnum tis = terms.iterator();
+        TermsEnum tis = terms.iterator(null);
         while(tis.next() != null) {
 
           out.print("  term=" + field + ":" + tis.term());

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDocCount.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDocCount.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDocCount.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDocCount.java Tue Nov 15 00:01:43 2011
@@ -70,7 +70,7 @@ public class TestDocCount extends Lucene
       Terms terms = fields.terms(field);
       int docCount = terms.getDocCount();
       FixedBitSet visited = new FixedBitSet(ir.maxDoc());
-      TermsEnum te = terms.iterator();
+      TermsEnum te = terms.iterator(null);
       while (te.next() != null) {
         DocsEnum de = te.docs(null, null);
         while (de.nextDoc() != DocIdSetIterator.NO_MORE_DOCS) {

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDocTermOrds.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDocTermOrds.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDocTermOrds.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestDocTermOrds.java Tue Nov 15 00:01:43 2011
@@ -314,7 +314,7 @@ public class TestDocTermOrds extends Luc
     if (VERBOSE) {
       System.out.println("TEST: verify prefix=" + (prefixRef==null ? "null" : prefixRef.utf8ToString()));
       System.out.println("TEST: all TERMS:");
-      TermsEnum allTE = MultiFields.getTerms(r, "field").iterator();
+      TermsEnum allTE = MultiFields.getTerms(r, "field").iterator(null);
       int ord = 0;
       while(allTE.next() != null) {
         System.out.println("  ord=" + (ord++) + " term=" + allTE.term().utf8ToString());
@@ -329,7 +329,7 @@ public class TestDocTermOrds extends Luc
       } else {
         Terms terms = MultiFields.getTerms(r, "field");
         if (terms != null) {
-          TermsEnum termsEnum = terms.iterator();
+          TermsEnum termsEnum = terms.iterator(null);
           TermsEnum.SeekStatus result = termsEnum.seekCeil(prefixRef, false);
           if (result != TermsEnum.SeekStatus.END) {
             assertFalse("term=" + termsEnum.term().utf8ToString() + " matches prefix=" + prefixRef.utf8ToString(), termsEnum.term().startsWith(prefixRef));

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestFilterIndexReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestFilterIndexReader.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestFilterIndexReader.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestFilterIndexReader.java Tue Nov 15 00:01:43 2011
@@ -54,8 +54,8 @@ public class TestFilterIndexReader exten
       }
 
       @Override
-      public TermsEnum iterator() throws IOException {
-        return new TestTermsEnum(super.iterator());
+      public TermsEnum iterator(TermsEnum reuse) throws IOException {
+        return new TestTermsEnum(super.iterator(reuse));
       }
     }
 
@@ -150,7 +150,7 @@ public class TestFilterIndexReader exten
     reader.close();
     reader = IndexReader.open(target, true);
     
-    TermsEnum terms = MultiFields.getTerms(reader, "default").iterator();
+    TermsEnum terms = MultiFields.getTerms(reader, "default").iterator(null);
     while (terms.next() != null) {
       assertTrue(terms.term().utf8ToString().indexOf('e') != -1);
     }

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestFlex.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestFlex.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestFlex.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestFlex.java Tue Nov 15 00:01:43 2011
@@ -53,7 +53,7 @@ public class TestFlex extends LuceneTest
 
       IndexReader r = w.getReader();
       
-      TermsEnum terms = MultiFields.getTerms(r, "field3").iterator();
+      TermsEnum terms = MultiFields.getTerms(r, "field3").iterator(null);
       assertEquals(TermsEnum.SeekStatus.END, terms.seekCeil(new BytesRef("abc")));
       r.close();
     }
@@ -70,7 +70,7 @@ public class TestFlex extends LuceneTest
     doc.add(newField("f", "a b c", TextField.TYPE_UNSTORED));
     w.addDocument(doc);
     IndexReader r = w.getReader();
-    TermsEnum terms = r.getSequentialSubReaders()[0].fields().terms("f").iterator();
+    TermsEnum terms = r.getSequentialSubReaders()[0].fields().terms("f").iterator(null);
     assertTrue(terms.next() != null);
     try {
       assertEquals(0, terms.ord());

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexReader.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexReader.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexReader.java Tue Nov 15 00:01:43 2011
@@ -904,11 +904,11 @@ public class TestIndexReader extends Luc
           assertNull(fenum2.terms());
           continue;
         }
-        TermsEnum enum1 = terms1.iterator();
+        TermsEnum enum1 = terms1.iterator(null);
 
         Terms terms2 = fenum2.terms();
         assertNotNull(terms2);
-        TermsEnum enum2 = terms2.iterator();
+        TermsEnum enum2 = terms2.iterator(null);
 
         while(enum1.next() != null) {
           assertEquals("Different terms", enum1.term(), enum2.next());

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java Tue Nov 15 00:01:43 2011
@@ -879,7 +879,7 @@ public class TestIndexWriter extends Luc
     writer.close();
     IndexReader reader = IndexReader.open(dir, true);
     IndexReader subreader = getOnlySegmentReader(reader);
-    TermsEnum te = subreader.fields().terms("").iterator();
+    TermsEnum te = subreader.fields().terms("").iterator(null);
     assertEquals(new BytesRef("a"), te.next());
     assertEquals(new BytesRef("b"), te.next());
     assertEquals(new BytesRef("c"), te.next());
@@ -900,7 +900,7 @@ public class TestIndexWriter extends Luc
     writer.close();
     IndexReader reader = IndexReader.open(dir, true);
     IndexReader subreader = getOnlySegmentReader(reader);
-    TermsEnum te = subreader.fields().terms("").iterator();
+    TermsEnum te = subreader.fields().terms("").iterator(null);
     assertEquals(new BytesRef(""), te.next());
     assertEquals(new BytesRef("a"), te.next());
     assertEquals(new BytesRef("b"), te.next());
@@ -1064,7 +1064,7 @@ public class TestIndexWriter extends Luc
 
     IndexReader r = IndexReader.open(dir, true);
     Terms tpv = r.getTermVectors(0).terms("field");
-    TermsEnum termsEnum = tpv.iterator();
+    TermsEnum termsEnum = tpv.iterator(null);
     assertNotNull(termsEnum.next());
     DocsAndPositionsEnum dpEnum = termsEnum.docsAndPositions(null, null);
     assertNotNull(dpEnum);
@@ -1404,7 +1404,7 @@ public class TestIndexWriter extends Luc
     w.addDocument(d);
 
     IndexReader r = w.getReader().getSequentialSubReaders()[0];
-    TermsEnum t = r.fields().terms("field").iterator();
+    TermsEnum t = r.fields().terms("field").iterator(null);
     int count = 0;
     while(t.next() != null) {
       final DocsEnum docs = t.docs(null, null);

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexWriterUnicode.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexWriterUnicode.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexWriterUnicode.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexWriterUnicode.java Tue Nov 15 00:01:43 2011
@@ -135,7 +135,7 @@ public class TestIndexWriterUnicode exte
   }
 
   private void checkTermsOrder(IndexReader r, Set<String> allTerms, boolean isTop) throws IOException {
-    TermsEnum terms = MultiFields.getFields(r).terms("f").iterator();
+    TermsEnum terms = MultiFields.getFields(r).terms("f").iterator(null);
 
     BytesRef last = new BytesRef();
 

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexableField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexableField.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexableField.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestIndexableField.java Tue Nov 15 00:01:43 2011
@@ -291,7 +291,7 @@ public class TestIndexableField extends 
           if (tv) {
             final Terms tfv = r.getTermVectors(docID).terms(name);
             assertNotNull(tfv);
-            TermsEnum termsEnum = tfv.iterator();
+            TermsEnum termsEnum = tfv.iterator(null);
             assertEquals(new BytesRef(""+counter), termsEnum.next());
             assertEquals(1, termsEnum.totalTermFreq());
             DocsAndPositionsEnum dpEnum = termsEnum.docsAndPositions(null, null);

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestParallelTermEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestParallelTermEnum.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestParallelTermEnum.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestParallelTermEnum.java Tue Nov 15 00:01:43 2011
@@ -85,7 +85,7 @@ public class TestParallelTermEnum extend
         assertEquals("field1", f);
 
         Terms terms = fe.terms();
-        TermsEnum te = terms.iterator();
+        TermsEnum te = terms.iterator(null);
 
         assertEquals("brown", te.next().utf8ToString());
         DocsEnum td = te.docs(liveDocs, null);
@@ -122,7 +122,7 @@ public class TestParallelTermEnum extend
         assertEquals("field2", f);
         terms = fe.terms();
         assertNotNull(terms);
-        te = terms.iterator();
+        te = terms.iterator(null);
 
         assertEquals("brown", te.next().utf8ToString());
         td = te.docs(liveDocs, td);
@@ -159,7 +159,7 @@ public class TestParallelTermEnum extend
         assertEquals("field3", f);
         terms = fe.terms();
         assertNotNull(terms);
-        te = terms.iterator();
+        te = terms.iterator(null);
 
         assertEquals("dog", te.next().utf8ToString());
         td = te.docs(liveDocs, td);

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestPayloads.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestPayloads.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestPayloads.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestPayloads.java Tue Nov 15 00:01:43 2011
@@ -527,7 +527,7 @@ public class TestPayloads extends Lucene
         }
         writer.close();
         IndexReader reader = IndexReader.open(dir, true);
-        TermsEnum terms = MultiFields.getFields(reader).terms(field).iterator();
+        TermsEnum terms = MultiFields.getFields(reader).terms(field).iterator(null);
         Bits liveDocs = MultiFields.getLiveDocs(reader);
         DocsAndPositionsEnum tp = null;
         while (terms.next() != null) {

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java Tue Nov 15 00:01:43 2011
@@ -222,7 +222,7 @@ public class TestPerSegmentDeletes exten
       throws IOException {
     Fields fields = MultiFields.getFields(reader);
     Terms cterms = fields.terms(term.field);
-    TermsEnum ctermsEnum = cterms.iterator();
+    TermsEnum ctermsEnum = cterms.iterator(null);
     if (ctermsEnum.seekExact(new BytesRef(term.text()), false)) {
       DocsEnum docsEnum = ctermsEnum.docs(bits, null);
       return toArray(docsEnum);

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentMerger.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentMerger.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentMerger.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentMerger.java Tue Nov 15 00:01:43 2011
@@ -113,7 +113,7 @@ public class TestSegmentMerger extends L
     Terms vector = mergedReader.getTermVectors(0).terms(DocHelper.TEXT_FIELD_2_KEY);
     assertNotNull(vector);
     assertEquals(3, vector.getUniqueTermCount());
-    TermsEnum termsEnum = vector.iterator();
+    TermsEnum termsEnum = vector.iterator(null);
 
     int i = 0;
     while (termsEnum.next() != null) {

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentReader.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentReader.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentReader.java Tue Nov 15 00:01:43 2011
@@ -123,7 +123,7 @@ public class TestSegmentReader extends L
     while((field = fields.next()) != null) {
       Terms terms = fields.terms();
       assertNotNull(terms);
-      TermsEnum termsEnum = terms.iterator();
+      TermsEnum termsEnum = terms.iterator(null);
       while(termsEnum.next() != null) {
         BytesRef term = termsEnum.term();
         assertTrue(term != null);
@@ -193,7 +193,7 @@ public class TestSegmentReader extends L
     Terms result = reader.getTermVectors(0).terms(DocHelper.TEXT_FIELD_2_KEY);
     assertNotNull(result);
     assertEquals(3, result.getUniqueTermCount());
-    TermsEnum termsEnum = result.iterator();
+    TermsEnum termsEnum = result.iterator(null);
     while(termsEnum.next() != null) {
       String term = termsEnum.term().utf8ToString();
       int freq = (int) termsEnum.totalTermFreq();

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentTermDocs.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentTermDocs.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentTermDocs.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentTermDocs.java Tue Nov 15 00:01:43 2011
@@ -59,7 +59,7 @@ public class TestSegmentTermDocs extends
     assertTrue(reader != null);
     assertEquals(indexDivisor, reader.getTermInfosIndexDivisor());
 
-    TermsEnum terms = reader.fields().terms(DocHelper.TEXT_FIELD_2_KEY).iterator();
+    TermsEnum terms = reader.fields().terms(DocHelper.TEXT_FIELD_2_KEY).iterator(null);
     terms.seekCeil(new BytesRef("field"));
     DocsEnum termDocs = terms.docs(reader.getLiveDocs(), null);
     if (termDocs.nextDoc() != DocsEnum.NO_MORE_DOCS)    {

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentTermEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentTermEnum.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentTermEnum.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestSegmentTermEnum.java Tue Nov 15 00:01:43 2011
@@ -79,7 +79,7 @@ public class TestSegmentTermEnum extends
     addDoc(writer, "aaa bbb");
     writer.close();
     SegmentReader reader = getOnlySegmentReader(IndexReader.open(dir, false));
-    TermsEnum terms = reader.fields().terms("content").iterator();
+    TermsEnum terms = reader.fields().terms("content").iterator(null);
     assertNotNull(terms.next());
     assertEquals("aaa", terms.term().utf8ToString());
     assertNotNull(terms.next());
@@ -103,7 +103,7 @@ public class TestSegmentTermEnum extends
       throws IOException
   {
       IndexReader reader = IndexReader.open(dir, true);
-      TermsEnum termEnum = MultiFields.getTerms(reader, "content").iterator();
+      TermsEnum termEnum = MultiFields.getTerms(reader, "content").iterator(null);
 
     // create enumeration of all terms
     // go to the first term (aaa)

Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestStressAdvance.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestStressAdvance.java?rev=1201968&r1=1201967&r2=1201968&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestStressAdvance.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/index/TestStressAdvance.java Tue Nov 15 00:01:43 2011
@@ -67,7 +67,7 @@ public class TestStressAdvance extends L
           bDocIDs.add(docID);
         }
       }
-      final TermsEnum te = r.getSequentialSubReaders()[0].fields().terms("field").iterator();
+      final TermsEnum te = r.getSequentialSubReaders()[0].fields().terms("field").iterator(null);
       
       DocsEnum de = null;
       for(int iter2=0;iter2<10;iter2++) {