Package org.apache.lucene.util.packed
Class MonotonicBlockPackedWriter
java.lang.Object
org.apache.lucene.util.packed.AbstractBlockPackedWriter
org.apache.lucene.util.packed.MonotonicBlockPackedWriter
A writer for large monotonically increasing sequences of positive longs.
The sequence is divided into fixed-size blocks and for each block, values are modeled after a linear function f: x → A × x + B. The block encodes deltas from the expected values computed from this function using as few bits as possible.
Format:
- <BLock>BlockCount
- BlockCount: ⌈ ValueCount / BlockSize ⌉
- Block: <Header, (Ints)>
- Header: <B, A, BitsPerValue>
- B: the B from f: x → A × x + B using a
zig-zag encoded
vLong
- A: the A from f: x → A × x + B encoded using
Float.floatToIntBits(float)
on4 bytes
- BitsPerValue: a
variable-length int
- Ints: if BitsPerValue is
0
, then there is nothing to read and all values perfectly match the result of the function. Otherwise, these are thepacked
deltas from the expected value (computed from the function) using exactly BitsPerValue bits per value.
- See Also:
-
Field Summary
Fields inherited from class org.apache.lucene.util.packed.AbstractBlockPackedWriter
blocks, BPV_SHIFT, finished, MAX_BLOCK_SIZE, MIN_BLOCK_SIZE, MIN_VALUE_EQUALS_0, off, ord, out, values
-
Constructor Summary
Constructors -
Method Summary
Methods inherited from class org.apache.lucene.util.packed.AbstractBlockPackedWriter
addBlockOfZeros, finish, ord, reset, writeValues, writeVLong
-
Constructor Details
-
MonotonicBlockPackedWriter
Sole constructor.- Parameters:
blockSize
- the number of values of a single block, must be a power of 2
-
-
Method Details
-
add
Description copied from class:AbstractBlockPackedWriter
Append a new long.- Overrides:
add
in classAbstractBlockPackedWriter
- Throws:
IOException
-
flush
- Specified by:
flush
in classAbstractBlockPackedWriter
- Throws:
IOException
-