In the same way as the lowercase
token filter is a good starting point for many languages but falls short when exposed to the entire tower of Babel, so the asciifolding
token filter requires a more effective Unicode character-folding counterpart for dealing with the many languages of the world.
lowercase
token filter와 동일한 방식이 많은 언어에 대해 좋은 출발점이지만, 비현실적인 계획(the entire tower of Babel) 앞에서는 부족하다. 따라서, asciifolding
token filter는 세계의 많은 언어를 처리하기 위해, 더 효율적인 Unicode 문자 변경(character folding) filter를 필요로 한다.
The icu_folding
token filter (provided by the icu
plug-in) does the same job as the asciifolding
filter, but extends the transformation to scripts that are not ASCII-based, such as Greek, Hebrew, Han, conversion of numbers in other scripts into their Latin equivalents, plus various other numeric, symbolic, and punctuation transformations.
icu
plug-in에서 제공하는, icu_folding
token filter는 asciifolding
filter와 동일한 역활을 하지만, ASCII 기반이 아닌, 그리스어(Greek), 히브리어(Hebrew) 같은 문자의 변경, 다른 문자의 숫자를 해당하는 라틴어로 변경, 추가로 다양한 숫자, 기호, 문장 부호의 변환을 추가로 포함한다.
The icu_folding
token filter applies Unicode normalization and case folding from nfkc_cf
automatically, so the icu_normalizer
is not required:
icu_folding
token filter는, Unicode 정규화와, 대소문자 변경 형식인 nfkc_cf
가 자동으로 적용된다. 따라서, icu_normalizer
는 필요하지 않다.
PUT /my_index { "settings": { "analysis": { "analyzer": { "my_folder": { "tokenizer": "icu_tokenizer", "filter": [ "icu_folding" ] } } } } } GET /my_index/_analyze?analyzer=my_folder ١٢٣٤٥
If there are particular characters that you would like to protect from folding, you can use aUnicodeSet (much like a character class in regular expressions) to specify which Unicode characters may be folded. For instance, to exclude the Swedish letters å
, ä
, ö
, Å
, Ä
, and Ö
from folding, you would specify a character class representing all Unicode characters, except for those letters: [^åäöÅÄÖ]
(^
means everything except).
변경하지 않으려는 특별한 문자가 있다면, 변경할 Unicode 문자를 지정하기 위해, UnicodeSet (정규 표현식에서 character class와 매우 유사)을 사용할 수 있다. 예를 들어, 스웨덴어(Swedish) 문자 å
, ä
, ö
, Å
, Ä
, Ö
를 변경에서 제외하기 위해, 해당 문자([^åäöÅÄÖ]
)를 제외한(^
: 제외한 모두 라는 의미), 모든 Unicode 문자를 나타내는 character class를 지정해야 한다.
PUT /my_index { "settings": { "analysis": { "filter": { "swedish_folding": { "type": "icu_folding", "unicodeSetFilter": "[^åäöÅÄÖ]" } }, "analyzer": { "swedish_analyzer": { "tokenizer": "icu_tokenizer", "filter": [ "swedish_folding", "lowercase" ] } } } } }
| |
|
'2.X > 3. Dealing with Human Language' 카테고리의 다른 글
3-3-3. Living in a Unicode World (0) | 2017.09.24 |
---|---|
3-3-4. Unicode Case Folding (0) | 2017.09.24 |
3-3-6. Sorting and Collations (0) | 2017.09.24 |
3-4. Reducing Words to Their Root Form (0) | 2017.09.24 |
3-4-1. Algorithmic Stemmers (0) | 2017.09.24 |