diff --git a/lib/searchkick/index_options.rb b/lib/searchkick/index_options.rb index 1d5ddcb..262ddad 100644 --- a/lib/searchkick/index_options.rb +++ b/lib/searchkick/index_options.rb @@ -154,7 +154,53 @@ module Searchkick } stem = options[:stem] + stem = false if update_language(settings) + if Searchkick.env == "test" + settings[:number_of_shards] = 1 + settings[:number_of_replicas] = 0 + end + + if options[:similarity] + settings[:similarity] = {default: {type: options[:similarity]}} + end + + unless below62 + settings[:index] = { + max_ngram_diff: 49, + max_shingle_diff: 4 + } + end + + if options[:case_sensitive] + settings[:analysis][:analyzer].each do |_, analyzer| + analyzer[:filter].delete("lowercase") + end + end + + if stem == false + settings[:analysis][:filter].delete(:searchkick_stemmer) + settings[:analysis][:analyzer].each do |_, analyzer| + analyzer[:filter].delete("searchkick_stemmer") if analyzer[:filter] + end + end + + settings = settings.symbolize_keys.deep_merge((options[:settings] || {}).symbolize_keys) + + add_synonyms(settings) + add_search_synonyms(settings) + add_wordnet(settings) if options[:wordnet] + + if options[:special_characters] == false + settings[:analysis][:analyzer].each_value do |analyzer_settings| + analyzer_settings[:filter].reject! { |f| f == "asciifolding" } + end + end + + settings + end + + def update_language(settings) case language when "chinese" settings[:analysis][:analyzer].merge!( @@ -168,8 +214,6 @@ module Searchkick type: "ik_max_word" } ) - - stem = false when "chinese2", "smartcn" settings[:analysis][:analyzer].merge!( default_analyzer => { @@ -182,8 +226,6 @@ module Searchkick type: "smartcn" } ) - - stem = false when "japanese" settings[:analysis][:analyzer].merge!( default_analyzer => { @@ -196,8 +238,6 @@ module Searchkick type: "kuromoji" } ) - - stem = false when "korean" settings[:analysis][:analyzer].merge!( default_analyzer => { @@ -210,8 +250,6 @@ module Searchkick type: "openkoreantext-analyzer" } ) - - stem = false when "korean2" settings[:analysis][:analyzer].merge!( default_analyzer => { @@ -224,8 +262,6 @@ module Searchkick type: "nori" } ) - - stem = false when "vietnamese" settings[:analysis][:analyzer].merge!( default_analyzer => { @@ -238,8 +274,6 @@ module Searchkick type: "vi_analyzer" } ) - - stem = false when "polish", "ukrainian" settings[:analysis][:analyzer].merge!( default_analyzer => { @@ -252,52 +286,9 @@ module Searchkick type: language } ) - - stem = false - end - - if Searchkick.env == "test" - settings[:number_of_shards] = 1 - settings[:number_of_replicas] = 0 - end - - if options[:similarity] - settings[:similarity] = {default: {type: options[:similarity]}} - end - - unless below62 - settings[:index] = { - max_ngram_diff: 49, - max_shingle_diff: 4 - } - end - - if options[:case_sensitive] - settings[:analysis][:analyzer].each do |_, analyzer| - analyzer[:filter].delete("lowercase") - end - end - - if stem == false - settings[:analysis][:filter].delete(:searchkick_stemmer) - settings[:analysis][:analyzer].each do |_, analyzer| - analyzer[:filter].delete("searchkick_stemmer") if analyzer[:filter] - end - end - - settings = settings.symbolize_keys.deep_merge((options[:settings] || {}).symbolize_keys) - - add_synonyms(settings) - add_search_synonyms(settings) - add_wordnet(settings) if options[:wordnet] - - if options[:special_characters] == false - settings[:analysis][:analyzer].each_value do |analyzer_settings| - analyzer_settings[:filter].reject! { |f| f == "asciifolding" } - end + else + false # not updated end - - settings end def generate_mappings -- libgit2 0.21.0