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
|