Package org.apache.lucene.codecs
Class PushPostingsWriterBase
java.lang.Object
org.apache.lucene.codecs.PostingsWriterBase
org.apache.lucene.codecs.PushPostingsWriterBase
- All Implemented Interfaces:
Closeable
,AutoCloseable
- Direct Known Subclasses:
Lucene90PostingsWriter
Extension of
PostingsWriterBase
, adding a push API for writing each element of the
postings. This API is somewhat analogous to an XML SAX API, while PostingsWriterBase
is
more like an XML DOM API.- See Also:
- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected FieldInfo
FieldInfo
of current field being written.protected IndexOptions
IndexOptions
of current field being writtenprotected boolean
True if the current field writes freqs.protected boolean
True if the current field writes offsets.protected boolean
True if the current field writes payloads.protected boolean
True if the current field writes positions. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract void
addPosition
(int position, BytesRef payload, int startOffset, int endOffset) Add a new position and payload, and start/end offset.abstract void
Called when we are done adding positions and payloads for each doc.abstract void
finishTerm
(BlockTermState state) Finishes the current term.abstract BlockTermState
Return a newly created empty TermStatevoid
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.abstract void
startDoc
(int docID, int freq) Adds a new doc in this term.abstract void
startTerm
(NumericDocValues norms) Start a new term.final BlockTermState
writeTerm
(BytesRef term, TermsEnum termsEnum, FixedBitSet docsSeen, NormsProducer norms) Write all postings for one term; use the providedTermsEnum
to pull aPostingsEnum
.Methods inherited from class org.apache.lucene.codecs.PostingsWriterBase
close, encodeTerm, init
-
Field Details
-
fieldInfo
FieldInfo
of current field being written. -
indexOptions
IndexOptions
of current field being written -
writeFreqs
protected boolean writeFreqsTrue if the current field writes freqs. -
writePositions
protected boolean writePositionsTrue if the current field writes positions. -
writePayloads
protected boolean writePayloadsTrue if the current field writes payloads. -
writeOffsets
protected boolean writeOffsetsTrue if the current field writes offsets.
-
-
Constructor Details
-
PushPostingsWriterBase
protected PushPostingsWriterBase()Sole constructor. (For invocation by subclass constructors, typically implicit.)
-
-
Method Details
-
newTermState
Return a newly created empty TermState- Throws:
IOException
-
startTerm
Start a new term. Note that a matching call tofinishTerm(BlockTermState)
is done, only if the term has at least one document.- Throws:
IOException
-
finishTerm
Finishes the current term. The providedBlockTermState
contains the term's summary statistics, and will holds metadata from PBF when returned- Throws:
IOException
-
setField
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.- Specified by:
setField
in classPostingsWriterBase
-
writeTerm
public final BlockTermState writeTerm(BytesRef term, TermsEnum termsEnum, FixedBitSet docsSeen, NormsProducer norms) throws IOException Description copied from class:PostingsWriterBase
Write all postings for one term; use the providedTermsEnum
to pull aPostingsEnum
. This method should not re-position theTermsEnum
! It is already positioned on the term that should be written. This method must set the bit in the providedFixedBitSet
for every docID written. If no docs were written, this method should return null, and the terms dict will skip the term.- Specified by:
writeTerm
in classPostingsWriterBase
- Throws:
IOException
-
startDoc
Adds a new doc in this term.freq
will be -1 when term frequencies are omitted for the field.- Throws:
IOException
-
addPosition
public abstract void addPosition(int position, BytesRef payload, int startOffset, int endOffset) throws IOException 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.- Throws:
IOException
-
finishDoc
Called when we are done adding positions and payloads for each doc.- Throws:
IOException
-