Class: Sunspot::Query::FieldStats
- Inherits:
-
Object
- Object
- Sunspot::Query::FieldStats
- Defined in:
- lib/sunspot/query/field_stats.rb
Constant Summary collapse
- STATS_FUNCTIONS =
[:min, :max, :sum, :avg, :sumsq]
Instance Method Summary collapse
- #add_facet(field) ⇒ Object
- #add_json_facet(json_facet) ⇒ Object
- #facet_key ⇒ Object
-
#initialize(field, options) ⇒ FieldStats
constructor
A new instance of FieldStats.
- #json_stats_params ⇒ Object
- #qualified_param(name) ⇒ Object
- #recursive_add_stats(query) ⇒ Object
- #to_params ⇒ Object
Constructor Details
#initialize(field, options) ⇒ FieldStats
Returns a new instance of FieldStats.
4 5 6 7 |
# File 'lib/sunspot/query/field_stats.rb', line 4 def initialize(field, ) @field, @options = field, @facets = [] end |
Instance Method Details
#add_facet(field) ⇒ Object
9 10 11 |
# File 'lib/sunspot/query/field_stats.rb', line 9 def add_facet field @facets << field end |
#add_json_facet(json_facet) ⇒ Object
13 14 15 |
# File 'lib/sunspot/query/field_stats.rb', line 13 def add_json_facet(json_facet) @json_facet = json_facet end |
#facet_key ⇒ Object
52 53 54 |
# File 'lib/sunspot/query/field_stats.rb', line 52 def facet_key qualified_param 'facet' end |
#json_stats_params ⇒ Object
42 43 44 45 46 47 48 49 50 |
# File 'lib/sunspot/query/field_stats.rb', line 42 def json_stats_params params = {} STATS_FUNCTIONS.each { |s| params[s] = "#{s.to_s}(#{@field.indexed_name})" } unless @options[:stats].nil? to_remove = STATS_FUNCTIONS - @options[:stats] to_remove.map { |s| params.delete(s)} end params end |
#qualified_param(name) ⇒ Object
56 57 58 |
# File 'lib/sunspot/query/field_stats.rb', line 56 def qualified_param name :"f.#{@field.indexed_name}.stats.#{name}" end |
#recursive_add_stats(query) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/sunspot/query/field_stats.rb', line 30 def recursive_add_stats(query) query.keys.each do |k| if !query[k][:facet].nil? query[k][:facet] = recursive_add_stats(query[k][:facet]) end query[k][:facet] ||= {} query[k][:sort] = { @options[:sort] => @options[:sort_type]||'desc' } unless @options[:sort].nil? query[k][:facet].merge!(json_stats_params) end query end |
#to_params ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/sunspot/query/field_stats.rb', line 17 def to_params params = {} if !@json_facet.nil? params['json.facet'] = recursive_add_stats(@json_facet.get_params).to_json else params.merge!(:stats => true, :"stats.field" => [@field.indexed_name]) params[facet_key] = @facets.map(&:indexed_name) unless @facets.empty? end params end |