Class | Ferret::Search::TypedRangeQuery
In: | ext/r_search.c
Parent: | Ferret::Search::Query

## Summary

TypedRangeQuery is used to find documents with terms in a range. RangeQuerys are usually used on untokenized fields like date fields or number fields. TypedRangeQuery is particularly useful for fields with unnormalized numbers, both positive and negative, integer and float.

## Example

To find all documents written between January 1st 2006 and January 26th 2006 inclusive you would write the query like this;

      query = RangeQuery.new(:create_date, :>= "-1.0", :<= "10.0")

## Performance Note

TypedRangeQuery works by converting all the terms in a field to numbers and then comparing those numbers with the range bondaries. This can have quite an impact on performance on large indexes so in those cases it is usually better to use a standard RangeQuery. This will require a little work on your behalf. See RangeQuery for notes on how to do this.

### Methods

new

### Public Class methods

TypedRangeQuery.new(field, options = {}) → range_query

Create a new TypedRangeQuery on field `field`. This differs from the standard RangeQuery in that it allows range queries with unpadded numbers, both positive and negative, integer and float. You can even use hexadecimal numbers. However it could be a lot slower than the standard RangeQuery on large indexes.

There are two ways to build a range query. With the old-style options; +:lower+, +:upper+, +:include_lower+ and +:include_upper+ or the new style options; +:<+, +:<=+, +:>+ and +:>=+. The options’ names should speak for themselves. In the old-style options, limits are inclusive by default.

## Examples

      q = TypedRangeQuery.new(:date, :lower => "0.1", :include_lower => false)
      # is equivalent to
      q = TypedRangeQuery.new(:date, :< => "0.1")
      # is equivalent to
      q = TypedRangeQuery.new(:date, :lower_exclusive => "0.1")

      # Note that you numbers can be strings or actual numbers
      q = TypedRangeQuery.new(:date, :lower => "-12.32", :upper => 0.21)
      # is equivalent to
      q = TypedRangeQuery.new(:date, :>= => "-12.32", :<= => 0.21)

[Validate]