Class: RediSearch::Aggregate
- Inherits:
-
Object
- Object
- RediSearch::Aggregate
- Extended by:
- Forwardable
- Includes:
- LazilyLoad, Search::Queries
- Defined in:
- lib/redi_search/aggregate.rb,
lib/redi_search/aggregate/clauses/load.rb,
lib/redi_search/aggregate/reducers/max.rb,
lib/redi_search/aggregate/reducers/min.rb,
lib/redi_search/aggregate/reducers/sum.rb,
lib/redi_search/aggregate/clauses/apply.rb,
lib/redi_search/aggregate/clauses/limit.rb,
lib/redi_search/aggregate/clauses/filter.rb,
lib/redi_search/aggregate/reducers/count.rb,
lib/redi_search/aggregate/reducers/stdev.rb,
lib/redi_search/aggregate/clauses/sort_by.rb,
lib/redi_search/aggregate/clauses/group_by.rb,
lib/redi_search/aggregate/clauses/verbatim.rb,
lib/redi_search/aggregate/reducers/average.rb,
lib/redi_search/aggregate/reducers/to_list.rb,
lib/redi_search/aggregate/reducers/quantile.rb,
lib/redi_search/aggregate/reducers/distinct_count.rb,
lib/redi_search/aggregate/reducers/distinctish_count.rb
Defined Under Namespace
Modules: Clauses, Reducers Classes: MissingGroupByClause
Instance Attribute Summary collapse
-
#clauses ⇒ Object
readonly
Returns the value of attribute clauses.
-
#index ⇒ Object
readonly
Returns the value of attribute index.
-
#query ⇒ Object
readonly
Returns the value of attribute query.
-
#used_clauses ⇒ Object
readonly
Returns the value of attribute used_clauses.
Instance Method Summary collapse
- #apply(expression, as:) ⇒ Object
- #count(as: nil) ⇒ Object
- #filter(expression) ⇒ Object
- #group_by(*fields) ⇒ Object
-
#initialize(index, term = nil, **term_options) ⇒ Aggregate
constructor
A new instance of Aggregate.
- #limit(total, offset = 0) ⇒ Object
- #load(*fields) ⇒ Object
- #quantile(property: nil, quantile: nil, as: nil) ⇒ Object
- #sort_by(*fields) ⇒ Object
- #verbatim ⇒ Object
Methods included from Search::Queries
Methods included from LazilyLoad
#inspect, #loaded?, #pretty_print, #to_a
Constructor Details
#initialize(index, term = nil, **term_options) ⇒ Aggregate
Returns a new instance of Aggregate.
16 17 18 19 20 21 22 |
# File 'lib/redi_search/aggregate.rb', line 16 def initialize(index, term = nil, **) @index = index @clauses = [] @used_clauses = Set.new @query = term && Search::Queries::And.new(self, term, nil, **) end |
Instance Attribute Details
#clauses ⇒ Object
Returns the value of attribute clauses.
12 13 14 |
# File 'lib/redi_search/aggregate.rb', line 12 def clauses @clauses end |
#index ⇒ Object
Returns the value of attribute index.
12 13 14 |
# File 'lib/redi_search/aggregate.rb', line 12 def index @index end |
#query ⇒ Object (readonly)
Returns the value of attribute query.
12 13 14 |
# File 'lib/redi_search/aggregate.rb', line 12 def query @query end |
#used_clauses ⇒ Object (readonly)
Returns the value of attribute used_clauses.
12 13 14 |
# File 'lib/redi_search/aggregate.rb', line 12 def used_clauses @used_clauses end |
Instance Method Details
#apply(expression, as:) ⇒ Object
68 69 70 |
# File 'lib/redi_search/aggregate.rb', line 68 def apply(expression, as:) add_to_clauses(Clauses::Apply.new(expression: expression, as: as)) end |
#count(as: nil) ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/redi_search/aggregate.rb', line 36 def count(as: nil) clause = clauses.reverse.find { |cl| cl.is_a?(Clauses::GroupBy) } || raise(MissingGroupByClause, "call group_by first") clause.count(as: as) self end |
#filter(expression) ⇒ Object
72 73 74 |
# File 'lib/redi_search/aggregate.rb', line 72 def filter(expression) add_to_clauses(Clauses::Filter.new(expression: expression)) end |
#group_by(*fields) ⇒ Object
32 33 34 |
# File 'lib/redi_search/aggregate.rb', line 32 def group_by(*fields) add_to_clauses(Clauses::GroupBy.new(fields: fields)) end |
#limit(total, offset = 0) ⇒ Object
76 77 78 |
# File 'lib/redi_search/aggregate.rb', line 76 def limit(total, offset = 0) add_to_clauses(Clauses::Limit.new(total: total, offset: offset)) end |
#load(*fields) ⇒ Object
28 29 30 |
# File 'lib/redi_search/aggregate.rb', line 28 def load(*fields) add_to_clauses(Clauses::Load.new(fields: fields)) end |
#quantile(property: nil, quantile: nil, as: nil) ⇒ Object
44 45 46 47 48 49 50 51 |
# File 'lib/redi_search/aggregate.rb', line 44 def quantile(property: nil, quantile: nil, as: nil) clause = clauses.reverse.find { |cl| cl.is_a?(Clauses::GroupBy) } || raise(MissingGroupByClause, "call group_by first") clause.count(property: property, quantile: quantile, as: as) self end |