Class TermRangeFilter


  • public class TermRangeFilter
    extends MultiTermQueryWrapperFilter<TermRangeQuery>
    A Filter that restricts search results to a range of term values in a given field.

    This filter matches the documents looking for terms that fall into the supplied range according to Byte.compareTo(Byte), It is not intended for numerical ranges; use NumericRangeFilter instead.

    If you construct a large number of range filters with different ranges but on the same field, FieldCacheRangeFilter may have significantly better performance.

    Since:
    2.9
    • Constructor Detail

      • TermRangeFilter

        public TermRangeFilter​(java.lang.String fieldName,
                               BytesRef lowerTerm,
                               BytesRef upperTerm,
                               boolean includeLower,
                               boolean includeUpper)
        Parameters:
        fieldName - The field this range applies to
        lowerTerm - The lower bound on this range
        upperTerm - The upper bound on this range
        includeLower - Does this range include the lower bound?
        includeUpper - Does this range include the upper bound?
        Throws:
        java.lang.IllegalArgumentException - if both terms are null or if lowerTerm is null and includeLower is true (similar for upperTerm and includeUpper)
    • Method Detail

      • newStringRange

        public static TermRangeFilter newStringRange​(java.lang.String field,
                                                     java.lang.String lowerTerm,
                                                     java.lang.String upperTerm,
                                                     boolean includeLower,
                                                     boolean includeUpper)
        Factory that creates a new TermRangeFilter using Strings for term text.
      • Less

        public static TermRangeFilter Less​(java.lang.String fieldName,
                                           BytesRef upperTerm)
        Constructs a filter for field fieldName matching less than or equal to upperTerm.
      • More

        public static TermRangeFilter More​(java.lang.String fieldName,
                                           BytesRef lowerTerm)
        Constructs a filter for field fieldName matching greater than or equal to lowerTerm.
      • getLowerTerm

        public BytesRef getLowerTerm()
        Returns the lower value of this range filter
      • getUpperTerm

        public BytesRef getUpperTerm()
        Returns the upper value of this range filter
      • includesLower

        public boolean includesLower()
        Returns true if the lower endpoint is inclusive
      • includesUpper

        public boolean includesUpper()
        Returns true if the upper endpoint is inclusive