java.lang.Object
org.apache.lucene.codecs.MultiLevelSkipListWriter
org.apache.lucene.codecs.lucene99.Lucene99SkipWriter
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
FieldsModifier and TypeFieldDescriptionprivate CompetitiveImpactAccumulator[]
private int
private long
private int
private long
private int
private long
private final IndexOutput
private boolean
private boolean
private boolean
private final ByteBuffersDataOutput
private boolean
(package private) long
(package private) long
(package private) long
private int[]
private long[]
private long[]
private long[]
private final IndexOutput
private final IndexOutput
Fields inherited from class org.apache.lucene.codecs.MultiLevelSkipListWriter
numberOfSkipLevels
-
Constructor Summary
ConstructorsConstructorDescriptionLucene99SkipWriter
(int maxSkipLevels, int blockSize, int docCount, IndexOutput docOut, IndexOutput posOut, IndexOutput payOut) -
Method Summary
Modifier and TypeMethodDescriptionvoid
bufferSkip
(int doc, CompetitiveImpactAccumulator competitiveFreqNorms, int numDocs, long posFP, long payFP, int posBufferUpto, int payloadByteUpto) Sets the values for the current skip data.private void
initSkip()
void
Creates new buffers or empties the existing onesvoid
setField
(boolean fieldHasPositions, boolean fieldHasOffsets, boolean fieldHasPayloads) static void
protected void
writeSkipData
(int level, DataOutput skipBuffer) Subclasses must implement the actual skip data encoding in this method.Methods inherited from class org.apache.lucene.codecs.MultiLevelSkipListWriter
bufferSkip, init, writeChildPointer, writeLevelLength, writeSkip
-
Field Details
-
lastSkipDoc
private int[] lastSkipDoc -
lastSkipDocPointer
private long[] lastSkipDocPointer -
lastSkipPosPointer
private long[] lastSkipPosPointer -
lastSkipPayPointer
private long[] lastSkipPayPointer -
docOut
-
posOut
-
payOut
-
curDoc
private int curDoc -
curDocPointer
private long curDocPointer -
curPosPointer
private long curPosPointer -
curPayPointer
private long curPayPointer -
curPosBufferUpto
private int curPosBufferUpto -
curPayloadByteUpto
private int curPayloadByteUpto -
curCompetitiveFreqNorms
-
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 -
freqNormOut
-
-
Constructor Details
-
Lucene99SkipWriter
public Lucene99SkipWriter(int maxSkipLevels, int blockSize, int docCount, IndexOutput docOut, IndexOutput posOut, IndexOutput payOut)
-
-
Method Details
-
setField
public void setField(boolean fieldHasPositions, boolean fieldHasOffsets, boolean fieldHasPayloads) -
resetSkip
public void resetSkip()Description copied from class:MultiLevelSkipListWriter
Creates new buffers or empties the existing ones- Overrides:
resetSkip
in classMultiLevelSkipListWriter
-
initSkip
private void initSkip() -
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
Description copied from class:MultiLevelSkipListWriter
Subclasses must implement the actual skip data encoding in this method.- Specified by:
writeSkipData
in classMultiLevelSkipListWriter
- Parameters:
level
- the level skip data shall be writing forskipBuffer
- the skip buffer to write to- Throws:
IOException
-
writeImpacts
public static void writeImpacts(CompetitiveImpactAccumulator acc, DataOutput out) throws IOException - Throws:
IOException
-