Class DirectWriter


  • public final class DirectWriter
    extends Object
    Class for writing packed integers to be directly read from Directory. Integers can be read on-the-fly via DirectReader.

    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
    • Method Detail

      • getInstance

        public static DirectWriter getInstance​(DataOutput output,
                                               long numValues,
                                               int bitsPerValue)
        Returns an instance suitable for encoding numValues using bitsPerValue
      • 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)