public virtual void TestNoTermsIndex()
{
Directory dir = NewDirectory();
IndexWriter writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetCodec(TestUtil.AlwaysPostingsFormat(new Lucene41PostingsFormat())));
Document doc = new Document();
doc.Add(NewTextField("field", "a b c d e f g h i j k l m n o p q r s t u v w x y z", Field.Store.NO));
doc.Add(NewTextField("number", "0 1 2 3 4 5 6 7 8 9", Field.Store.NO));
writer.AddDocument(doc);
writer.AddDocument(doc);
writer.Dispose();
DirectoryReader r = DirectoryReader.Open(dir, -1);
try
{
r.DocFreq(new Term("field", "f"));
Assert.Fail("did not hit expected exception");
}
catch (InvalidOperationException ise)
{
// expected
}
Assert.AreEqual(-1, ((SegmentReader)r.Leaves[0].Reader).TermInfosIndexDivisor);
writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetCodec(TestUtil.AlwaysPostingsFormat(new Lucene41PostingsFormat())).SetMergePolicy(NewLogMergePolicy(10)));
writer.AddDocument(doc);
writer.Dispose();
// LUCENE-1718: ensure re-open carries over no terms index:
DirectoryReader r2 = DirectoryReader.OpenIfChanged(r);
Assert.IsNotNull(r2);
Assert.IsNull(DirectoryReader.OpenIfChanged(r2));
r.Dispose();
IList<AtomicReaderContext> leaves = r2.Leaves;
Assert.AreEqual(2, leaves.Count);
foreach (AtomicReaderContext ctx in leaves)
{
try
{
ctx.Reader.DocFreq(new Term("field", "f"));
Assert.Fail("did not hit expected exception");
}
catch (InvalidOperationException ise)
{
// expected
}
}
r2.Dispose();
dir.Dispose();
}