コード例 #1
0
        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();
                }
            }
        }
コード例 #2
0
ファイル: IndexSplitCommand.cs プロジェクト: ywscr/lucenenet
            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));
            }
コード例 #3
0
 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();
         }
     }
 }