4
5
6
7
8
9
10
11
12
13
14
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
42
43
44
45
46
|
# File 'lib/searchkick/model.rb', line 4
def searchkick(options = {})
@searchkick_options = options.dup
class_eval do
extend Searchkick::Search
extend Searchkick::Reindex
include Tire::Model::Search
include Tire::Model::Callbacks
tire do
index_name options[:index_name] || [klass.model_name.plural, ENV["RACK_ENV"] || "development"].join("_")
end
def reindex
update_index
end
def search_data
as_json
end
def to_indexed_json
source = search_data
source = source.inject({}){|memo,(k,v)| memo[k.to_s] = v; memo}
options = self.class.instance_variable_get("@searchkick_options")
conversions_field = options[:conversions]
if conversions_field and source[conversions_field]
source[conversions_field] = source[conversions_field].map{|k, v| {query: k, count: v} }
end
(options[:suggest] || []).map(&:to_s).each do |field|
source[field] = "a" if !source[field]
end
source.to_json
end
end
end
|