class Sunspot::Query::Group

A Group groups by the unique values of a given field, or by given queries.

Attributes

fields[R]
limit[RW]
queries[R]
truncate[RW]

Public Instance Methods

add_field(field) click to toggle source
# 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
add_query(query) click to toggle source
# File lib/sunspot/query/group.rb, line 23
def add_query(query)
  @queries << query
end
add_sort(sort) click to toggle source
# File lib/sunspot/query/group.rb, line 27
def add_sort(sort)
  @sort << sort
end
to_params() click to toggle source
# 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

Public Class Methods

new() click to toggle source
# File lib/sunspot/query/group.rb, line 10
def initialize
  @sort = SortComposite.new
  @fields = []
  @queries = []
end