Class Lucene84SkipWriter


  • final class Lucene84SkipWriter
    extends MultiLevelSkipListWriter
    Write skip lists with multiple levels, and support skip within block ints. Assume that docFreq = 28, skipInterval = blockSize = 12 | block#0 | | block#1 | |vInts| d d d d d d d d d d d d d d d d d d d d d d d d d d d d (posting list) ^ ^ (level 0 skip point) Note that skipWriter will ignore first document in block#0, since it is useless as a skip point. Also, we'll never skip into the vInts block, only record skip data at the start its start point(if it exist). For each skip point, we will record: 1. docID in former position, i.e. for position 12, record docID[11], etc. 2. its related file points(position, payload), 3. related numbers or uptos(position, payload). 4. start offset.
    • Field Detail

      • lastSkipDoc

        private int[] lastSkipDoc
      • lastSkipDocPointer

        private long[] lastSkipDocPointer
      • lastSkipPosPointer

        private long[] lastSkipPosPointer
      • lastSkipPayPointer

        private long[] lastSkipPayPointer
      • lastPayloadByteUpto

        private int[] lastPayloadByteUpto
      • curDoc

        private int curDoc
      • curDocPointer

        private long curDocPointer
      • curPosPointer

        private long curPosPointer
      • curPayPointer

        private long curPayPointer
      • curPosBufferUpto

        private int curPosBufferUpto
      • curPayloadByteUpto

        private int curPayloadByteUpto
      • fieldHasPositions

        private boolean fieldHasPositions
      • fieldHasOffsets

        private boolean fieldHasOffsets
      • fieldHasPayloads

        private boolean fieldHasPayloads
      • initialized

        private boolean initialized
      • lastDocFP

        long lastDocFP
      • lastPosFP

        long lastPosFP
      • lastPayFP

        long lastPayFP
    • Constructor Detail

    • Method Detail

      • setField

        public void setField​(boolean fieldHasPositions,
                             boolean fieldHasOffsets,
                             boolean fieldHasPayloads)
      • initSkip

        private void initSkip()
      • bufferSkip

        public void bufferSkip​(int doc,
                               CompetitiveImpactAccumulator competitiveFreqNorms,
                               int numDocs,
                               long posFP,
                               long payFP,
                               int posBufferUpto,
                               int payloadByteUpto)
                        throws java.io.IOException
        Sets the values for the current skip data.
        Throws:
        java.io.IOException
      • writeSkipData

        protected void writeSkipData​(int level,
                                     IndexOutput skipBuffer)
                              throws java.io.IOException
        Description copied from class: MultiLevelSkipListWriter
        Subclasses must implement the actual skip data encoding in this method.
        Specified by:
        writeSkipData in class MultiLevelSkipListWriter
        Parameters:
        level - the level skip data shall be writing for
        skipBuffer - the skip buffer to write to
        Throws:
        java.io.IOException