public final class Lucene50PostingsWriter extends PushPostingsWriterBase
fieldInfo, indexOptions, writeFreqs, writeOffsets, writePayloads, writePositions| Constructor and Description |
|---|
Lucene50PostingsWriter(SegmentWriteState state)
Creates a postings writer
|
| Modifier and Type | Method and 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 term
|
void |
init(IndexOutput termsOut,
SegmentWriteState state)
Called once after startup, before any terms have been
added.
|
Lucene50PostingsFormat.IntBlockTermState |
newTermState()
Return a newly created empty TermState
|
int |
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.
|
writeTermIndexOutput docOut
IndexOutput posOut
IndexOutput payOut
static final Lucene50PostingsFormat.IntBlockTermState emptyState
Lucene50PostingsFormat.IntBlockTermState lastState
private long docStartFP
private long posStartFP
private long payStartFP
final int[] docDeltaBuffer
final int[] freqBuffer
private int docBufferUpto
final int[] posDeltaBuffer
final int[] payloadLengthBuffer
final int[] offsetStartDeltaBuffer
final int[] offsetLengthBuffer
private int posBufferUpto
private byte[] payloadBytes
private int payloadByteUpto
private int lastBlockDocID
private long lastBlockPosFP
private long lastBlockPayFP
private int lastBlockPosBufferUpto
private int lastBlockPayloadByteUpto
private int lastDocID
private int lastPosition
private int lastStartOffset
private int docCount
final byte[] encoded
private final ForUtil forUtil
private final Lucene50SkipWriter skipWriter
private boolean fieldHasNorms
private NumericDocValues norms
private final CompetitiveImpactAccumulator competitiveFreqNormAccumulator
public Lucene50PostingsWriter(SegmentWriteState state) throws java.io.IOException
java.io.IOExceptionpublic Lucene50PostingsFormat.IntBlockTermState newTermState()
PushPostingsWriterBasenewTermState in class PushPostingsWriterBasepublic void init(IndexOutput termsOut, SegmentWriteState state) throws java.io.IOException
PostingsWriterBasetermsOut.init in class PostingsWriterBasejava.io.IOExceptionpublic int setField(FieldInfo fieldInfo)
PushPostingsWriterBasesetField in class PushPostingsWriterBasepublic void startTerm(NumericDocValues norms)
PushPostingsWriterBasePushPostingsWriterBase.finishTerm(BlockTermState) is done, only if the term has at least one
document.startTerm in class PushPostingsWriterBasepublic void startDoc(int docID,
int termDocFreq)
throws java.io.IOException
PushPostingsWriterBasefreq will be -1 when term frequencies are omitted
for the field.startDoc in class PushPostingsWriterBasejava.io.IOExceptionpublic void addPosition(int position,
BytesRef payload,
int startOffset,
int endOffset)
throws java.io.IOException
PushPostingsWriterBaseBytesRef for the payload between calls
(method must fully consume the payload). startOffset
and endOffset will be -1 when offsets are not indexed.addPosition in class PushPostingsWriterBasejava.io.IOExceptionpublic void finishDoc()
throws java.io.IOException
PushPostingsWriterBasefinishDoc in class PushPostingsWriterBasejava.io.IOExceptionpublic void finishTerm(BlockTermState _state) throws java.io.IOException
finishTerm in class PushPostingsWriterBasejava.io.IOExceptionpublic void encodeTerm(long[] longs,
DataOutput out,
FieldInfo fieldInfo,
BlockTermState _state,
boolean absolute)
throws java.io.IOException
PostingsWriterBaseabsolute controls whether
current term is delta encoded according to latest term.
Usually elements in longs 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.encodeTerm in class PostingsWriterBasejava.io.IOExceptionpublic void close()
throws java.io.IOException
close in interface java.io.Closeableclose in interface java.lang.AutoCloseableclose in class PostingsWriterBasejava.io.IOException