Package org.apache.lucene.util.packed
package org.apache.lucene.util.packed
Packed integer arrays and streams.
The packed package provides
- sequential and random access capable arrays of positive longs,
- routines for efficient serialization and deserialization of streams of packed integers.
The main access point is the PackedInts factory.
In-memory structures
PackedInts.Mutable- Only supports positive longs.
- Requires the number of bits per value to be known in advance.
- Random-access for both writing and reading.
GrowableWriter- Same as PackedInts.Mutable but grows the number of bits per values when needed.
- Useful to build a PackedInts.Mutable from a read-once stream of longs.
PagedGrowableWriter- Slices data into fixed-size blocks stored in GrowableWriters.
- Supports more than 2B values.
- You should use PackedLongValues instead if you don't need random write access.
PackedLongValues.deltaPackedBuilder(int, float)- Can store any sequence of longs.
- Compression is good when values are close to each other.
- Supports random reads, but only sequential writes.
- Can address up to 2^42 values.
PackedLongValues.packedBuilder(int, float)- Same as deltaPackedBuilder but assumes values are 0-based.
PackedLongValues.monotonicBuilder(int, float)- Same as deltaPackedBuilder except that compression is good when the stream is a succession of affine functions.
Disk-based structures
PackedInts.Writer,PackedInts.Reader,PackedInts.ReaderIterator- Only supports positive longs.
- Requires the number of bits per value to be known in advance.
- Supports both fast sequential access with low memory footprint with ReaderIterator and random-access by either loading values in memory or leaving them on disk with Reader.
BlockPackedWriter,BlockPackedReaderIterator- Splits the stream into fixed-size blocks.
- Compression is good when values are close to each other.
- Can address up to 2B * blockSize values.
MonotonicBlockPackedWriter,MonotonicBlockPackedReader- Same as the non-monotonic variants except that compression is good when the stream is a succession of affine functions.
- The reason why there is no sequential access is that if you need sequential access, you should rather delta-encode and use BlockPackedWriter.
PackedDataOutput,PackedDataInput- Writes sequences of longs where each long can use any number of bits.
-
ClassDescriptionAbstractPagedMutable<T extends AbstractPagedMutable<T>>Base implementation for
PagedMutableandPagedGrowableWriter.Reader for sequences of longs written withBlockPackedWriter.A writer for large sequences of longs.Retrieves an instance previously written byDirectMonotonicWriter.In-memory metadata that needs to be kept around forDirectMonotonicReaderto read data from disk.Write monotonically-increasing sequences of integers.Retrieves an instance previously written byDirectWriterClass for writing packed integers to be directly read from Directory.ImplementsPackedInts.Mutable, but grows the bit count of the underlying packed ints on-demand.Provides random access to a stream written withMonotonicBlockPackedWriter.A writer for large monotonically increasing sequences of positive longs.ADataInputwrapper to read unaligned, variable-length packed integers.ADataOutputwrapper to write unaligned, variable-length packed integers.Simplistic compression for array of unsigned long values.A decoder for packed integers.An encoder for packed integers.A format to write packed ints.Simple class that holds a format and a number of bits per value.A packed integer array that can be modified.APackedInts.Readerwhich has all its values equal to 0 (bitsPerValue = 0).A read-only random access array of positive integers.Run-once iterator interface, to decode previously saved PackedInts.A write-once Writer.Utility class to compress integers into aLongValuesinstance.A Builder for aPackedLongValuesinstance.APagedMutable.