class Ferret::Search::RangeFilter
Summary¶ ↑
RangeFilter filters a set of documents which contain a lexicographical range of terms (ie “aaa”, “aab”, “aac”, etc). See also RangeQuery
Example¶ ↑
Find all documents created before 5th of September 2002.
filter = RangeFilter.new(:created_on, :< => "20020905")
Number fields¶ ↑
See RangeQuery for notes on how to use the RangeFilter on a field containing numbers.
Public Class Methods
new(field, options = {}) → range_query
click to toggle source
Create a new RangeFilter on field
field
. There are two ways to build a range filter. 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¶ ↑
f = RangeFilter.new(:date, :lower => "200501", :include_lower => false) # is equivalent to f = RangeFilter.new(:date, :< => "200501") # is equivalent to f = RangeFilter.new(:date, :lower_exclusive => "200501") f = RangeFilter.new(:date, :lower => "200501", :upper => 200502) # is equivalent to f = RangeFilter.new(:date, :>= => "200501", :<= => 200502)
static VALUE frb_rf_init(VALUE self, VALUE rfield, VALUE roptions) { Filter *f; char *lterm = NULL; char *uterm = NULL; bool include_lower = false; bool include_upper = false; get_range_params(roptions, <erm, &uterm, &include_lower, &include_upper); f = rfilt_new(frb_field(rfield), lterm, uterm, include_lower, include_upper); Frt_Wrap_Struct(self, NULL, &frb_f_free, f); object_add(f, self); return self; }