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(); } } }
public virtual void TestCompareTo() { Term term = new Term("field" + Random().Next(NUMBER_OF_FIELDS), Text); for (int i = 0; i < Index.Length(); i++) { Term t = Index.GetTerm(i); int compareTo = term.CompareTo(t); Assert.AreEqual(compareTo, Index.CompareTo(term, i)); } }
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(); } } }