public override void Load() { TermPositions tp = null; byte[] payloadBuffer = new byte[4]; // four bytes for an int try { tp = _reader.TermPositions(_sizeTerm); if (tp == null) { return; } while (tp.Next()) { if (tp.Freq > 0) { tp.NextPosition(); tp.GetPayload(payloadBuffer, 0); int len = BytesToInt(payloadBuffer); Allocate(tp.Doc, Math.Min(len, _maxItems), true); } } } finally { if (tp != null) { tp.Dispose(); } } }
public override int FetchDoc(int targetDoc) { if (targetDoc <= _curDoc) { targetDoc = _curDoc + 1; } if (_tp.SkipTo(targetDoc)) { _curDoc = _tp.Doc; _posLeft = _tp.Freq; _curSec = -1; _curPos = -1; return(_curDoc); } else { _curDoc = DocIdSetIterator.NO_MORE_DOCS; _tp.Dispose(); return(_curDoc); } }