diff --git a/README.md b/README.md index 619d76c..091de80 100644 --- a/README.md +++ b/README.md @@ -2038,7 +2038,7 @@ Turn on misspellings after a certain number of characters Product.search("api", misspellings: {prefix_length: 2}) # api, apt, no ahi ``` -**Note:** With this option, if the query length is the same as `prefix_length`, misspellings are turned off with Elasticsearch 7 and OpenSearch +**Note:** With this option, if the query length is the same as `prefix_length`, misspellings are turned off with Elasticsearch 7 and OpenSearch 1 ```ruby Product.search("ah", misspellings: {prefix_length: 2}) # ah, no aha diff --git a/lib/searchkick.rb b/lib/searchkick.rb index 5924a3c..0d288ce 100644 --- a/lib/searchkick.rb +++ b/lib/searchkick.rb @@ -135,8 +135,9 @@ module Searchkick @opensearch end - def self.server_below?(version) - server_version = opensearch? ? "7.10.2" : self.server_version + # TODO always check true version in Searchkick 6 + def self.server_below?(version, true_version = false) + server_version = !true_version && opensearch? ? "7.10.2" : self.server_version Gem::Version.new(server_version.split("-")[0]) < Gem::Version.new(version.split("-")[0]) end diff --git a/test/misspellings_test.rb b/test/misspellings_test.rb index f41d263..9cdaf4f 100644 --- a/test/misspellings_test.rb +++ b/test/misspellings_test.rb @@ -13,7 +13,7 @@ class MisspellingsTest < Minitest::Test def test_prefix_length store_names ["ap", "api", "apt", "any", "nap", "ah", "ahi"] - if Searchkick.server_below?("8.0.0") + if prefix_length_misspellings_off? assert_search "ap", ["ap"], misspellings: {prefix_length: 2} else assert_search "ap", ["ap", "api", "apt"], misspellings: {prefix_length: 2} @@ -23,7 +23,7 @@ class MisspellingsTest < Minitest::Test def test_prefix_length_operator store_names ["ap", "api", "apt", "any", "nap", "ah", "aha"] - if Searchkick.server_below?("8.0.0") + if prefix_length_misspellings_off? assert_search "ap ah", ["ap", "ah"], operator: "or", misspellings: {prefix_length: 2} else assert_search "ap ah", ["ap", "ah", "api", "apt", "aha"], operator: "or", misspellings: {prefix_length: 2} @@ -110,4 +110,10 @@ class MisspellingsTest < Minitest::Test store_names ["Sriracha"] assert_search "siracha", ["Sriracha"], fields: [{name: :word_middle}], misspellings: {fields: [:name]} end + + private + + def prefix_length_misspellings_off? + Searchkick.opensearch? ? Searchkick.server_below?("2.0.0", true) : Searchkick.server_below?("8.0.0") + end end -- libgit2 0.21.0