final class IDVersionPostingsWriter extends PushPostingsWriterBase
Modifier and Type | Field and Description |
---|---|
(package private) static IDVersionTermState |
emptyState |
(package private) int |
lastDocID |
private long |
lastEncodedVersion |
private int |
lastPosition |
(package private) IDVersionTermState |
lastState |
private long |
lastVersion |
private Bits |
liveDocs |
private java.lang.String |
segment |
(package private) static java.lang.String |
TERMS_CODEC |
(package private) static int |
VERSION_CURRENT |
(package private) static int |
VERSION_START |
fieldInfo, indexOptions, writeFreqs, writeOffsets, writePayloads, writePositions
Constructor and Description |
---|
IDVersionPostingsWriter(Bits liveDocs) |
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.
|
BlockTermState |
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.
|
writeTerm
static final java.lang.String TERMS_CODEC
static final int VERSION_START
static final int VERSION_CURRENT
static final IDVersionTermState emptyState
IDVersionTermState lastState
int lastDocID
private int lastPosition
private long lastVersion
private final Bits liveDocs
private java.lang.String segment
private long lastEncodedVersion
public IDVersionPostingsWriter(Bits liveDocs)
public BlockTermState newTermState()
PushPostingsWriterBase
newTermState
in class PushPostingsWriterBase
public void init(IndexOutput termsOut, SegmentWriteState state) throws java.io.IOException
PostingsWriterBase
termsOut
.init
in class PostingsWriterBase
java.io.IOException
public int setField(FieldInfo fieldInfo)
PushPostingsWriterBase
setField
in class PushPostingsWriterBase
public void startTerm(NumericDocValues norms)
PushPostingsWriterBase
PushPostingsWriterBase.finishTerm(BlockTermState)
is done, only if the term has at least one
document.startTerm
in class PushPostingsWriterBase
public void startDoc(int docID, int termDocFreq) throws java.io.IOException
PushPostingsWriterBase
freq
will be -1 when term frequencies are omitted
for the field.startDoc
in class PushPostingsWriterBase
java.io.IOException
public void addPosition(int position, BytesRef payload, int startOffset, int endOffset) throws java.io.IOException
PushPostingsWriterBase
BytesRef
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 PushPostingsWriterBase
java.io.IOException
public void finishDoc() throws java.io.IOException
PushPostingsWriterBase
finishDoc
in class PushPostingsWriterBase
java.io.IOException
public void finishTerm(BlockTermState _state) throws java.io.IOException
finishTerm
in class PushPostingsWriterBase
java.io.IOException
public void encodeTerm(long[] longs, DataOutput out, FieldInfo fieldInfo, BlockTermState _state, boolean absolute) throws java.io.IOException
PostingsWriterBase
absolute
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 PostingsWriterBase
java.io.IOException
public void close() throws java.io.IOException
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
close
in class PostingsWriterBase
java.io.IOException