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:
Lucene99PostingsWriter
public abstract class PushPostingsWriterBase extends PostingsWriterBase
Extension ofPostingsWriterBase
, adding a push API for writing each element of the postings. This API is somewhat analogous to an XML SAX API, whilePostingsWriterBase
is more like an XML DOM API.- See Also:
PostingsReaderBase
- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
-
Field Summary
Fields Modifier and Type Field Description protected FieldInfo
fieldInfo
FieldInfo
of current field being written.protected IndexOptions
indexOptions
IndexOptions
of current field being writtenprotected boolean
writeFreqs
True if the current field writes freqs.protected boolean
writeOffsets
True if the current field writes offsets.protected boolean
writePayloads
True if the current field writes payloads.protected boolean
writePositions
True if the current field writes positions.
-
Constructor Summary
Constructors Modifier Constructor Description protected
PushPostingsWriterBase()
Sole constructor.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract void
addPosition(int position, BytesRef payload, int startOffset, int endOffset)
Add a new position and payload, and start/end offset.abstract void
finishDoc()
Called when we are done adding positions and payloads for each doc.abstract void
finishTerm(BlockTermState state)
Finishes the current term.abstract BlockTermState
newTermState()
Return a newly created empty TermStatevoid
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.abstract void
startDoc(int docID, int freq)
Adds a new doc in this term.abstract void
startTerm(NumericDocValues norms)
Start a new term.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 Detail
-
indexOptions
protected IndexOptions indexOptions
IndexOptions
of current field being written
-
writeFreqs
protected boolean writeFreqs
True if the current field writes freqs.
-
writePositions
protected boolean writePositions
True if the current field writes positions.
-
writePayloads
protected boolean writePayloads
True if the current field writes payloads.
-
writeOffsets
protected boolean writeOffsets
True if the current field writes offsets.
-
-
Method Detail
-
newTermState
public abstract BlockTermState newTermState() throws IOException
Return a newly created empty TermState- Throws:
IOException
-
startTerm
public abstract void startTerm(NumericDocValues norms) throws IOException
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
public abstract void finishTerm(BlockTermState state) throws IOException
Finishes the current term. The providedBlockTermState
contains the term's summary statistics, and will holds metadata from PBF when returned- Throws:
IOException
-
setField
public void 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.- 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
public abstract void startDoc(int docID, int freq) throws IOException
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
public abstract void finishDoc() throws IOException
Called when we are done adding positions and payloads for each doc.- Throws:
IOException
-
-