class Sunspot::Query::FieldStats

Constants

STATS_FUNCTIONS

Public Class Methods

new(field, options) click to toggle source
# File lib/sunspot/query/field_stats.rb, line 4
def initialize(field, options)
  @field, @options = field, options
  @facets = []
end

Public Instance Methods

add_facet(field) click to toggle source
# File lib/sunspot/query/field_stats.rb, line 9
def add_facet field
  @facets << field
end
add_json_facet(json_facet) click to toggle source
# File lib/sunspot/query/field_stats.rb, line 13
def add_json_facet(json_facet)
  @json_facet = json_facet
end
facet_key() click to toggle source
# File lib/sunspot/query/field_stats.rb, line 52
def facet_key
  qualified_param 'facet'
end
json_stats_params() click to toggle source
# 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) click to toggle source
# File lib/sunspot/query/field_stats.rb, line 56
def qualified_param name
  :"f.#{@field.indexed_name}.stats.#{name}"
end
recursive_add_stats(query) click to toggle source
# 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() click to toggle source
# 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