language_test.rb
3.68 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
105
106
107
108
109
require_relative "test_helper"
class LanguageTest < Minitest::Test
def setup
skip "Requires plugin" unless ci? || ENV["TEST_LANGUAGE"]
Song.destroy_all
end
def test_chinese
skip if ci?
# requires https://github.com/medcl/elasticsearch-analysis-ik
with_options({language: "chinese"}) do
store_names ["中华人民共和国国歌"]
assert_language_search "中华人民共和国", ["中华人民共和国国歌"]
assert_language_search "国歌", ["中华人民共和国国歌"]
assert_language_search "人", []
end
end
def test_chinese2
# requires https://www.elastic.co/guide/en/elasticsearch/plugins/7.4/analysis-smartcn.html
with_options({language: "chinese2"}) do
store_names ["中华人民共和国国歌"]
assert_language_search "中华人民共和国", ["中华人民共和国国歌"]
# assert_language_search "国歌", ["中华人民共和国国歌"]
assert_language_search "人", []
end
end
def test_japanese
# requires https://www.elastic.co/guide/en/elasticsearch/plugins/7.4/analysis-kuromoji.html
with_options({language: "japanese"}) do
store_names ["JR新宿駅の近くにビールを飲みに行こうか"]
assert_language_search "飲む", ["JR新宿駅の近くにビールを飲みに行こうか"]
assert_language_search "jr", ["JR新宿駅の近くにビールを飲みに行こうか"]
assert_language_search "新", []
end
end
def test_korean
skip if ci?
# requires https://github.com/open-korean-text/elasticsearch-analysis-openkoreantext
with_options({language: "korean"}) do
store_names ["한국어를 처리하는 예시입니닼ㅋㅋ"]
assert_language_search "처리", ["한국어를 처리하는 예시입니닼ㅋㅋ"]
assert_language_search "한국어", ["한국어를 처리하는 예시입니닼ㅋㅋ"]
assert_language_search "를", []
end
end
def test_korean2
skip if Searchkick.server_below?("6.4.0") || ci?
# requires https://www.elastic.co/guide/en/elasticsearch/plugins/7.4/analysis-nori.html
with_options({language: "korean2"}) do
store_names ["한국어를 처리하는 예시입니닼ㅋㅋ"]
assert_language_search "처리", ["한국어를 처리하는 예시입니닼ㅋㅋ"]
assert_language_search "한국어", ["한국어를 처리하는 예시입니닼ㅋㅋ"]
assert_language_search "를", []
end
end
def test_polish
# requires https://www.elastic.co/guide/en/elasticsearch/plugins/7.4/analysis-stempel.html
with_options({language: "polish"}) do
store_names ["polski"]
assert_language_search "polskimi", ["polski"]
end
end
def test_ukrainian
# requires https://www.elastic.co/guide/en/elasticsearch/plugins/7.4/analysis-ukrainian.html
with_options({language: "ukrainian"}) do
store_names ["ресторани"]
assert_language_search "ресторан", ["ресторани"]
end
end
def test_vietnamese
skip if ci?
# requires https://github.com/duydo/elasticsearch-analysis-vietnamese
with_options({language: "vietnamese"}) do
store_names ["công nghệ thông tin Việt Nam"]
assert_language_search "công nghệ thông tin", ["công nghệ thông tin Việt Nam"]
assert_language_search "công", []
end
end
def test_hunspell
skip if ci?
with_options({language: {type: "hunspell", locale: "en_US"}}) do
store_names ["the foxes jumping quickly"]
assert_language_search "fox", ["the foxes jumping quickly"]
end
end
def assert_language_search(term, expected)
assert_search term, expected, {misspellings: false}
end
def default_model
Song
end
end