Package org.apache.lucene.util.packed
Class DirectMonotonicWriter
- java.lang.Object
-
- org.apache.lucene.util.packed.DirectMonotonicWriter
-
public final class DirectMonotonicWriter extends java.lang.Object
Write monotonically-increasing sequences of integers. This writer splits data into blocks and then for each block, computes the average slope, the minimum value and only encode the delta from the expected value using aDirectWriter
.- See Also:
DirectMonotonicReader
-
-
Field Summary
Fields Modifier and Type Field Description (package private) long
baseDataPointer
(package private) long[]
buffer
(package private) int
bufferSize
(package private) long
count
(package private) IndexOutput
data
(package private) boolean
finished
static int
MAX_BLOCK_SHIFT
(package private) IndexOutput
meta
static int
MIN_BLOCK_SHIFT
(package private) long
numValues
(package private) long
previous
-
Constructor Summary
Constructors Constructor Description DirectMonotonicWriter(IndexOutput metaOut, IndexOutput dataOut, long numValues, int blockShift)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(long v)
Write a new value.void
finish()
This must be called exactly once after all values have beenadded
.private void
flush()
static DirectMonotonicWriter
getInstance(IndexOutput metaOut, IndexOutput dataOut, long numValues, int blockShift)
Returns an instance suitable for encodingnumValues
into monotonic blocks of 2blockShift
values.
-
-
-
Field Detail
-
MIN_BLOCK_SHIFT
public static final int MIN_BLOCK_SHIFT
- See Also:
- Constant Field Values
-
MAX_BLOCK_SHIFT
public static final int MAX_BLOCK_SHIFT
- See Also:
- Constant Field Values
-
meta
final IndexOutput meta
-
data
final IndexOutput data
-
numValues
final long numValues
-
baseDataPointer
final long baseDataPointer
-
buffer
final long[] buffer
-
bufferSize
int bufferSize
-
count
long count
-
finished
boolean finished
-
previous
long previous
-
-
Constructor Detail
-
DirectMonotonicWriter
DirectMonotonicWriter(IndexOutput metaOut, IndexOutput dataOut, long numValues, int blockShift)
-
-
Method Detail
-
flush
private void flush() throws java.io.IOException
- Throws:
java.io.IOException
-
add
public void add(long v) throws java.io.IOException
Write a new value. Note that data might not make it to storage untilfinish()
is called.- Throws:
java.lang.IllegalArgumentException
- if values don't come in orderjava.io.IOException
-
finish
public void finish() throws java.io.IOException
This must be called exactly once after all values have beenadded
.- Throws:
java.io.IOException
-
getInstance
public static DirectMonotonicWriter getInstance(IndexOutput metaOut, IndexOutput dataOut, long numValues, int blockShift)
Returns an instance suitable for encodingnumValues
into monotonic blocks of 2blockShift
values. Metadata will be written tometaOut
and actual data todataOut
.
-
-