Index: lucene/src/test/org/apache/lucene/search/TestSetNorm.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestSetNorm.java (revision 1127786) +++ lucene/src/test/org/apache/lucene/search/TestSetNorm.java (working copy) @@ -22,9 +22,14 @@ import org.apache.lucene.util.LuceneTestCase; import org.apache.lucene.analysis.MockAnalyzer; import org.apache.lucene.document.*; +import org.apache.lucene.document.Field.Index; +import org.apache.lucene.document.Field.Store; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.IndexReader.AtomicReaderContext; +import org.apache.lucene.index.IndexFileNames; import org.apache.lucene.index.IndexWriter; +import org.apache.lucene.index.IndexWriterConfig; +import org.apache.lucene.index.LogMergePolicy; import org.apache.lucene.index.Term; import org.apache.lucene.store.Directory; @@ -93,4 +98,37 @@ } store.close(); } + + public void testMixedNorms() throws Exception { + Directory dir = newDirectory(); + LogMergePolicy lmp = newLogMergePolicy(false); + IndexWriterConfig conf = newIndexWriterConfig(TEST_VERSION_CURRENT, + new MockAnalyzer(random)).setMergePolicy(lmp); + IndexWriter w = new IndexWriter(dir, conf); + Document doc = new Document(); + doc.add(new Field("c", "text1", Store.YES, Index.ANALYZED)); + w.addDocument(doc); +// w.commit(); + doc = new Document(); + doc.add(new Field("c", "text2", Store.NO, Index.NOT_ANALYZED_NO_NORMS)); + w.addDocument(doc); + w.close(); + + IndexReader r = IndexReader.open(dir, false); + r.setNorm(0, "c", (byte) 1); + r.close(); + + // Look for the sep norms file + boolean found = false; + for (String s : dir.listAll()) { + if (IndexFileNames.isSeparateNormsFile(s)) { + found = true; + break; + } + } + assertTrue("separate norms file not found", found); + + dir.close(); + } + }