Class LegacyDirectWriter

java.lang.Object
org.apache.lucene.backward_codecs.packed.LegacyDirectWriter

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

Unlike PackedInts, it optimizes for read i/o operations and supports > 2B values. Example usage:

   int bitsPerValue = LegacyDirectWriter.bitsRequired(100); // values up to and including 100
   IndexOutput output = dir.createOutput("packed", IOContext.DEFAULT);
   DirectWriter writer = LegacyDirectWriter.getInstance(output, numberOfValues, bitsPerValue);
   for (int i = 0; i < numberOfValues; i++) {
     writer.add(value);
   }
   writer.finish();
   output.close();
 
See Also:
  • Method Details

    • add

      public void add(long l) throws IOException
      Adds a value to this writer
      Throws:
      IOException
    • finish

      public void finish() throws IOException
      finishes writing
      Throws:
      IOException
    • getInstance

      public static LegacyDirectWriter 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:
    • 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: