Index: lucene/src/test/org/apache/lucene/search/TestTermVectors.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestTermVectors.java (revision 1145297) +++ lucene/src/test/org/apache/lucene/search/TestTermVectors.java (working copy) @@ -52,25 +52,22 @@ FieldType ft = new FieldType(TextField.TYPE_STORED); int mod3 = i % 3; int mod2 = i % 2; - if (mod2 == 0 && mod3 == 0){ + if (mod2 == 0 && mod3 == 0) { ft.setStoreTermVectors(true); ft.setStoreTermVectorOffsets(true); ft.setStoreTermVectorPositions(true); - } - else if (mod2 == 0){ + } else if (mod2 == 0) { ft.setStoreTermVectors(true); ft.setStoreTermVectorPositions(true); - } - else if (mod3 == 0){ + } else if (mod3 == 0) { ft.setStoreTermVectors(true); ft.setStoreTermVectorOffsets(true); - } - else { + } else { ft.setStoreTermVectors(true); } - doc.add(newField("field", English.intToEnglish(i), ft)); + doc.add(new Field("field", ft, English.intToEnglish(i))); //test no term vectors too - doc.add(newField("noTV", English.intToEnglish(i), TextField.TYPE_STORED)); + doc.add(new Field("noTV", TextField.TYPE_STORED, English.intToEnglish(i))); writer.addDocument(doc); } reader = writer.getReader(); @@ -95,11 +92,10 @@ ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs; assertEquals(100, hits.length); - for (int i = 0; i < hits.length; i++) - { + for (int i = 0; i < hits.length; i++) { TermFreqVector [] vector = searcher.reader.getTermFreqVectors(hits[i].doc); assertTrue(vector != null); - assertTrue(vector.length == 1); + assertEquals("doc=" + hits[i].doc + " tv=" + vector, 1, vector.length); } TermFreqVector vector; vector = searcher.reader.getTermFreqVector(hits[0].doc, "noTV"); Index: lucene/src/test-framework/org/apache/lucene/util/LuceneTestCase.java =================================================================== --- lucene/src/test-framework/org/apache/lucene/util/LuceneTestCase.java (revision 1145297) +++ lucene/src/test-framework/org/apache/lucene/util/LuceneTestCase.java (working copy) @@ -1079,15 +1079,37 @@ } public static org.apache.lucene.document2.Field newField(Random random, String name, String value, FieldType type) { - FieldType newType = new FieldType(type); if (usually(random)) { // most of the time, don't modify the params - return new org.apache.lucene.document2.Field(name, newType, value); + return new org.apache.lucene.document2.Field(name, type, value); } + FieldType newType = new FieldType(type); if (!newType.stored() && random.nextBoolean()) { newType.setStored(true); // randomly store it } + + if (!newType.storeTermVectors()) { + newType.setStoreTermVectors(random.nextBoolean()); + } + + if (!newType.storeTermVectors()) { + if (!newType.storeTermVectorOffsets()) { + newType.setStoreTermVectorOffsets(random.nextBoolean()); + } + if (!newType.storeTermVectorPositions()) { + newType.setStoreTermVectorPositions(random.nextBoolean()); + } + } + + // TODO: we need to do this, but smarter, ie, most of + // the time we set the same value for a given field but + // sometimes (rarely) we change it up: + /* + if (newType.omitNorms()) { + newType.setOmitNorms(random.nextBoolean()); + } + */ return new org.apache.lucene.document2.Field(name, newType, value); }