public abstract class ChunksIntEncoder extends IntEncoder
IntEncoder
which encodes values in chunks. Implementations of this
class assume the data which needs encoding consists of small, consecutive
values, and therefore the encoder is able to compress them better. You can
read more on the two implementations FourFlagsIntEncoder
and
EightFlagsIntEncoder
.
Extensions of this class need to implement IntEncoder.encode(IntsRef, BytesRef)
in order to build the proper indicator (flags). When enough values were
accumulated (typically the batch size), extensions can call
encodeChunk(BytesRef)
to flush the indicator and the rest of the
values.
NOTE: flags encoders do not accept values ≤ 0 (zero) in their
IntEncoder.encode(IntsRef, BytesRef)
. For performance reasons they do not check
that condition, however if such value is passed the result stream may be
corrupt or an exception will be thrown. Also, these encoders perform the best
when there are many consecutive small values (depends on the encoder
implementation). If that is not the case, the encoder will occupy 1 more byte
for every batch number of integers, over whatever
VInt8IntEncoder
would have occupied. Therefore make sure to check
whether your data fits into the conditions of the specific encoder.
For the reasons mentioned above, these encoders are usually chained with
UniqueValuesIntEncoder
and DGapIntEncoder
.
Modifier and Type | Field and Description |
---|---|
protected IntsRef |
encodeQueue
Holds the values which must be encoded, outside the indicator.
|
protected int |
indicator
Represents bits flag byte.
|
protected byte |
ordinal
Counts the current ordinal of the encoded value.
|
Modifier | Constructor and Description |
---|---|
protected |
ChunksIntEncoder(int chunkSize) |
Modifier and Type | Method and Description |
---|---|
protected void |
encodeChunk(BytesRef buf)
Encodes the values of the current chunk.
|
createMatchingDecoder, encode
protected final IntsRef encodeQueue
protected int indicator
protected byte ordinal
protected void encodeChunk(BytesRef buf)
Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.