Ejemplo n.º 1
0
                /// <summary>
                /// Load current stats shard </summary>
                internal void RefillStats()
                {
                    var offset  = statsBlockOrd * outerInstance.numSkipInfo;
                    var statsFP = (int)outerInstance.skipInfo[offset];

                    statsReader.Position = statsFP;
                    for (int i = 0; i < INTERVAL && !statsReader.Eof(); i++)
                    {
                        int code = statsReader.ReadVInt();
                        if (outerInstance.HasFreqs())
                        {
                            docFreq_Renamed[i] = ((int)((uint)code >> 1));
                            if ((code & 1) == 1)
                            {
                                totalTermFreq_Renamed[i] = docFreq_Renamed[i];
                            }
                            else
                            {
                                totalTermFreq_Renamed[i] = docFreq_Renamed[i] + statsReader.ReadVLong();
                            }
                        }
                        else
                        {
                            docFreq_Renamed[i] = code;
                        }
                    }
                }
Ejemplo n.º 2
0
 public override long NextOrd()
 {
     if (Input.Eof())
     {
         return(NO_MORE_ORDS);
     }
     else
     {
         currentOrd += Input.ReadVLong();
         return(currentOrd);
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Load current metadata shard </summary>
 internal void RefillMetadata()
 {
     var offset = metaBlockOrd * outerInstance.numSkipInfo;
     var metaLongsFP = (int)outerInstance.skipInfo[offset + 1];
     var metaBytesFP = (int)outerInstance.skipInfo[offset + 2];
     metaLongsReader.Position = metaLongsFP;
     for (int j = 0; j < outerInstance.longsSize; j++)
     {
         longs[0][j] = outerInstance.skipInfo[offset + 3 + j] + metaLongsReader.ReadVLong();
     }
     bytesStart[0] = metaBytesFP;
     bytesLength[0] = (int)metaLongsReader.ReadVLong();
     for (int i = 1; i < INTERVAL && !metaLongsReader.Eof(); i++)
     {
         for (int j = 0; j < outerInstance.longsSize; j++)
         {
             longs[i][j] = longs[i - 1][j] + metaLongsReader.ReadVLong();
         }
         bytesStart[i] = bytesStart[i - 1] + bytesLength[i - 1];
         bytesLength[i] = (int)metaLongsReader.ReadVLong();
     }
 }
Ejemplo n.º 4
0
                private void DecodeMetaData()
                {
                    //System.out.println("BTR.decodeMetadata mdUpto=" + metaDataUpto + " vs termCount=" + state.TermBlockOrd + " state=" + state);
                    if (!_seekPending)
                    {
                        // TODO: cutover to random-access API
                        // here.... really stupid that we have to decode N
                        // wasted term metadata just to get to the N+1th
                        // that we really need...

                        // lazily catch up on metadata decode:

                        var limit    = _state.TermBlockOrd;
                        var absolute = _metaDataUpto == 0;
                        // TODO: better API would be "jump straight to term=N"???
                        while (_metaDataUpto < limit)
                        {
                            //System.out.println("  decode mdUpto=" + metaDataUpto);
                            // TODO: we could make "tiers" of metadata, ie,
                            // decode docFreq/totalTF but don't decode postings
                            // metadata; this way caller could get
                            // docFreq/totalTF w/o paying decode cost for
                            // postings

                            // TODO: if docFreq were bulk decoded we could
                            // just skipN here:

                            _state.DocFreq = _freqReader.ReadVInt();
                            if (_fieldReader._fieldInfo.FieldIndexOptions != FieldInfo.IndexOptions.DOCS_ONLY)
                            {
                                _state.TotalTermFreq = _state.DocFreq + _freqReader.ReadVLong();
                            }
                            // metadata
                            for (int i = 0; i < _longs.Length; i++)
                            {
                                _longs[i] = _bytesReader.ReadVLong();
                            }
                            _blockTermsReader._postingsReader.DecodeTerm(_longs, _bytesReader, _fieldReader._fieldInfo, _state, absolute);
                            _metaDataUpto++;
                            absolute = false;
                        }
                    }
                }
Ejemplo n.º 5
0
 internal void decodeMetaData()
 {
     if (!didDecode)
     {
         buffer.Reset(current.Output.Bytes, current.Output.Offset, current.Output.Length);
         docFreq_Renamed = buffer.ReadVInt();
         if (field.FieldIndexOptions != IndexOptions.DOCS_ONLY)
         {
             totalTermFreq_Renamed = docFreq_Renamed + buffer.ReadVLong();
         }
         else
         {
             totalTermFreq_Renamed = -1;
         }
         postingsSpare.Bytes  = current.Output.Bytes;
         postingsSpare.Offset = buffer.Position;
         postingsSpare.Length = current.Output.Length - (buffer.Position - current.Output.Offset);
         //System.out.println("  df=" + docFreq + " totTF=" + totalTermFreq + " offset=" + buffer.getPosition() + " len=" + current.output.length);
         didDecode = true;
     }
 }