简繁转换字符过滤器(ST Convert)

ST Convert 字符过滤器 #

stconvert 字符过滤器在分词之前对中文文本进行简体与繁体之间的转换,使简繁体内容在搜索时可以互相匹配。

需要插件:此过滤器由 analysis-stconvert 插件提供,Easysearch 默认已集成。

转换方向 #

convert_type说明
s2t默认值。简体 → 繁体
t2s繁体 → 简体

使用示例 #

简体转繁体(默认) #

PUT /my-chinese-index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "s2t_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "char_filter": ["stconvert"]
        }
      }
    }
  }
}

繁体转简体 #

PUT /my-chinese-index
{
  "settings": {
    "analysis": {
      "char_filter": {
        "t2s_filter": {
          "type": "stconvert",
          "convert_type": "t2s"
        }
      },
      "analyzer": {
        "t2s_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "char_filter": ["t2s_filter"]
        }
      }
    }
  }
}

测试效果 #

GET /_analyze
{
  "tokenizer": "keyword",
  "char_filter": [
    {
      "type": "stconvert",
      "convert_type": "t2s"
    }
  ],
  "text": "國際化標準"
}

结果:國際化標準国际化标准

参数说明 #

参数类型默认值说明
convert_typeStrings2t转换方向:s2t(简→繁)或 t2s(繁→简)

字符过滤器 vs 词元过滤器 #

analysis-stconvert 插件同时提供了字符过滤器、词元过滤器和分词器三种形式:

形式类型名处理阶段说明
字符过滤器stconvert分词前先转换再分词,分词结果更准确
词元过滤器stconvert分词后分词后再转换
分词器stconvert分词阶段边分词边转换

建议:中文场景推荐使用字符过滤器版本,先完成简繁转换再交给 IK 等分词器处理,可以避免因简繁差异导致的分词不一致。

典型应用场景 #

简繁体统一索引 #

将简繁体统一为简体索引,用户用任一种写法都能搜到:

PUT /chinese-unified
{
  "settings": {
    "analysis": {
      "char_filter": {
        "t2s": {
          "type": "stconvert",
          "convert_type": "t2s"
        }
      },
      "analyzer": {
        "unified_chinese": {
          "type": "custom",
          "tokenizer": "standard",
          "char_filter": ["t2s"],
          "filter": ["lowercase"]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "content": {
        "type": "text",
        "analyzer": "unified_chinese"
      }
    }
  }
}

这样索引 國際化国际化 都会被归一化为 国际化,实现简繁体互搜。