### Home Classes Methods

### In Files

- ext/r_search.c

### Parent

Ferret::Search::Query

### Methods

- ::new

### Files

- MIT-LICENSE
- README
- TODO
- TUTORIAL

### Class/Module Index

Quicksearch

- Ferret
- Ferret::Analysis
- Ferret::Analysis::Analyzer
- Ferret::Analysis::AsciiLetterAnalyzer
- Ferret::Analysis::AsciiLetterTokenizer
- Ferret::Analysis::AsciiLowerCaseFilter
- Ferret::Analysis::AsciiStandardAnalyzer
- Ferret::Analysis::AsciiStandardTokenizer
- Ferret::Analysis::AsciiWhiteSpaceAnalyzer
- Ferret::Analysis::AsciiWhiteSpaceTokenizer
- Ferret::Analysis::HyphenFilter
- Ferret::Analysis::LetterAnalyzer
- Ferret::Analysis::LetterTokenizer
- Ferret::Analysis::LowerCaseFilter
- Ferret::Analysis::MappingFilter
- Ferret::Analysis::PerFieldAnalyzer
- Ferret::Analysis::RegExpAnalyzer
- Ferret::Analysis::RegExpTokenizer
- Ferret::Analysis::StandardAnalyzer
- Ferret::Analysis::StandardTokenizer
- Ferret::Analysis::StemFilter
- Ferret::Analysis::StopFilter
- Ferret::Analysis::Token
- Ferret::Analysis::TokenStream
- Ferret::Analysis::WhiteSpaceAnalyzer
- Ferret::Analysis::WhiteSpaceTokenizer
- Ferret::BlankSlate
- Ferret::BoostMixin
- Ferret::Browser
- Ferret::Browser::Controller
- Ferret::Browser::Delegator
- Ferret::Browser::DocumentController
- Ferret::Browser::ErrorController
- Ferret::Browser::HelpController
- Ferret::Browser::HomeController
- Ferret::Browser::TermController
- Ferret::Browser::TermVectorController
- Ferret::Browser::ViewHelper
- Ferret::Document
- Ferret::Field
- Ferret::FieldSymbol
- Ferret::FieldSymbolMethods
- Ferret::FileNotFoundError
- Ferret::Index
- Ferret::Index::FieldInfo
- Ferret::Index::FieldInfos
- Ferret::Index::Index
- Ferret::Index::IndexReader
- Ferret::Index::IndexWriter
- Ferret::Index::LazyDoc
- Ferret::Index::LazyDoc::LazyDocData
- Ferret::Index::TermDocEnum
- Ferret::Index::TermEnum
- Ferret::Index::TermVector
- Ferret::Index::TermVector::TVOffsets
- Ferret::Index::TermVector::TVTerm
- Ferret::ParseError
- Ferret::QueryParser
- Ferret::QueryParser::QueryParseException
- Ferret::Search
- Ferret::Search::BooleanQuery
- Ferret::Search::BooleanQuery::BooleanClause
- Ferret::Search::ConstantScoreQuery
- Ferret::Search::Explanation
- Ferret::Search::Filter
- Ferret::Search::FilteredQuery
- Ferret::Search::FuzzyQuery
- Ferret::Search::Hit
- Ferret::Search::MatchAllQuery
- Ferret::Search::MultiSearcher
- Ferret::Search::MultiTermQuery
- Ferret::Search::PhraseQuery
- Ferret::Search::PrefixQuery
- Ferret::Search::Query
- Ferret::Search::QueryFilter
- Ferret::Search::RangeFilter
- Ferret::Search::RangeQuery
- Ferret::Search::Searcher
- Ferret::Search::Sort
- Ferret::Search::SortField
- Ferret::Search::Spans
- Ferret::Search::Spans::SpanFirstQuery
- Ferret::Search::Spans::SpanMultiTermQuery
- Ferret::Search::Spans::SpanNearQuery
- Ferret::Search::Spans::SpanNotQuery
- Ferret::Search::Spans::SpanOrQuery
- Ferret::Search::Spans::SpanPrefixQuery
- Ferret::Search::Spans::SpanTermQuery
- Ferret::Search::TermQuery
- Ferret::Search::TopDocs
- Ferret::Search::TypedRangeFilter
- Ferret::Search::TypedRangeQuery
- Ferret::Search::WildcardQuery
- Ferret::StateError
- Ferret::Store
- Ferret::Store::Directory
- Ferret::Store::FSDirectory
- Ferret::Store::Lock
- Ferret::Store::Lock::LockError
- Ferret::Store::RAMDirectory
- Ferret::Utils
- Ferret::Utils::BitVector
- Ferret::Utils::MultiMapper
- Ferret::Utils::PriorityQueue
- WEBrick
- WEBrick::FerretBrowserHandler
- Date
- DateTime
- FileUtils
- Float
- Integer
- String
- Symbol
- Time

No matching classes.

# Ferret::Search::RangeQuery

## 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]

### Public Class Methods

new(field, options = {}) → range_query click to toggle source

Create a new RangeQuery on field `field`. 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 = RangeQuery.new(:date, :lower => "200501", :include_lower => false)
    # is equivalent to
    q = RangeQuery.new(:date, :< => "200501")
    # is equivalent to
    q = RangeQuery.new(:date, :lower_exclusive => "200501")

    q = RangeQuery.new(:date, :lower => "200501", :upper => 200502)
    # is equivalent to
    q = RangeQuery.new(:date, :>= => "200501", :<= => 200502)

    static VALUE
    frb_rq_init(VALUE self, VALUE rfield, VALUE roptions)
    {
        Query *q;
        char *lterm = NULL;
        char *uterm = NULL;
        bool include_lower = false;
        bool include_upper = false;

        get_range_params(roptions, &lterm, &uterm, &include_lower, &include_upper);
        q = rq_new(frb_field(rfield),
                   lterm, uterm,
                   include_lower, include_upper);
        Frt_Wrap_Struct(self, NULL, &frb_q_free, q);
        object_add(q, self);
        return self;
    }

[Validate]

Generated with the Darkfish Rdoc Generator 2.