Commit 926f9dc51549a54484b8cc2b3e15bcb7ad84e885

Authored by Andrew Kane
1 parent ba4c4c99

Set transpositions: true by default and misspellings for partial matches

Showing 2 changed files with 11 additions and 11 deletions   Show diff stats
lib/searchkick/query.rb
@@ -100,22 +100,19 @@ module Searchkick @@ -100,22 +100,19 @@ module Searchkick
100 options[:misspellings] 100 options[:misspellings]
101 elsif options.key?(:mispellings) 101 elsif options.key?(:mispellings)
102 options[:mispellings] # why not? 102 options[:mispellings] # why not?
103 - elsif field == "_all" || field.end_with?(".analyzed")  
104 - true  
105 else 103 else
106 - # TODO default to true and remove this  
107 - false 104 + true
108 end 105 end
109 106
110 if misspellings != false 107 if misspellings != false
111 edit_distance = (misspellings.is_a?(Hash) && (misspellings[:edit_distance] || misspellings[:distance])) || 1 108 edit_distance = (misspellings.is_a?(Hash) && (misspellings[:edit_distance] || misspellings[:distance])) || 1
112 transpositions = 109 transpositions =
113 - if misspellings.is_a?(Hash) && misspellings[:transpositions] == true  
114 - {fuzzy_transpositions: true} 110 + if misspellings.is_a?(Hash) && misspellings.key?(:transpositions)
  111 + {fuzzy_transpositions: misspellings[:transpositions]}
115 elsif below20? 112 elsif below20?
116 {} 113 {}
117 else 114 else
118 - {fuzzy_transpositions: false} 115 + {fuzzy_transpositions: true}
119 end 116 end
120 prefix_length = (misspellings.is_a?(Hash) && misspellings[:prefix_length]) || 0 117 prefix_length = (misspellings.is_a?(Hash) && misspellings[:prefix_length]) || 0
121 max_expansions = (misspellings.is_a?(Hash) && misspellings[:max_expansions]) || 3 118 max_expansions = (misspellings.is_a?(Hash) && misspellings[:max_expansions]) || 3
test/match_test.rb
1 -# encoding: utf-8  
2 -  
3 require_relative "test_helper" 1 require_relative "test_helper"
4 2
5 class MatchTest < Minitest::Test 3 class MatchTest < Minitest::Test
@@ -113,8 +111,8 @@ class MatchTest &lt; Minitest::Test @@ -113,8 +111,8 @@ class MatchTest &lt; Minitest::Test
113 111
114 def test_misspelling_zucchini_transposition 112 def test_misspelling_zucchini_transposition
115 store_names ["zucchini"] 113 store_names ["zucchini"]
116 - assert_search "zuccihni", [] # doesn't work without transpositions:true option  
117 - assert_search "zuccihni", ["zucchini"], misspellings: {transpositions: true} 114 + assert_search "zuccihni", ["zucchini"]
  115 + assert_search "zuccihni", [], misspellings: {transpositions: false}
118 end 116 end
119 117
120 def test_misspelling_lasagna 118 def test_misspelling_lasagna
@@ -132,6 +130,11 @@ class MatchTest &lt; Minitest::Test @@ -132,6 +130,11 @@ class MatchTest &lt; Minitest::Test
132 assert_search "lasanga pasat", ["lasagna pasta"], misspellings: {transpositions: true} # both words misspelled with a transposition should still work 130 assert_search "lasanga pasat", ["lasagna pasta"], misspellings: {transpositions: true} # both words misspelled with a transposition should still work
133 end 131 end
134 132
  133 + def test_misspellings_word_start
  134 + store_names ["Sriracha"]
  135 + assert_search "siracha", ["Sriracha"], fields: [{name: :word_start}]
  136 + end
  137 +
135 # spaces 138 # spaces
136 139
137 def test_spaces_in_field 140 def test_spaces_in_field