Package org.apache.lucene.util.packed
Class DirectWriter
- java.lang.Object
-
- org.apache.lucene.util.packed.DirectWriter
-
public final class DirectWriter extends java.lang.ObjectClass for writing packed integers to be directly read from Directory. Integers can be read on-the-fly viaDirectReader.Unlike PackedInts, it optimizes for read i/o operations and supports > 2B values. Example usage:
int bitsPerValue = DirectWriter.bitsRequired(100); // values up to and including 100 IndexOutput output = dir.createOutput("packed", IOContext.DEFAULT); DirectWriter writer = DirectWriter.getInstance(output, numberOfValues, bitsPerValue); for (int i = 0; i < numberOfValues; i++) { writer.add(value); } writer.finish(); output.close();- See Also:
DirectReader
-
-
Field Summary
Fields Modifier and Type Field Description (package private) intbitsPerValue(package private) longcount(package private) BulkOperationencoder(package private) booleanfinished(package private) intiterations(package private) byte[]nextBlocks(package private) long[]nextValues(package private) longnumValues(package private) intoff(package private) DataOutputoutput(package private) static int[]SUPPORTED_BITS_PER_VALUE
-
Constructor Summary
Constructors Constructor Description DirectWriter(DataOutput output, long numValues, int bitsPerValue)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidadd(long l)Adds a value to this writerstatic intbitsRequired(long maxValue)Returns how many bits are required to hold values up to and including maxValuevoidfinish()finishes writingprivate voidflush()static DirectWritergetInstance(DataOutput output, long numValues, int bitsPerValue)Returns an instance suitable for encodingnumValuesusingbitsPerValueprivate static introundBits(int bitsRequired)Round a number of bits per value to the next amount of bits per value that is supported by this writer.static intunsignedBitsRequired(long maxValue)Returns how many bits are required to hold values up to and including maxValue, interpreted as an unsigned value.
-
-
-
Field Detail
-
bitsPerValue
final int bitsPerValue
-
numValues
final long numValues
-
output
final DataOutput output
-
count
long count
-
finished
boolean finished
-
off
int off
-
nextBlocks
final byte[] nextBlocks
-
nextValues
final long[] nextValues
-
encoder
final BulkOperation encoder
-
iterations
final int iterations
-
SUPPORTED_BITS_PER_VALUE
static final int[] SUPPORTED_BITS_PER_VALUE
-
-
Constructor Detail
-
DirectWriter
DirectWriter(DataOutput output, long numValues, int bitsPerValue)
-
-
Method Detail
-
add
public void add(long l) throws java.io.IOExceptionAdds a value to this writer- Throws:
java.io.IOException
-
flush
private void flush() throws java.io.IOException- Throws:
java.io.IOException
-
finish
public void finish() throws java.io.IOExceptionfinishes writing- Throws:
java.io.IOException
-
getInstance
public static DirectWriter getInstance(DataOutput output, long numValues, int bitsPerValue)
Returns an instance suitable for encodingnumValuesusingbitsPerValue
-
roundBits
private static int roundBits(int bitsRequired)
Round a number of bits per value to the next amount of bits per value that is supported by this writer.- Parameters:
bitsRequired- the amount of bits required- Returns:
- the next number of bits per value that is gte the provided value and supported by this writer
-
bitsRequired
public static int bitsRequired(long maxValue)
Returns how many bits are required to hold values up to and including maxValue- Parameters:
maxValue- the maximum value that should be representable.- Returns:
- the amount of bits needed to represent values from 0 to maxValue.
- See Also:
PackedInts.bitsRequired(long)
-
unsignedBitsRequired
public static int unsignedBitsRequired(long maxValue)
Returns how many bits are required to hold values up to and including maxValue, interpreted as an unsigned value.- Parameters:
maxValue- the maximum value that should be representable.- Returns:
- the amount of bits needed to represent values from 0 to maxValue.
- See Also:
PackedInts.unsignedBitsRequired(long)
-
-