ICU 折叠词元过滤器

编辑

基于 UTR#30 的 Unicode 字符大小写折叠,就像打了鸡血的 ASCII 折叠词元过滤器。它将自身注册为 icu_folding 词元过滤器,并且可用于所有索引

PUT icu_sample
{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "folded": {
            "tokenizer": "icu_tokenizer",
            "filter": [
              "icu_folding"
            ]
          }
        }
      }
    }
  }
}

ICU 折叠词元过滤器已经执行了 Unicode 规范化,因此无需再使用规范化字符或词元过滤器。

可以通过指定 unicode_set_filter 参数来控制哪些字母被折叠,该参数接受 UnicodeSet

以下示例将瑞典字符排除在折叠之外。请务必注意,应该同时指定大写和小写形式,并且这些过滤的字符不会被转换为小写,这就是为什么我们还要添加 lowercase 过滤器

PUT icu_sample
{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "swedish_analyzer": {
            "tokenizer": "icu_tokenizer",
            "filter": [
              "swedish_folding",
              "lowercase"
            ]
          }
        },
        "filter": {
          "swedish_folding": {
            "type": "icu_folding",
            "unicode_set_filter": "[^åäöÅÄÖ]"
          }
        }
      }
    }
  }
}