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();
                    }
                }
            }
Ejemplo n.º 2
0
        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);
            }
        }