Class LegacyNumericUtils


  • @Deprecated
    public final class LegacyNumericUtils
    extends Object
    Deprecated.
    Please use PointValues instead.
    This is a helper class to generate prefix-encoded representations for numerical values and supplies converters to represent float/double values as sortable integers/longs.

    To quickly execute range queries in Apache Lucene, a range is divided recursively into multiple intervals for searching: The center of the range is searched only with the lowest possible precision in the trie, while the boundaries are matched more exactly. This reduces the number of terms dramatically.

    This class generates terms to achieve this: First the numerical integer values need to be converted to bytes. For that integer values (32 bit or 64 bit) are made unsigned and the bits are converted to ASCII chars with each 7 bit. The resulting byte[] is sortable like the original integer value (even using UTF-8 sort order). Each value is also prefixed (in the first char) by the shift value (number of bits removed) used during encoding.

    For easy usage, the trie algorithm is implemented for indexing inside LegacyNumericTokenStream that can index int, long, float, and double. For querying, LegacyNumericRangeQuery implements the query part for the same data types.

    Since:
    2.9, API changed non backwards-compliant in 4.0
    NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.
    • Method Detail

      • longToPrefixCoded

        public static void longToPrefixCoded​(long val,
                                             int shift,
                                             org.apache.lucene.util.BytesRefBuilder bytes)
        Deprecated.
        Returns prefix coded bits after reducing the precision by shift bits. This is method is used by LegacyNumericTokenStream. After encoding, bytes.offset will always be 0.
        Parameters:
        val - the numeric value
        shift - how many bits to strip from the right
        bytes - will contain the encoded value
      • intToPrefixCoded

        public static void intToPrefixCoded​(int val,
                                            int shift,
                                            org.apache.lucene.util.BytesRefBuilder bytes)
        Deprecated.
        Returns prefix coded bits after reducing the precision by shift bits. This is method is used by LegacyNumericTokenStream. After encoding, bytes.offset will always be 0.
        Parameters:
        val - the numeric value
        shift - how many bits to strip from the right
        bytes - will contain the encoded value
      • getPrefixCodedLongShift

        public static int getPrefixCodedLongShift​(org.apache.lucene.util.BytesRef val)
        Deprecated.
        Returns the shift value from a prefix encoded long.
        Throws:
        NumberFormatException - if the supplied BytesRef is not correctly prefix encoded.
      • getPrefixCodedIntShift

        public static int getPrefixCodedIntShift​(org.apache.lucene.util.BytesRef val)
        Deprecated.
        Returns the shift value from a prefix encoded int.
        Throws:
        NumberFormatException - if the supplied BytesRef is not correctly prefix encoded.
      • filterPrefixCodedLongs

        public static org.apache.lucene.index.TermsEnum filterPrefixCodedLongs​(org.apache.lucene.index.TermsEnum termsEnum)
        Deprecated.
        Filters the given TermsEnum by accepting only prefix coded 64 bit terms with a shift value of 0.
        Parameters:
        termsEnum - the terms enum to filter
        Returns:
        a filtered TermsEnum that only returns prefix coded 64 bit terms with a shift value of 0.
      • filterPrefixCodedInts

        public static org.apache.lucene.index.TermsEnum filterPrefixCodedInts​(org.apache.lucene.index.TermsEnum termsEnum)
        Deprecated.
        Filters the given TermsEnum by accepting only prefix coded 32 bit terms with a shift value of 0.
        Parameters:
        termsEnum - the terms enum to filter
        Returns:
        a filtered TermsEnum that only returns prefix coded 32 bit terms with a shift value of 0.
      • getMinInt

        public static Integer getMinInt​(org.apache.lucene.index.Terms terms)
                                 throws IOException
        Deprecated.
        Returns the minimum int value indexed into this numeric field or null if no terms exist.
        Throws:
        IOException
      • getMaxInt

        public static Integer getMaxInt​(org.apache.lucene.index.Terms terms)
                                 throws IOException
        Deprecated.
        Returns the maximum int value indexed into this numeric field or null if no terms exist.
        Throws:
        IOException
      • getMinLong

        public static Long getMinLong​(org.apache.lucene.index.Terms terms)
                               throws IOException
        Deprecated.
        Returns the minimum long value indexed into this numeric field or null if no terms exist.
        Throws:
        IOException
      • getMaxLong

        public static Long getMaxLong​(org.apache.lucene.index.Terms terms)
                               throws IOException
        Deprecated.
        Returns the maximum long value indexed into this numeric field or null if no terms exist.
        Throws:
        IOException