Class Lucene84PostingsWriter
- java.lang.Object
-
- org.apache.lucene.codecs.PostingsWriterBase
-
- org.apache.lucene.codecs.PushPostingsWriterBase
-
- org.apache.lucene.codecs.lucene84.Lucene84PostingsWriter
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
public final class Lucene84PostingsWriter extends PushPostingsWriterBase
Concrete class that writes docId(maybe frq,pos,offset,payloads) list with postings format. Postings list for each term will be stored separately.
-
-
Field Summary
-
Fields inherited from class org.apache.lucene.codecs.PushPostingsWriterBase
fieldInfo, indexOptions, writeFreqs, writeOffsets, writePayloads, writePositions
-
-
Constructor Summary
Constructors Constructor Description Lucene84PostingsWriter(SegmentWriteState state)
Creates a postings writer
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addPosition(int position, BytesRef payload, int startOffset, int endOffset)
Add a new position and payload, and start/end offset.void
close()
void
encodeTerm(long[] longs, DataOutput out, FieldInfo fieldInfo, BlockTermState _state, boolean absolute)
Encode metadata as long[] and byte[].void
finishDoc()
Called when we are done adding positions and payloads for each doc.void
finishTerm(BlockTermState _state)
Called when we are done adding docs to this termvoid
init(IndexOutput termsOut, SegmentWriteState state)
Called once after startup, before any terms have been added.Lucene84PostingsFormat.IntBlockTermState
newTermState()
Return a newly created empty TermStateint
setField(FieldInfo fieldInfo)
Sets the current field for writing, and returns the fixed length of long[] metadata (which is fixed per field), called when the writing switches to another field.void
startDoc(int docID, int termDocFreq)
Adds a new doc in this term.void
startTerm(NumericDocValues norms)
Start a new term.-
Methods inherited from class org.apache.lucene.codecs.PushPostingsWriterBase
writeTerm
-
-
-
-
Field Detail
-
docOut
IndexOutput docOut
-
posOut
IndexOutput posOut
-
payOut
IndexOutput payOut
-
emptyState
static final Lucene84PostingsFormat.IntBlockTermState emptyState
-
lastState
Lucene84PostingsFormat.IntBlockTermState lastState
-
docStartFP
private long docStartFP
-
posStartFP
private long posStartFP
-
payStartFP
private long payStartFP
-
docDeltaBuffer
final long[] docDeltaBuffer
-
freqBuffer
final long[] freqBuffer
-
docBufferUpto
private int docBufferUpto
-
posDeltaBuffer
final long[] posDeltaBuffer
-
payloadLengthBuffer
final long[] payloadLengthBuffer
-
offsetStartDeltaBuffer
final long[] offsetStartDeltaBuffer
-
offsetLengthBuffer
final long[] offsetLengthBuffer
-
posBufferUpto
private int posBufferUpto
-
payloadBytes
private byte[] payloadBytes
-
payloadByteUpto
private int payloadByteUpto
-
lastBlockDocID
private int lastBlockDocID
-
lastBlockPosFP
private long lastBlockPosFP
-
lastBlockPayFP
private long lastBlockPayFP
-
lastBlockPosBufferUpto
private int lastBlockPosBufferUpto
-
lastBlockPayloadByteUpto
private int lastBlockPayloadByteUpto
-
lastDocID
private int lastDocID
-
lastPosition
private int lastPosition
-
lastStartOffset
private int lastStartOffset
-
docCount
private int docCount
-
pforUtil
private final PForUtil pforUtil
-
forDeltaUtil
private final ForDeltaUtil forDeltaUtil
-
skipWriter
private final Lucene84SkipWriter skipWriter
-
fieldHasNorms
private boolean fieldHasNorms
-
norms
private NumericDocValues norms
-
competitiveFreqNormAccumulator
private final CompetitiveImpactAccumulator competitiveFreqNormAccumulator
-
-
Constructor Detail
-
Lucene84PostingsWriter
public Lucene84PostingsWriter(SegmentWriteState state) throws java.io.IOException
Creates a postings writer- Throws:
java.io.IOException
-
-
Method Detail
-
newTermState
public Lucene84PostingsFormat.IntBlockTermState newTermState()
Description copied from class:PushPostingsWriterBase
Return a newly created empty TermState- Specified by:
newTermState
in classPushPostingsWriterBase
-
init
public void init(IndexOutput termsOut, SegmentWriteState state) throws java.io.IOException
Description copied from class:PostingsWriterBase
Called once after startup, before any terms have been added. Implementations typically write a header to the providedtermsOut
.- Specified by:
init
in classPostingsWriterBase
- Throws:
java.io.IOException
-
setField
public int setField(FieldInfo fieldInfo)
Description copied from class:PushPostingsWriterBase
Sets the current field for writing, and returns the fixed length of long[] metadata (which is fixed per field), called when the writing switches to another field.- Overrides:
setField
in classPushPostingsWriterBase
-
startTerm
public void startTerm(NumericDocValues norms)
Description copied from class:PushPostingsWriterBase
Start a new term. Note that a matching call toPushPostingsWriterBase.finishTerm(BlockTermState)
is done, only if the term has at least one document.- Specified by:
startTerm
in classPushPostingsWriterBase
-
startDoc
public void startDoc(int docID, int termDocFreq) throws java.io.IOException
Description copied from class:PushPostingsWriterBase
Adds a new doc in this term.freq
will be -1 when term frequencies are omitted for the field.- Specified by:
startDoc
in classPushPostingsWriterBase
- Throws:
java.io.IOException
-
addPosition
public void addPosition(int position, BytesRef payload, int startOffset, int endOffset) throws java.io.IOException
Description copied from class:PushPostingsWriterBase
Add a new position and payload, and start/end offset. A null payload means no payload; a non-null payload with zero length also means no payload. Caller may reuse theBytesRef
for the payload between calls (method must fully consume the payload).startOffset
andendOffset
will be -1 when offsets are not indexed.- Specified by:
addPosition
in classPushPostingsWriterBase
- Throws:
java.io.IOException
-
finishDoc
public void finishDoc() throws java.io.IOException
Description copied from class:PushPostingsWriterBase
Called when we are done adding positions and payloads for each doc.- Specified by:
finishDoc
in classPushPostingsWriterBase
- Throws:
java.io.IOException
-
finishTerm
public void finishTerm(BlockTermState _state) throws java.io.IOException
Called when we are done adding docs to this term- Specified by:
finishTerm
in classPushPostingsWriterBase
- Throws:
java.io.IOException
-
encodeTerm
public void encodeTerm(long[] longs, DataOutput out, FieldInfo fieldInfo, BlockTermState _state, boolean absolute) throws java.io.IOException
Description copied from class:PostingsWriterBase
Encode metadata as long[] and byte[].absolute
controls whether current term is delta encoded according to latest term. Usually elements inlongs
are file pointers, so each one always increases when a new term is consumed.out
is used to write generic bytes, which are not monotonic. NOTE: sometimes long[] might contain "don't care" values that are unused, e.g. the pointer to postings list may not be defined for some terms but is defined for others, if it is designed to inline some postings data in term dictionary. In this case, the postings writer should always use the last value, so that each element in metadata long[] remains monotonic.- Specified by:
encodeTerm
in classPostingsWriterBase
- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Specified by:
close
in classPostingsWriterBase
- Throws:
java.io.IOException
-
-