Class: Ferret::Search::RangeQuery

Inherits:
Object
  • Object
show all
Defined in:
ext/r_search.c

Overview

Summary

RangeQuery is used to find documents with terms in a range. RangeQuerys are usually used on untokenized fields like date fields or number fields.

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, :>= "20060101", :<= "20060126")

Range queries on numbers

There is now a new query called TypedRangeQuery which detects the type of the range and if the range is numerical it will find a numerical range. This allows you to do range queries with negative numbers and without having to pad the field. However, RangeQuery will perform a lot faster on large indexes so if you are working with a very large index you will need to normalize your number fields so that they are a fixed width and always positive. That way the standard String range query will do fine.

For example, if you have the numbers;

[10, -999, -90, 100, 534]

Then the can be normalized to;

# note that we have added 1000 to all numbers to make them all positive
[1010, 0001, 0910, 1100, 1534]