Class DirectDocValuesFormat

  • All Implemented Interfaces:
    NamedSPILoader.NamedSPI

    public class DirectDocValuesFormat
    extends DocValuesFormat
    In-memory docvalues format that does no (or very little) compression. Indexed values are stored on disk, but then at search time all values are loaded into memory as simple java arrays. For numeric values, it uses byte[], short[], int[], long[] as necessary to fit the range of the values. For binary values, there is an int (4 bytes) overhead per value.

    Limitations:

    • For binary and sorted fields the total space required for all binary values cannot exceed about 2.1 GB (see #MAX_TOTAL_BYTES_LENGTH).
    • For sorted set fields, the sum of the size of each document's set of values cannot exceed about 2.1 B values (see #MAX_SORTED_SET_ORDS). For example, if every document has 10 values (10 instances of SortedSetDocValuesField) added, then no more than ~210 M documents can be added to one segment.
    • Field Detail

      • MAX_TOTAL_BYTES_LENGTH

        public static final int MAX_TOTAL_BYTES_LENGTH
        The sum of all byte lengths for binary field, or for the unique values in sorted or sorted set fields, cannot exceed this.
      • MAX_SORTED_SET_ORDS

        public static final int MAX_SORTED_SET_ORDS
        The sum of the number of values across all documents in a sorted set field cannot exceed this.
    • Constructor Detail

      • DirectDocValuesFormat

        public DirectDocValuesFormat()
        Sole constructor.
    • Method Detail

      • fieldsProducer

        public DocValuesProducer fieldsProducer​(SegmentReadState state)
                                         throws java.io.IOException
        Description copied from class: DocValuesFormat
        Returns a DocValuesProducer to read docvalues from the index.

        NOTE: by the time this call returns, it must hold open any files it will need to use; else, those files may be deleted. Additionally, required files may be deleted during the execution of this call before there is a chance to open them. Under these circumstances an IOException should be thrown by the implementation. IOExceptions are expected and will automatically cause a retry of the segment opening logic with the newly revised segments.

        Specified by:
        fieldsProducer in class DocValuesFormat
        Throws:
        java.io.IOException