From 67f40267355e600de27eeb1a1107add610f17733 Mon Sep 17 00:00:00 2001 From: Andrew Date: Fri, 23 Mar 2018 02:41:36 -0700 Subject: [PATCH] Added support for Korean [skip ci] --- CHANGELOG.md | 1 + README.md | 1 + lib/searchkick/index_options.rb | 12 ++++++++++++ lib/searchkick/query.rb | 2 +- test/language_test.rb | 10 ++++++++++ 5 files changed, 25 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0628d62..500d698 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## 3.0.2 [unreleased] +- Added support for Korean - Fixed `Unsupported argument type: Symbol` for async partial reindex - Fixed infinite recursion with multi search and misspellings below - Do not raise an error when `id` is indexed diff --git a/README.md b/README.md index b57d559..a765515 100644 --- a/README.md +++ b/README.md @@ -304,6 +304,7 @@ A few languages require plugins: - `chinese` - [elasticsearch-analysis-ik plugin](https://github.com/medcl/elasticsearch-analysis-ik) - `japanese` - [analysis-kuromoji plugin](https://www.elastic.co/guide/en/elasticsearch/plugins/6.2/analysis-kuromoji.html) +- `korean` - [elasticsearch-analysis-openkoreantext](https://github.com/open-korean-text/elasticsearch-analysis-openkoreantext) [master] - `polish` - [analysis-stempel plugin](https://www.elastic.co/guide/en/elasticsearch/plugins/6.2/analysis-stempel.html) - `ukrainian` - [analysis-ukrainian plugin](https://www.elastic.co/guide/en/elasticsearch/plugins/6.2/analysis-ukrainian.html) diff --git a/lib/searchkick/index_options.rb b/lib/searchkick/index_options.rb index a2cdd08..d29d480 100644 --- a/lib/searchkick/index_options.rb +++ b/lib/searchkick/index_options.rb @@ -169,6 +169,18 @@ module Searchkick type: "kuromoji" } ) + when "korean" + settings[:analysis][:analyzer].merge!( + default_analyzer => { + type: "openkoreantext-analyzer" + }, + searchkick_search: { + type: "openkoreantext-analyzer" + }, + searchkick_search2: { + type: "openkoreantext-analyzer" + } + ) when "polish", "ukrainian", "smartcn" settings[:analysis][:analyzer].merge!( default_analyzer => { diff --git a/lib/searchkick/query.rb b/lib/searchkick/query.rb index 663145a..0ac2426 100644 --- a/lib/searchkick/query.rb +++ b/lib/searchkick/query.rb @@ -317,7 +317,7 @@ module Searchkick qs << shared_options.merge(analyzer: "searchkick_search") # searchkick_search and searchkick_search2 are the same for ukrainian - unless %w(japanese polish ukrainian).include?(searchkick_options[:language]) + unless %w(japanese korean polish ukrainian).include?(searchkick_options[:language]) qs << shared_options.merge(analyzer: "searchkick_search2") end exclude_analyzer = "searchkick_search2" diff --git a/test/language_test.rb b/test/language_test.rb index 636df8b..951aae2 100644 --- a/test/language_test.rb +++ b/test/language_test.rb @@ -38,6 +38,16 @@ class LanguageTest < Minitest::Test end end + def test_korean + # 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_polish # requires https://www.elastic.co/guide/en/elasticsearch/plugins/6.2/analysis-stempel.html with_options(Song, language: "polish") do -- libgit2 0.21.0