Index: src/java/org/apache/lucene/search/RangeFilter.java =================================================================== --- src/java/org/apache/lucene/search/RangeFilter.java (revision 675655) +++ src/java/org/apache/lucene/search/RangeFilter.java (working copy) @@ -102,7 +102,7 @@ TermEnum enumerator = (null != lowerTerm ? reader.terms(new Term(fieldName, lowerTerm)) - : reader.terms(new Term(fieldName,""))); + : reader.terms(new Term(fieldName))); try { @@ -164,7 +164,7 @@ TermEnum enumerator = (null != lowerTerm ? reader.terms(new Term(fieldName, lowerTerm)) - : reader.terms(new Term(fieldName,""))); + : reader.terms(new Term(fieldName))); try { Index: src/java/org/apache/lucene/search/RangeQuery.java =================================================================== --- src/java/org/apache/lucene/search/RangeQuery.java (revision 675655) +++ src/java/org/apache/lucene/search/RangeQuery.java (working copy) @@ -69,7 +69,7 @@ this.lowerTerm = lowerTerm; } else { - this.lowerTerm = new Term(upperTerm.field(), ""); + this.lowerTerm = new Term(upperTerm.field()); } this.upperTerm = upperTerm; Index: src/java/org/apache/lucene/search/ExtendedFieldCacheImpl.java =================================================================== --- src/java/org/apache/lucene/search/ExtendedFieldCacheImpl.java (revision 675655) +++ src/java/org/apache/lucene/search/ExtendedFieldCacheImpl.java (working copy) @@ -45,7 +45,7 @@ LongParser parser = (LongParser) entry.custom; final long[] retArray = new long[reader.maxDoc()]; TermDocs termDocs = reader.termDocs(); - TermEnum termEnum = reader.terms (new Term(field, "")); + TermEnum termEnum = reader.terms (new Term(field)); try { do { Term term = termEnum.term(); @@ -85,7 +85,7 @@ DoubleParser parser = (DoubleParser) entry.custom; final double[] retArray = new double[reader.maxDoc()]; TermDocs termDocs = reader.termDocs(); - TermEnum termEnum = reader.terms (new Term (field, "")); + TermEnum termEnum = reader.terms (new Term (field)); try { do { Term term = termEnum.term(); @@ -115,7 +115,7 @@ protected Object createValue(IndexReader reader, Object fieldKey) throws IOException { String field = ((String)fieldKey).intern(); - TermEnum enumerator = reader.terms (new Term (field, "")); + TermEnum enumerator = reader.terms (new Term (field)); try { Term term = enumerator.term(); if (term == null) { Index: src/java/org/apache/lucene/search/FieldCacheImpl.java =================================================================== --- src/java/org/apache/lucene/search/FieldCacheImpl.java (revision 675655) +++ src/java/org/apache/lucene/search/FieldCacheImpl.java (working copy) @@ -176,7 +176,7 @@ ByteParser parser = (ByteParser) entry.custom; final byte[] retArray = new byte[reader.maxDoc()]; TermDocs termDocs = reader.termDocs(); - TermEnum termEnum = reader.terms (new Term (field, "")); + TermEnum termEnum = reader.terms (new Term (field)); try { do { Term term = termEnum.term(); @@ -215,7 +215,7 @@ ShortParser parser = (ShortParser) entry.custom; final short[] retArray = new short[reader.maxDoc()]; TermDocs termDocs = reader.termDocs(); - TermEnum termEnum = reader.terms (new Term (field, "")); + TermEnum termEnum = reader.terms (new Term (field)); try { do { Term term = termEnum.term(); @@ -254,7 +254,7 @@ IntParser parser = (IntParser) entry.custom; final int[] retArray = new int[reader.maxDoc()]; TermDocs termDocs = reader.termDocs(); - TermEnum termEnum = reader.terms (new Term (field, "")); + TermEnum termEnum = reader.terms (new Term (field)); try { do { Term term = termEnum.term(); @@ -295,7 +295,7 @@ FloatParser parser = (FloatParser) entry.custom; final float[] retArray = new float[reader.maxDoc()]; TermDocs termDocs = reader.termDocs(); - TermEnum termEnum = reader.terms (new Term (field, "")); + TermEnum termEnum = reader.terms (new Term (field)); try { do { Term term = termEnum.term(); @@ -327,7 +327,7 @@ String field = ((String) fieldKey).intern(); final String[] retArray = new String[reader.maxDoc()]; TermDocs termDocs = reader.termDocs(); - TermEnum termEnum = reader.terms (new Term (field, "")); + TermEnum termEnum = reader.terms (new Term (field)); try { do { Term term = termEnum.term(); @@ -360,7 +360,7 @@ final int[] retArray = new int[reader.maxDoc()]; String[] mterms = new String[reader.maxDoc()+1]; TermDocs termDocs = reader.termDocs(); - TermEnum termEnum = reader.terms (new Term (field, "")); + TermEnum termEnum = reader.terms (new Term (field)); int t = 0; // current term number // an entry for documents that have no terms in this field @@ -431,7 +431,7 @@ protected Object createValue(IndexReader reader, Object fieldKey) throws IOException { String field = ((String)fieldKey).intern(); - TermEnum enumerator = reader.terms (new Term (field, "")); + TermEnum enumerator = reader.terms (new Term (field)); try { Term term = enumerator.term(); if (term == null) { @@ -488,7 +488,7 @@ SortComparator comparator = (SortComparator) entry.custom; final Comparable[] retArray = new Comparable[reader.maxDoc()]; TermDocs termDocs = reader.termDocs(); - TermEnum termEnum = reader.terms (new Term (field, "")); + TermEnum termEnum = reader.terms (new Term (field)); try { do { Term term = termEnum.term(); Index: src/java/org/apache/lucene/index/Term.java =================================================================== --- src/java/org/apache/lucene/index/Term.java (revision 675655) +++ src/java/org/apache/lucene/index/Term.java (working copy) @@ -35,6 +35,17 @@ public Term(String fld, String txt) { this(fld, txt, true); } + + /** Constructs a Term with the given field and empty text. + * This serves two purposes: 1) reuse of a Term with the same field. + * 2) pattern for a query. + * + * @param fld + */ + public Term(String fld) { + this(fld, "", true); + } + Term(String fld, String txt, boolean intern) { field = intern ? fld.intern() : fld; // field names are interned text = txt; // unless already known to be Index: src/java/org/apache/lucene/index/ParallelReader.java =================================================================== --- src/java/org/apache/lucene/index/ParallelReader.java (revision 675655) +++ src/java/org/apache/lucene/index/ParallelReader.java (working copy) @@ -486,7 +486,7 @@ } while (fieldIterator.hasNext()) { field = (String) fieldIterator.next(); - termEnum = ((IndexReader)fieldToReader.get(field)).terms(new Term(field, "")); + termEnum = ((IndexReader)fieldToReader.get(field)).terms(new Term(field)); Term term = termEnum.term(); if (term!=null && term.field()==field) return true; Index: contrib/miscellaneous/src/java/org/apache/lucene/index/FieldNormModifier.java =================================================================== --- contrib/miscellaneous/src/java/org/apache/lucene/index/FieldNormModifier.java (revision 675655) +++ contrib/miscellaneous/src/java/org/apache/lucene/index/FieldNormModifier.java (working copy) @@ -118,7 +118,7 @@ if (sim == null) fakeNorms = SegmentReader.createFakeNorms(reader.maxDoc()); try { - termEnum = reader.terms(new Term(field,"")); + termEnum = reader.terms(new Term(field)); try { termDocs = reader.termDocs(); do { Index: contrib/miscellaneous/src/java/org/apache/lucene/misc/LengthNormModifier.java =================================================================== --- contrib/miscellaneous/src/java/org/apache/lucene/misc/LengthNormModifier.java (revision 675655) +++ contrib/miscellaneous/src/java/org/apache/lucene/misc/LengthNormModifier.java (working copy) @@ -114,7 +114,7 @@ reader = IndexReader.open(dir); termCounts = new int[reader.maxDoc()]; try { - termEnum = reader.terms(new Term(field,"")); + termEnum = reader.terms(new Term(field)); try { termDocs = reader.termDocs(); do { Index: contrib/spellchecker/src/java/org/apache/lucene/search/spell/LuceneDictionary.java =================================================================== --- contrib/spellchecker/src/java/org/apache/lucene/search/spell/LuceneDictionary.java (revision 675655) +++ contrib/spellchecker/src/java/org/apache/lucene/search/spell/LuceneDictionary.java (working copy) @@ -57,7 +57,7 @@ LuceneIterator() { try { - termEnum = reader.terms(new Term(field, "")); + termEnum = reader.terms(new Term(field)); } catch (IOException e) { throw new RuntimeException(e); } Index: contrib/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java =================================================================== --- contrib/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java (revision 675655) +++ contrib/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java (working copy) @@ -704,7 +704,7 @@ /////////////////////////////////////////////////////////////////////////////// // Nested classes: /////////////////////////////////////////////////////////////////////////////// - private static final Term MATCH_ALL_TERM = new Term("", ""); + private static final Term MATCH_ALL_TERM = new Term(""); /** * Search support for Lucene framework integration; implements all methods @@ -821,7 +821,7 @@ Term template = info.template; if (template == null) { // not yet cached? String fieldName = (String) sortedFields[pos].getKey(); - template = new Term(fieldName, ""); + template = new Term(fieldName); info.template = template; } Index: contrib/analyzers/src/java/org/apache/lucene/analysis/query/QueryAutoStopWordAnalyzer.java =================================================================== --- contrib/analyzers/src/java/org/apache/lucene/analysis/query/QueryAutoStopWordAnalyzer.java (revision 675655) +++ contrib/analyzers/src/java/org/apache/lucene/analysis/query/QueryAutoStopWordAnalyzer.java (working copy) @@ -138,7 +138,7 @@ public int addStopWords(IndexReader reader, String fieldName, int maxDocFreq) throws IOException { HashSet stopWords = new HashSet(); String internedFieldName = fieldName.intern(); - TermEnum te = reader.terms(new Term(fieldName, "")); + TermEnum te = reader.terms(new Term(fieldName)); Term term = te.term(); while (term != null) { if (term.field() != internedFieldName) { Index: contrib/queries/src/java/org/apache/lucene/search/DuplicateFilter.java =================================================================== --- contrib/queries/src/java/org/apache/lucene/search/DuplicateFilter.java (revision 675655) +++ contrib/queries/src/java/org/apache/lucene/search/DuplicateFilter.java (working copy) @@ -83,7 +83,7 @@ { OpenBitSet bits=new OpenBitSet(reader.maxDoc()); //assume all are INvalid - Term startTerm=new Term(fieldName,""); + Term startTerm=new Term(fieldName); TermEnum te = reader.terms(startTerm); if(te!=null) { @@ -123,7 +123,7 @@ OpenBitSet bits=new OpenBitSet(reader.maxDoc()); bits.set(0,reader.maxDoc()); //assume all are valid - Term startTerm=new Term(fieldName,""); + Term startTerm=new Term(fieldName); TermEnum te = reader.terms(startTerm); if(te!=null) { Index: contrib/queries/src/java/org/apache/lucene/search/FuzzyLikeThisQuery.java =================================================================== --- contrib/queries/src/java/org/apache/lucene/search/FuzzyLikeThisQuery.java (revision 675655) +++ contrib/queries/src/java/org/apache/lucene/search/FuzzyLikeThisQuery.java (working copy) @@ -106,7 +106,7 @@ TokenStream ts=analyzer.tokenStream(f.fieldName,new StringReader(f.queryString)); Token token=ts.next(); int corpusNumDocs=reader.numDocs(); - Term internSavingTemplateTerm =new Term(f.fieldName,""); //optimization to avoid constructing new Term() objects + Term internSavingTemplateTerm =new Term(f.fieldName); //optimization to avoid constructing new Term() objects HashSet processedTerms=new HashSet(); while(token!=null) {