Module: SearchEnjoy::Aggregation::ClassMethods

Defined in:
lib/search_enjoy/aggregation.rb

Instance Method Summary collapse

Instance Method Details

#aggregate(*args) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/search_enjoy/aggregation.rb', line 15

def aggregate(*args)
  values = @search_index.values.map { |object| args.map { |key| object[key] } }
  values_per_keys = values.transpose.map(&:uniq).zip(args)

  aggregations = []

  values_per_keys.each do |key_values|
    key = key_values.last

    hash = { field: key, data: [] }

    key_values.first.each do |value|
      count = search(key => value).size

      data_hash = {
          value: value,
          count: count
      }

      hash[:data] << data_hash
    end

    aggregations << hash
  end

  aggregations
end