Commit e341552c18464e7d113482fcb1a4f0216d779854
1 parent
682b0878
Exists in
master
and in
8 other branches
Moved language analyzers to new method
Showing
1 changed file
with
48 additions
and
57 deletions
Show diff stats
lib/searchkick/index_options.rb
... | ... | @@ -154,7 +154,53 @@ module Searchkick |
154 | 154 | } |
155 | 155 | |
156 | 156 | stem = options[:stem] |
157 | + stem = false if update_language(settings) | |
157 | 158 | |
159 | + if Searchkick.env == "test" | |
160 | + settings[:number_of_shards] = 1 | |
161 | + settings[:number_of_replicas] = 0 | |
162 | + end | |
163 | + | |
164 | + if options[:similarity] | |
165 | + settings[:similarity] = {default: {type: options[:similarity]}} | |
166 | + end | |
167 | + | |
168 | + unless below62 | |
169 | + settings[:index] = { | |
170 | + max_ngram_diff: 49, | |
171 | + max_shingle_diff: 4 | |
172 | + } | |
173 | + end | |
174 | + | |
175 | + if options[:case_sensitive] | |
176 | + settings[:analysis][:analyzer].each do |_, analyzer| | |
177 | + analyzer[:filter].delete("lowercase") | |
178 | + end | |
179 | + end | |
180 | + | |
181 | + if stem == false | |
182 | + settings[:analysis][:filter].delete(:searchkick_stemmer) | |
183 | + settings[:analysis][:analyzer].each do |_, analyzer| | |
184 | + analyzer[:filter].delete("searchkick_stemmer") if analyzer[:filter] | |
185 | + end | |
186 | + end | |
187 | + | |
188 | + settings = settings.symbolize_keys.deep_merge((options[:settings] || {}).symbolize_keys) | |
189 | + | |
190 | + add_synonyms(settings) | |
191 | + add_search_synonyms(settings) | |
192 | + add_wordnet(settings) if options[:wordnet] | |
193 | + | |
194 | + if options[:special_characters] == false | |
195 | + settings[:analysis][:analyzer].each_value do |analyzer_settings| | |
196 | + analyzer_settings[:filter].reject! { |f| f == "asciifolding" } | |
197 | + end | |
198 | + end | |
199 | + | |
200 | + settings | |
201 | + end | |
202 | + | |
203 | + def update_language(settings) | |
158 | 204 | case language |
159 | 205 | when "chinese" |
160 | 206 | settings[:analysis][:analyzer].merge!( |
... | ... | @@ -168,8 +214,6 @@ module Searchkick |
168 | 214 | type: "ik_max_word" |
169 | 215 | } |
170 | 216 | ) |
171 | - | |
172 | - stem = false | |
173 | 217 | when "chinese2", "smartcn" |
174 | 218 | settings[:analysis][:analyzer].merge!( |
175 | 219 | default_analyzer => { |
... | ... | @@ -182,8 +226,6 @@ module Searchkick |
182 | 226 | type: "smartcn" |
183 | 227 | } |
184 | 228 | ) |
185 | - | |
186 | - stem = false | |
187 | 229 | when "japanese" |
188 | 230 | settings[:analysis][:analyzer].merge!( |
189 | 231 | default_analyzer => { |
... | ... | @@ -196,8 +238,6 @@ module Searchkick |
196 | 238 | type: "kuromoji" |
197 | 239 | } |
198 | 240 | ) |
199 | - | |
200 | - stem = false | |
201 | 241 | when "korean" |
202 | 242 | settings[:analysis][:analyzer].merge!( |
203 | 243 | default_analyzer => { |
... | ... | @@ -210,8 +250,6 @@ module Searchkick |
210 | 250 | type: "openkoreantext-analyzer" |
211 | 251 | } |
212 | 252 | ) |
213 | - | |
214 | - stem = false | |
215 | 253 | when "korean2" |
216 | 254 | settings[:analysis][:analyzer].merge!( |
217 | 255 | default_analyzer => { |
... | ... | @@ -224,8 +262,6 @@ module Searchkick |
224 | 262 | type: "nori" |
225 | 263 | } |
226 | 264 | ) |
227 | - | |
228 | - stem = false | |
229 | 265 | when "vietnamese" |
230 | 266 | settings[:analysis][:analyzer].merge!( |
231 | 267 | default_analyzer => { |
... | ... | @@ -238,8 +274,6 @@ module Searchkick |
238 | 274 | type: "vi_analyzer" |
239 | 275 | } |
240 | 276 | ) |
241 | - | |
242 | - stem = false | |
243 | 277 | when "polish", "ukrainian" |
244 | 278 | settings[:analysis][:analyzer].merge!( |
245 | 279 | default_analyzer => { |
... | ... | @@ -252,52 +286,9 @@ module Searchkick |
252 | 286 | type: language |
253 | 287 | } |
254 | 288 | ) |
255 | - | |
256 | - stem = false | |
257 | - end | |
258 | - | |
259 | - if Searchkick.env == "test" | |
260 | - settings[:number_of_shards] = 1 | |
261 | - settings[:number_of_replicas] = 0 | |
262 | - end | |
263 | - | |
264 | - if options[:similarity] | |
265 | - settings[:similarity] = {default: {type: options[:similarity]}} | |
266 | - end | |
267 | - | |
268 | - unless below62 | |
269 | - settings[:index] = { | |
270 | - max_ngram_diff: 49, | |
271 | - max_shingle_diff: 4 | |
272 | - } | |
273 | - end | |
274 | - | |
275 | - if options[:case_sensitive] | |
276 | - settings[:analysis][:analyzer].each do |_, analyzer| | |
277 | - analyzer[:filter].delete("lowercase") | |
278 | - end | |
279 | - end | |
280 | - | |
281 | - if stem == false | |
282 | - settings[:analysis][:filter].delete(:searchkick_stemmer) | |
283 | - settings[:analysis][:analyzer].each do |_, analyzer| | |
284 | - analyzer[:filter].delete("searchkick_stemmer") if analyzer[:filter] | |
285 | - end | |
286 | - end | |
287 | - | |
288 | - settings = settings.symbolize_keys.deep_merge((options[:settings] || {}).symbolize_keys) | |
289 | - | |
290 | - add_synonyms(settings) | |
291 | - add_search_synonyms(settings) | |
292 | - add_wordnet(settings) if options[:wordnet] | |
293 | - | |
294 | - if options[:special_characters] == false | |
295 | - settings[:analysis][:analyzer].each_value do |analyzer_settings| | |
296 | - analyzer_settings[:filter].reject! { |f| f == "asciifolding" } | |
297 | - end | |
289 | + else | |
290 | + false # not updated | |
298 | 291 | end |
299 | - | |
300 | - settings | |
301 | 292 | end |
302 | 293 | |
303 | 294 | def generate_mappings | ... | ... |