public abstract class PostingsWriterBase extends Object implements Closeable
BlockTreeTermsWriter
, and handles writing postings.PostingsReaderBase
Modifier | Constructor and Description |
---|---|
protected |
PostingsWriterBase()
Sole constructor.
|
Modifier and Type | Method and Description |
---|---|
abstract void |
close() |
abstract void |
encodeTerm(long[] longs,
DataOutput out,
FieldInfo fieldInfo,
BlockTermState state,
boolean absolute)
Encode metadata as long[] and byte[].
|
abstract void |
init(IndexOutput termsOut,
SegmentWriteState state)
Called once after startup, before any terms have been
added.
|
abstract 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.
|
abstract BlockTermState |
writeTerm(BytesRef term,
TermsEnum termsEnum,
FixedBitSet docsSeen)
Write all postings for one term; use the provided
TermsEnum to pull a PostingsEnum . |
protected PostingsWriterBase()
public abstract void init(IndexOutput termsOut, SegmentWriteState state) throws IOException
termsOut
.IOException
public abstract BlockTermState writeTerm(BytesRef term, TermsEnum termsEnum, FixedBitSet docsSeen) throws IOException
TermsEnum
to pull a PostingsEnum
.
This method should not
re-position the TermsEnum
! It is already
positioned on the term that should be written. This
method must set the bit in the provided FixedBitSet
for every docID written. If no docs
were written, this method should return null, and the
terms dict will skip the term.IOException
public abstract void encodeTerm(long[] longs, DataOutput out, FieldInfo fieldInfo, BlockTermState state, boolean absolute) throws IOException
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.IOException
public abstract int setField(FieldInfo fieldInfo)
public abstract void close() throws IOException
close
in interface Closeable
close
in interface AutoCloseable
IOException
Copyright © 2000-2018 Apache Software Foundation. All Rights Reserved.