Package org.apache.lucene.backward_codecs.lucene99

# Class Lucene99SkipWriter

java.lang.Object
org.apache.lucene.codecs.MultiLevelSkipListWriter
org.apache.lucene.backward_codecs.lucene99.Lucene99SkipWriter

public final class Lucene99SkipWriter 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 Summary

  ### Fields inherited from class org.apache.lucene.codecs.MultiLevelSkipListWriter

  `numberOfSkipLevels`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Lucene99SkipWriter(int maxSkipLevels, int blockSize, int docCount, IndexOutput docOut, IndexOutput posOut, IndexOutput payOut)`
  Sole constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `bufferSkip(int doc, CompetitiveImpactAccumulator competitiveFreqNorms, int numDocs, long posFP, long payFP, int posBufferUpto, int payloadByteUpto)`
  Sets the values for the current skip data.
  `void`
  `resetSkip()`
  `void`
  `setField(boolean fieldHasPositions, boolean fieldHasOffsets, boolean fieldHasPayloads)`
  Reset state for the given index options.
  `static void`
  `writeImpacts(CompetitiveImpactAccumulator acc, DataOutput out)`
  Write impacts to the given output.
  `protected void`
  `writeSkipData(int level, DataOutput skipBuffer)`

  ### Methods inherited from class org.apache.lucene.codecs.MultiLevelSkipListWriter

  `bufferSkip, init, writeChildPointer, writeLevelLength, writeSkip`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### Lucene99SkipWriter

    public Lucene99SkipWriter(int maxSkipLevels, int blockSize, int docCount, IndexOutput docOut, IndexOutput posOut, IndexOutput payOut)
    Sole constructor.

- ## Method Details

  - ### setField

    public void setField(boolean fieldHasPositions, boolean fieldHasOffsets, boolean fieldHasPayloads)
    Reset state for the given index options.

  - ### resetSkip

    public void resetSkip()
    Overrides:
      `resetSkip` in class `MultiLevelSkipListWriter`

  - ### bufferSkip

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

  - ### writeSkipData

    protected void writeSkipData(int level, DataOutput skipBuffer) throws IOException
    Specified by:
      `writeSkipData` in class `MultiLevelSkipListWriter`
    Throws:
      `IOException`

  - ### writeImpacts

    public static void writeImpacts(CompetitiveImpactAccumulator acc, DataOutput out) throws IOException
    Write impacts to the given output.
    Throws:
      `IOException`