search_synonyms_test.rb
2.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
require_relative "test_helper"
class SearchSynonymsTest < Minitest::Test
def setup
super
setup_speaker
end
def test_bleach
store_names ["Clorox Bleach", "Kroger Bleach"]
assert_search "clorox", ["Clorox Bleach", "Kroger Bleach"]
end
def test_burger_buns
store_names ["Hamburger Buns"]
assert_search "burger buns", ["Hamburger Buns"]
end
def test_bandaids
store_names ["Band-Aid", "Kroger 12-Pack Bandages"]
assert_search "bandaids", ["Band-Aid", "Kroger 12-Pack Bandages"]
end
def test_reverse
store_names ["Hamburger"]
assert_search "burger", ["Hamburger"]
end
def test_not_stemmed
store_names ["Burger"]
assert_search "hamburgers", []
assert_search "hamburger", ["Burger"]
end
def test_word_start
store_names ["Clorox Bleach", "Kroger Bleach"]
assert_search "clorox", ["Clorox Bleach", "Kroger Bleach"], {match: :word_start}
end
def test_directional
store_names ["Lightbulb", "Green Onions", "Led"]
assert_search "led", ["Lightbulb", "Led"]
assert_search "Lightbulb", ["Lightbulb"]
assert_search "Halogen Lamp", ["Lightbulb"]
assert_search "onions", ["Green Onions"]
end
def test_case
store_names ["Uppercase"]
assert_search "lowercase", ["Uppercase"]
end
def test_multiple_words
store_names ["USA"]
assert_search "United States of America", ["USA"]
assert_search "usa", ["USA"]
assert_search "United States", []
end
def test_multiple_words_expanded
store_names ["United States of America"]
assert_search "usa", ["United States of America"]
assert_search "United States of America", ["United States of America"]
assert_search "United States", ["United States of America"] # no synonyms used
end
def test_reload_synonyms
if Searchkick.server_below?("7.3.0")
error = assert_raises(Searchkick::Error) do
Speaker.search_index.reload_synonyms
end
assert_equal "Requires Elasticsearch 7.3+", error.message
else
Speaker.search_index.reload_synonyms
end
end
def test_reload_synonyms_better
skip unless ENV["ES_PATH"] && !Searchkick.server_below?("7.3.0")
write_synonyms("test,hello")
with_options({search_synonyms: "synonyms.txt"}, Speaker) do
store_names ["Hello", "Goodbye"]
assert_search "test", ["Hello"]
write_synonyms("test,goodbye")
assert_search "test", ["Hello"]
Speaker.search_index.reload_synonyms
assert_search "test", ["Goodbye"]
end
ensure
Speaker.reindex
end
def write_synonyms(contents)
File.write("#{ENV.fetch("ES_PATH")}/config/synonyms.txt", contents)
end
def default_model
Speaker
end
end