language_test.rb
3.5 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
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(Song, language: "chinese") do
store_names ["中华人民共和国国歌"], Song
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(Song, language: "chinese2") do
store_names ["中华人民共和国国歌"], Song
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(Song, language: "japanese") do
store_names ["JR新宿駅の近くにビールを飲みに行こうか"], Song
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(Song, language: "korean") do
store_names ["한국어를 처리하는 예시입니닼ㅋㅋ"], Song
assert_language_search "처리", ["한국어를 처리하는 예시입니닼ㅋㅋ"]
assert_language_search "한국어", ["한국어를 처리하는 예시입니닼ㅋㅋ"]
assert_language_search "를", []
end
end
def test_korean2
skip if Searchkick.server_below?("6.4.0")
# requires https://www.elastic.co/guide/en/elasticsearch/plugins/7.4/analysis-nori.html
with_options(Song, language: "korean2") do
store_names ["한국어를 처리하는 예시입니닼ㅋㅋ"], Song
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(Song, language: "polish") do
store_names ["polski"], Song
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(Song, language: "ukrainian") do
store_names ["ресторани"], Song
assert_language_search "ресторан", ["ресторани"]
end
end
def test_vietnamese
skip if ci?
# requires https://github.com/duydo/elasticsearch-analysis-vietnamese
with_options(Song, language: "vietnamese") do
store_names ["công nghệ thông tin Việt Nam"], Song
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 assert_language_search(term, expected)
assert_search term, expected, {misspellings: false}, Song
end
end