Commit 860874d73b710968791222c31895052c2dfb2263

Authored by Andrew
1 parent 647bb31a

Added case_sensitive option

@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
2 2
3 - Added per-field misspellings 3 - Added per-field misspellings
4 - Made `exclude` option work with match all 4 - Made `exclude` option work with match all
  5 +- Added `case_sensitive` option
5 6
6 ## 3.1.0 7 ## 3.1.0
7 8
lib/searchkick/index_options.rb
@@ -225,6 +225,13 @@ module Searchkick @@ -225,6 +225,13 @@ module Searchkick
225 } 225 }
226 end 226 end
227 227
  228 + if options[:case_sensitive]
  229 + # delete lowercase analyzer from each
  230 + settings[:analysis][:analyzer].each do |_, analyzer|
  231 + analyzer[:filter].delete("lowercase")
  232 + end
  233 + end
  234 +
228 settings = settings.symbolize_keys.deep_merge((options[:settings] || {}).symbolize_keys) 235 settings = settings.symbolize_keys.deep_merge((options[:settings] || {}).symbolize_keys)
229 236
230 # synonyms 237 # synonyms
lib/searchkick/model.rb
@@ -3,7 +3,7 @@ module Searchkick @@ -3,7 +3,7 @@ module Searchkick
3 def searchkick(**options) 3 def searchkick(**options)
4 options = Searchkick.model_options.merge(options) 4 options = Searchkick.model_options.merge(options)
5 5
6 - unknown_keywords = options.keys - [:_all, :_type, :batch_size, :callbacks, :conversions, :default_fields, 6 + unknown_keywords = options.keys - [:_all, :_type, :batch_size, :callbacks, :case_sensitive, :conversions, :default_fields,
7 :filterable, :geo_shape, :highlight, :ignore_above, :index_name, :index_prefix, :inheritance, :language, 7 :filterable, :geo_shape, :highlight, :ignore_above, :index_name, :index_prefix, :inheritance, :language,
8 :locations, :mappings, :match, :merge_mappings, :routing, :searchable, :settings, :similarity, 8 :locations, :mappings, :match, :merge_mappings, :routing, :searchable, :settings, :similarity,
9 :special_characters, :stem_conversions, :suggest, :synonyms, :text_end, 9 :special_characters, :stem_conversions, :suggest, :synonyms, :text_end,
test/case_sensitive_test.rb 0 → 100644
@@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
  1 +require_relative "test_helper"
  2 +
  3 +class CaseSensitiveTest < Minitest::Test
  4 + def setup
  5 + Song.destroy_all
  6 + end
  7 +
  8 + def test_case_sensitive
  9 + with_options(Song, case_sensitive: true) do
  10 + store_names ["Test", "test"], Song
  11 + assert_search "test", ["test"], {misspellings: false}, Song
  12 + end
  13 + end
  14 +end