Package org.apache.lucene.util.packed
Class DirectMonotonicWriter
- java.lang.Object
-
- org.apache.lucene.util.packed.DirectMonotonicWriter
-
public final class DirectMonotonicWriter extends java.lang.ObjectWrite 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) longbaseDataPointer(package private) long[]buffer(package private) intbufferSize(package private) longcount(package private) IndexOutputdata(package private) booleanfinishedstatic intMAX_BLOCK_SHIFT(package private) IndexOutputmetastatic intMIN_BLOCK_SHIFT(package private) longnumValues(package private) longprevious
-
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 voidadd(long v)Write a new value.voidfinish()This must be called exactly once after all values have beenadded.private voidflush()static DirectMonotonicWritergetInstance(IndexOutput metaOut, IndexOutput dataOut, long numValues, int blockShift)Returns an instance suitable for encodingnumValuesinto monotonic blocks of 2blockShiftvalues.
-
-
-
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.IOExceptionWrite 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.IOExceptionThis 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 encodingnumValuesinto monotonic blocks of 2blockShiftvalues. Metadata will be written tometaOutand actual data todataOut.
-
-