diff --git a/CHANGELOG.md b/CHANGELOG.md index d071ac2..ba870f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ ## 4.0.3 [unreleased] +- Added `like` operator +- Added `exists` operator - Added warnings for certain regular expressions - Fixed anchored regular expressions diff --git a/lib/searchkick/query.rb b/lib/searchkick/query.rb index d4c8e18..10f7ed6 100644 --- a/lib/searchkick/query.rb +++ b/lib/searchkick/query.rb @@ -936,7 +936,7 @@ module Searchkick } } when :like - regex = Regexp.escape(op_value).gsub("%", ".*").gsub("_", ".") + regex = Regexp.escape(op_value).gsub(/(? {value: regex}}} when :prefix filters << {prefix: {field => op_value}} diff --git a/test/where_test.rb b/test/where_test.rb index 7a15948..4396421 100644 --- a/test/where_test.rb +++ b/test/where_test.rb @@ -138,6 +138,11 @@ class WhereTest < Minitest::Test assert_search "product", ["Product ABC"], where: {name: {like: "Product_ABC"}} end + def test_like_escape + store_names ["Product 100%", "Product B"] + assert_search "product", ["Product 100%"], where: {name: {like: "% 100\\%"}} + end + # def test_script # store [ # {name: "Product A", store_id: 1}, -- libgit2 0.21.0