CJK 字符宽度令牌过滤器
`cjk_width` 令牌过滤器通过将全角 ASCII 字符转换为标准(半角)ASCII 等效字符,并将半角片假名字符转换为全角等效字符来规范化中文、日文和韩文 (CJK) 令牌。
转换全角 ASCII 字符
在 CJK 文本中,ASCII 字符(如字母和数字)可以以全角形式出现,占据两个半角字符的空间。全角 ASCII 字符通常用于东亚排版,以便与 CJK 字符的宽度对齐。然而,为了索引和搜索的目的,这些全角字符需要被规范化为标准(半角)ASCII 等效字符。
以下示例说明了 ASCII 字符的规范化:
Full-Width: ABCDE 12345
Normalized (half-width): ABCDE 12345
转换半角片假名字符
`cjk_width` 令牌过滤器将半角片假名字符转换为其全角对应字符,这是日文文本中使用的标准形式。以下示例说明了这种规范化,它对于文本处理和搜索的一致性至关重要:
Half-Width katakana: カタカナ
Normalized (full-width) katakana: カタカナ
示例
以下示例请求创建一个名为 `cjk_width_example_index` 的新索引,并使用 `cjk_width` 过滤器定义一个分析器:
PUT /cjk_width_example_index
{
"settings": {
"analysis": {
"analyzer": {
"cjk_width_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": ["cjk_width"]
}
}
}
}
}
生成的词元
使用以下请求检查使用该分析器生成的词元
POST /cjk_width_example_index/_analyze
{
"analyzer": "cjk_width_analyzer",
"text": "Tokyo 2024 カタカナ"
}
响应包含生成的词元
{
"tokens": [
{
"token": "Tokyo",
"start_offset": 0,
"end_offset": 5,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "2024",
"start_offset": 6,
"end_offset": 10,
"type": "<NUM>",
"position": 1
},
{
"token": "カタカナ",
"start_offset": 11,
"end_offset": 15,
"type": "<KATAKANA>",
"position": 2
}
]
}