class Sunspot::DSL::Group
Public Class Methods
# File lib/sunspot/dsl/group.rb, line 4 def initialize(setup, group) @setup, @group = setup, group end
Public Instance Methods
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
The group.ngroups option true return the total number of groups this is expensive and sometimes you don't need it! If ngroups is false paginated_collection last_page? and total_pages wont't work. Defaults to true.
# File lib/sunspot/dsl/group.rb, line 68 def ngroups(enabled) @group.ngroups = enabled end
Specify the order that results should be returned in. This method can be called multiple times; precedence will be in the order given.
Parameters¶ ↑
- field_name<Symbol>
-
the field to use for ordering
- direction<Symbol>
-
:asc or :desc (default :asc)
# File lib/sunspot/dsl/group.rb, line 80 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
Parameters¶ ↑
- function_name<Symbol>
-
the function to run
- arguments
-
the arguments for this function.
-
Symbol for a field or function name
-
Array for a nested function
-
String for a literal constant
-
- direction<Symbol>
-
:asc or :desc
# File lib/sunspot/dsl/group.rb, line 111 def order_by_function(*args) @group.add_sort( Sunspot::Query::Sort::FunctionSort.new(@setup,args) ) end
Specify a query to group results by.
Parameters¶ ↑
- label<Object>
-
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.
Example¶ ↑
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