CJK 宽度词元过滤器编辑

按如下方式规范 CJK(中文、日文和韩文)字符的宽度差异

  • 将全角 ASCII 字符变体折叠成等效的基本拉丁字符
  • 将半角片假名字符变体折叠成等效的假名字符

此过滤器包含在 Elasticsearch 的内置 CJK 语言分析器 中。它使用 Lucene 的 CJKWidthFilter

此词元过滤器可以被视为 NFKC/NFKD Unicode 规范化的一个子集。有关完整规范化支持,请参阅 analysis-icu 插件

示例编辑

response = client.indices.analyze(
  body: {
    tokenizer: 'standard',
    filter: [
      'cjk_width'
    ],
    text: 'シーサイドライナー'
  }
)
puts response
GET /_analyze
{
  "tokenizer" : "standard",
  "filter" : ["cjk_width"],
  "text" : "シーサイドライナー"
}

该过滤器生成以下词元

シーサイドライナー

添加到分析器编辑

以下 创建索引 API 请求使用 CJK 宽度词元过滤器来配置一个新的 自定义分析器

response = client.indices.create(
  index: 'cjk_width_example',
  body: {
    settings: {
      analysis: {
        analyzer: {
          standard_cjk_width: {
            tokenizer: 'standard',
            filter: [
              'cjk_width'
            ]
          }
        }
      }
    }
  }
)
puts response
PUT /cjk_width_example
{
  "settings": {
    "analysis": {
      "analyzer": {
        "standard_cjk_width": {
          "tokenizer": "standard",
          "filter": [ "cjk_width" ]
        }
      }
    }
  }
}