internal TermInfosReader(Directory dir, string seg, FieldInfos fis, IOContext context, int indexDivisor) { bool success = false; if (indexDivisor < 1 && indexDivisor != -1) { throw new System.ArgumentException("indexDivisor must be -1 (don't load terms index) or greater than 0: got " + indexDivisor); } try { directory = dir; segment = seg; fieldInfos = fis; origEnum = new SegmentTermEnum(directory.OpenInput(IndexFileNames.SegmentFileName(segment, "", Lucene3xPostingsFormat.TERMS_EXTENSION), context), fieldInfos, false); size = origEnum.size; if (indexDivisor != -1) { // Load terms index totalIndexInterval = origEnum.indexInterval * indexDivisor; string indexFileName = IndexFileNames.SegmentFileName(segment, "", Lucene3xPostingsFormat.TERMS_INDEX_EXTENSION); SegmentTermEnum indexEnum = new SegmentTermEnum(directory.OpenInput(indexFileName, context), fieldInfos, true); try { index = new TermInfosReaderIndex(indexEnum, indexDivisor, dir.FileLength(indexFileName), totalIndexInterval); indexLength = index.Length; } finally { indexEnum.Dispose(); } } else { // Do not load terms index: totalIndexInterval = -1; index = null; indexLength = -1; } success = true; } finally { // With lock-less commits, it's entirely possible (and // fine) to hit a FileNotFound exception above. In // this case, we want to explicitly close any subset // of things that were opened so that we don't have to // wait for a GC to do so. if (!success) { Dispose(); } } }
public static void AfterClass() { TermEnum.Dispose(); Reader.Dispose(); Directory.Dispose(); TermEnum = null; Reader = null; Directory = null; Index = null; SampleTerms = null; }
public override void AfterClass() { TermEnum.Dispose(); Reader.Dispose(); Directory.Dispose(); TermEnum = null; Reader = null; Directory = null; Index = null; SampleTerms = null; base.AfterClass(); }
public override void AfterClass() { termEnum.Dispose(); reader.Dispose(); directory.Dispose(); termEnum = null; reader = null; directory = null; index = null; sampleTerms = null; base.AfterClass(); }
public override void BeforeClass() { base.BeforeClass(); // NOTE: turn off compound file, this test will open some index files directly. OldFormatImpersonationIsActive = true; IndexWriterConfig config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random, MockTokenizer.KEYWORD, false)).SetUseCompoundFile(false); TermIndexInterval = config.TermIndexInterval; IndexDivisor = TestUtil.NextInt32(Random, 1, 10); NUMBER_OF_DOCUMENTS = AtLeast(100); NUMBER_OF_FIELDS = AtLeast(Math.Max(10, 3 * TermIndexInterval * IndexDivisor / NUMBER_OF_DOCUMENTS)); Directory = NewDirectory(); config.SetCodec(new PreFlexRWCodec()); LogMergePolicy mp = NewLogMergePolicy(); // NOTE: turn off compound file, this test will open some index files directly. mp.NoCFSRatio = 0.0; config.SetMergePolicy(mp); Populate(Directory, config); DirectoryReader r0 = IndexReader.Open(Directory); SegmentReader r = LuceneTestCase.GetOnlySegmentReader(r0); string segment = r.SegmentName; r.Dispose(); FieldInfosReader infosReader = (new PreFlexRWCodec()).FieldInfosFormat.FieldInfosReader; FieldInfos fieldInfos = infosReader.Read(Directory, segment, "", IOContext.READ_ONCE); string segmentFileName = IndexFileNames.SegmentFileName(segment, "", Lucene3xPostingsFormat.TERMS_INDEX_EXTENSION); long tiiFileLength = Directory.FileLength(segmentFileName); IndexInput input = Directory.OpenInput(segmentFileName, NewIOContext(Random)); TermEnum = new SegmentTermEnum(Directory.OpenInput(IndexFileNames.SegmentFileName(segment, "", Lucene3xPostingsFormat.TERMS_EXTENSION), NewIOContext(Random)), fieldInfos, false); int totalIndexInterval = TermEnum.indexInterval * IndexDivisor; SegmentTermEnum indexEnum = new SegmentTermEnum(input, fieldInfos, true); Index = new TermInfosReaderIndex(indexEnum, IndexDivisor, tiiFileLength, totalIndexInterval); indexEnum.Dispose(); input.Dispose(); Reader = IndexReader.Open(Directory); SampleTerms = Sample(Random, Reader, 1000); }
public void BeforeClass() { // NOTE: turn off compound file, this test will open some index files directly. OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true; IndexWriterConfig config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random(), MockTokenizer.KEYWORD, false)).SetUseCompoundFile(false); TermIndexInterval = config.TermIndexInterval; IndexDivisor = TestUtil.NextInt(Random(), 1, 10); NUMBER_OF_DOCUMENTS = AtLeast(100); NUMBER_OF_FIELDS = AtLeast(Math.Max(10, 3 * TermIndexInterval * IndexDivisor / NUMBER_OF_DOCUMENTS)); Directory = NewDirectory(); config.SetCodec(new PreFlexRWCodec(OLD_FORMAT_IMPERSONATION_IS_ACTIVE)); LogMergePolicy mp = NewLogMergePolicy(); // NOTE: turn off compound file, this test will open some index files directly. mp.NoCFSRatio = 0.0; config.SetMergePolicy(mp); Populate(Directory, config); DirectoryReader r0 = IndexReader.Open(Directory); SegmentReader r = LuceneTestCase.GetOnlySegmentReader(r0); string segment = r.SegmentName; r.Dispose(); FieldInfosReader infosReader = (new PreFlexRWCodec(OLD_FORMAT_IMPERSONATION_IS_ACTIVE)).FieldInfosFormat().FieldInfosReader; FieldInfos fieldInfos = infosReader.Read(Directory, segment, "", IOContext.READONCE); string segmentFileName = IndexFileNames.SegmentFileName(segment, "", Lucene3xPostingsFormat.TERMS_INDEX_EXTENSION); long tiiFileLength = Directory.FileLength(segmentFileName); IndexInput input = Directory.OpenInput(segmentFileName, NewIOContext(Random())); TermEnum = new SegmentTermEnum(Directory.OpenInput(IndexFileNames.SegmentFileName(segment, "", Lucene3xPostingsFormat.TERMS_EXTENSION), NewIOContext(Random())), fieldInfos, false); int totalIndexInterval = TermEnum.IndexInterval * IndexDivisor; SegmentTermEnum indexEnum = new SegmentTermEnum(input, fieldInfos, true); Index = new TermInfosReaderIndex(indexEnum, IndexDivisor, tiiFileLength, totalIndexInterval); indexEnum.Dispose(); input.Dispose(); Reader = IndexReader.Open(Directory); SampleTerms = Sample(Random(), Reader, 1000); }
internal TermInfosReader(Directory dir, string seg, FieldInfos fis, IOContext context, int indexDivisor) { bool success = false; if (indexDivisor < 1 && indexDivisor != -1) { throw new System.ArgumentException("indexDivisor must be -1 (don't load terms index) or greater than 0: got " + indexDivisor); } try { Directory = dir; Segment = seg; FieldInfos = fis; OrigEnum = new SegmentTermEnum(Directory.OpenInput(IndexFileNames.SegmentFileName(Segment, "", Lucene3xPostingsFormat.TERMS_EXTENSION), context), FieldInfos, false); Size_Renamed = OrigEnum.Size; if (indexDivisor != -1) { // Load terms index TotalIndexInterval = OrigEnum.IndexInterval * indexDivisor; string indexFileName = IndexFileNames.SegmentFileName(Segment, "", Lucene3xPostingsFormat.TERMS_INDEX_EXTENSION); SegmentTermEnum indexEnum = new SegmentTermEnum(Directory.OpenInput(indexFileName, context), FieldInfos, true); try { Index = new TermInfosReaderIndex(indexEnum, indexDivisor, dir.FileLength(indexFileName), TotalIndexInterval); IndexLength = Index.Length(); } finally { indexEnum.Dispose(); } } else { // Do not load terms index: TotalIndexInterval = -1; Index = null; IndexLength = -1; } success = true; } finally { // With lock-less commits, it's entirely possible (and // fine) to hit a FileNotFound exception above. In // this case, we want to explicitly close any subset // of things that were opened so that we don't have to // wait for a GC to do so. if (!success) { Dispose(); } } }