/// <summary> /// Optimized implementation. </summary> public virtual bool SkipTo(int target) { // don't skip if the target is close (within skipInterval docs away) if ((target - SkipInterval) >= Doc_Renamed && Df >= SkipInterval) // optimized case { if (SkipListReader == null) { SkipListReader = new Lucene3xSkipListReader((IndexInput)FreqStream.Clone(), MaxSkipLevels, SkipInterval); // lazily clone } if (!HaveSkipped) // lazily initialize skip stream { SkipListReader.Init(SkipPointer, FreqBasePointer, ProxBasePointer, Df, CurrentFieldStoresPayloads); HaveSkipped = true; } int newCount = SkipListReader.SkipTo(target); if (newCount > Count) { FreqStream.Seek(SkipListReader.FreqPointer); SkipProx(SkipListReader.ProxPointer, SkipListReader.PayloadLength); Doc_Renamed = SkipListReader.Doc; Count = newCount; } } // done skipping, now just scan do { if (!Next()) { return(false); } } while (target > Doc_Renamed); return(true); }
/// <summary> /// Optimized implementation. </summary> public virtual bool SkipTo(int target) { // don't skip if the target is close (within skipInterval docs away) if ((target - skipInterval) >= doc && m_df >= skipInterval) // optimized case { if (skipListReader == null) { skipListReader = new Lucene3xSkipListReader((IndexInput)m_freqStream.Clone(), maxSkipLevels, skipInterval); // lazily clone } if (!haveSkipped) // lazily initialize skip stream { skipListReader.Init(skipPointer, freqBasePointer, proxBasePointer, m_df, m_currentFieldStoresPayloads); haveSkipped = true; } int newCount = skipListReader.SkipTo(target); if (newCount > m_count) { m_freqStream.Seek(skipListReader.FreqPointer); SkipProx(skipListReader.ProxPointer, skipListReader.PayloadLength); doc = skipListReader.Doc; m_count = newCount; } } // done skipping, now just scan do { if (!Next()) { return(false); } } while (target > doc); return(true); }
/// <summary> /// Optimized implementation. </summary> public virtual bool SkipTo(int target) { // don't skip if the target is close (within skipInterval docs away) if ((target - SkipInterval) >= Doc_Renamed && Df >= SkipInterval) // optimized case { if (SkipListReader == null) { SkipListReader = new Lucene3xSkipListReader((IndexInput)FreqStream.Clone(), MaxSkipLevels, SkipInterval); // lazily clone } if (!HaveSkipped) // lazily initialize skip stream { SkipListReader.Init(SkipPointer, FreqBasePointer, ProxBasePointer, Df, CurrentFieldStoresPayloads); HaveSkipped = true; } int newCount = SkipListReader.SkipTo(target); if (newCount > Count) { FreqStream.Seek(SkipListReader.FreqPointer); SkipProx(SkipListReader.ProxPointer, SkipListReader.PayloadLength); Doc_Renamed = SkipListReader.Doc; Count = newCount; } } // done skipping, now just scan do { if (!Next()) { return false; } } while (target > Doc_Renamed); return true; }