public void TestSplitRR() { MultiPassIndexSplitter splitter = new MultiPassIndexSplitter(); Directory[] dirs = new Directory[]{ NewDirectory(), NewDirectory(), NewDirectory() }; try { splitter.Split(TEST_VERSION_CURRENT, input, dirs, false); Document doc; TermsEnum te; IndexReader ir; using (ir = DirectoryReader.Open(dirs[0])) { assertTrue(ir.NumDocs - NUM_DOCS / 3 <= 1); // rounding error doc = ir.Document(0); assertEquals("0", doc.Get("id")); te = MultiFields.GetTerms(ir, "id").Iterator(null); assertEquals(TermsEnum.SeekStatus.NOT_FOUND, te.SeekCeil(new BytesRef("1"))); assertNotSame("1", te.Term().Utf8ToString()); } using (ir = DirectoryReader.Open(dirs[1])) { assertTrue(ir.NumDocs - NUM_DOCS / 3 <= 1); doc = ir.Document(0); assertEquals("1", doc.Get("id")); te = MultiFields.GetTerms(ir, "id").Iterator(null); assertEquals(TermsEnum.SeekStatus.NOT_FOUND, te.SeekCeil(new BytesRef("0"))); assertNotSame("0", te.Term().Utf8ToString()); } using (ir = DirectoryReader.Open(dirs[2])) { assertTrue(ir.NumDocs - NUM_DOCS / 3 <= 1); doc = ir.Document(0); assertEquals("2", doc.Get("id")); te = MultiFields.GetTerms(ir, "id").Iterator(null); assertEquals(TermsEnum.SeekStatus.NOT_FOUND, te.SeekCeil(new BytesRef("1"))); assertNotSame("1", te.Term()); assertEquals(TermsEnum.SeekStatus.NOT_FOUND, te.SeekCeil(new BytesRef("0"))); assertNotSame("0", te.Term().Utf8ToString()); } } finally { foreach (Directory d in dirs) { d.Dispose(); } } }
public Configuration(CommandLineOptions options) { this.Main = (args) => MultiPassIndexSplitter.Main(args); this.Name = "split"; this.Description = FromResource("Description"); this.Argument("<OUTPUT_DIRECTORY>", FromResource("OutputDirectoryDescription")); this.Argument("<INPUT_DIRECTORY>[ <INPUT_DIRECTORY_2>...]", FromResource("InputDirectoryDescription"), true); this.NumberOfParts = this.Option("-n |--number-of-parts <NUMBER>", FromResource("NumberOfPartsDescription"), CommandOptionType.SingleValue); this.Sequential = this.Option("-s|--sequential", FromResource("SequentialDescription"), CommandOptionType.NoValue); this.OnExecute(() => new IndexSplitCommand().Run(this)); }
public void TestSplitSeq() { MultiPassIndexSplitter splitter = new MultiPassIndexSplitter(); Directory[] dirs = new Directory[]{ NewDirectory(), NewDirectory(), NewDirectory() }; try { splitter.Split(TEST_VERSION_CURRENT, input, dirs, true); Document doc; int start; IndexReader ir; using (ir = DirectoryReader.Open(dirs[0])) { assertTrue(ir.NumDocs - NUM_DOCS / 3 <= 1); doc = ir.Document(0); assertEquals("0", doc.Get("id")); start = ir.NumDocs; } using (ir = DirectoryReader.Open(dirs[1])) { assertTrue(ir.NumDocs - NUM_DOCS / 3 <= 1); doc = ir.Document(0); assertEquals(start + "", doc.Get("id")); start += ir.NumDocs; } using (ir = DirectoryReader.Open(dirs[2])) { assertTrue(ir.NumDocs - NUM_DOCS / 3 <= 1); doc = ir.Document(0); assertEquals(start + "", doc.Get("id")); // make sure the deleted doc is not here TermsEnum te = MultiFields.GetTerms(ir, "id").Iterator(null); Term t = new Term("id", (NUM_DOCS - 1) + ""); assertEquals(TermsEnum.SeekStatus.NOT_FOUND, te.SeekCeil(new BytesRef(t.Text()))); assertNotSame(t.Text(), te.Term().Utf8ToString()); } } finally { foreach (Directory d in dirs) { d.Dispose(); } } }