A Group groups by the unique values of a given field, or by given queries.
# File lib/sunspot/query/group.rb, line 16 def add_field(field) if field.multiple? raise(ArgumentError, "#{field.name} cannot be used for grouping because it is a multiple-value field") end @fields << field end
# File lib/sunspot/query/group.rb, line 23 def add_query(query) @queries << query end
# File lib/sunspot/query/group.rb, line 27 def add_sort(sort) @sort << sort end
# File lib/sunspot/query/group.rb, line 31 def to_params params = { :group => "true", :"group.ngroups" => "true", } params.merge!(@sort.to_params("group.")) params[:"group.field"] = @fields.map(&:indexed_name) if @fields.any? params[:"group.query"] = @queries.map(&:to_boolean_phrase) if @queries.any? params[:"group.limit"] = @limit if @limit params[:"group.truncate"] = @truncate if @truncate params end
# File lib/sunspot/query/group.rb, line 10 def initialize @sort = SortComposite.new @fields = [] @queries = [] end