Specify one or more fields for result grouping.
the fields to use for grouping
# File lib/sunspot/dsl/group.rb, line 14 def field(*field_names, &block) field_names.each do |field_name| field = @setup.field(field_name) @group.add_field(field) end end
Sets the number of results (documents) to return for each group. Defaults to 1.
# File lib/sunspot/dsl/group.rb, line 38 def limit(num) @group.limit = num end
Specify the order that results should be returned in. This method can be called multiple times; precedence will be in the order given.
the field to use for ordering
:asc or :desc (default :asc)
# File lib/sunspot/dsl/group.rb, line 70 def order_by(field_name, direction = nil) sort = if special = Sunspot::Query::Sort.special(field_name) special.new(direction) else Sunspot::Query::Sort::FieldSort.new( @setup.field(field_name), direction ) end @group.add_sort(sort) end
Specify that results should be ordered based on a FunctionQuery - wiki.apache.org/solr/FunctionQuery Solr 3.1 and up
For example, to order by field1 + (field2*field3): order_by_function :sum, :field1, [:product, :field2, :field3], :desc
the function to run
the arguments for this function.
Symbol for a field or function name
Array for a nested function
String for a literal constant
:asc or :desc
# File lib/sunspot/dsl/group.rb, line 101 def order_by_function(*args) @group.add_sort( Sunspot::Query::Sort::FunctionSort.new(@setup,args) ) end
Specify a query to group results by.
a label for this group; when value is called on this
group's results, this label will be returned.
# File lib/sunspot/dsl/group.rb, line 28 def query(label, &block) group_query = Sunspot::Query::GroupQuery.new(label) Sunspot::Util.instance_eval_or_call(Scope.new(group_query, @setup), &block) @group.add_query(group_query) end
If set, facet counts are based on the most relevant document of each group matching the query.
Supported in Solr 3.4 and above.
Sunspot.search(Post) do group :title do truncate end facet :title, :extra => :any end
# File lib/sunspot/dsl/group.rb, line 58 def truncate @group.truncate = true end
# File lib/sunspot/dsl/group.rb, line 4 def initialize(setup, group) @setup, @group = setup, group end