public virtual void TestIndexStoreCombos() { MockRAMDirectory dir = new MockRAMDirectory(); IndexWriter w = new IndexWriter(dir, new WhitespaceAnalyzer(), true, IndexWriter.MaxFieldLength.UNLIMITED); byte[] b = new byte[50]; for (int i = 0; i < 50; i++) b[i] = (byte) (i + 77); Document doc = new Document(); Field f = new Field("binary", b, 10, 17, Field.Store.YES); f.SetTokenStream(new WhitespaceTokenizer(new System.IO.StringReader("doc1field1"))); Field f2 = new Field("string", "value", Field.Store.YES, Field.Index.ANALYZED); f2.SetTokenStream(new WhitespaceTokenizer(new System.IO.StringReader("doc1field2"))); doc.Add(f); doc.Add(f2); w.AddDocument(doc); // add 2 docs to test in-memory merging f.SetTokenStream(new WhitespaceTokenizer(new System.IO.StringReader("doc2field1"))); f2.SetTokenStream(new WhitespaceTokenizer(new System.IO.StringReader("doc2field2"))); w.AddDocument(doc); // force segment flush so we can force a segment merge with doc3 later. w.Commit(); f.SetTokenStream(new WhitespaceTokenizer(new System.IO.StringReader("doc3field1"))); f2.SetTokenStream(new WhitespaceTokenizer(new System.IO.StringReader("doc3field2"))); w.AddDocument(doc); w.Commit(); w.Optimize(); // force segment merge. IndexReader ir = IndexReader.Open(dir); doc = ir.Document(0); f = doc.GetField("binary"); b = f.GetBinaryValue(); Assert.IsTrue(b != null); Assert.AreEqual(17, b.Length, 17); Assert.AreEqual(87, b[0]); Assert.IsTrue(ir.Document(0).GetFieldable("binary").IsBinary()); Assert.IsTrue(ir.Document(1).GetFieldable("binary").IsBinary()); Assert.IsTrue(ir.Document(2).GetFieldable("binary").IsBinary()); Assert.AreEqual("value", ir.Document(0).Get("string")); Assert.AreEqual("value", ir.Document(1).Get("string")); Assert.AreEqual("value", ir.Document(2).Get("string")); // test that the terms were indexed. Assert.IsTrue(ir.TermDocs(new Term("binary", "doc1field1")).Next()); Assert.IsTrue(ir.TermDocs(new Term("binary", "doc2field1")).Next()); Assert.IsTrue(ir.TermDocs(new Term("binary", "doc3field1")).Next()); Assert.IsTrue(ir.TermDocs(new Term("string", "doc1field2")).Next()); Assert.IsTrue(ir.TermDocs(new Term("string", "doc2field2")).Next()); Assert.IsTrue(ir.TermDocs(new Term("string", "doc3field2")).Next()); ir.Close(); dir.Close(); }