analysis-pinyin分词器中各配置参数说明

目录

1. 基础参数

2. 拼音格式控制

3. 高级参数

4. 配置示例

场景 1:生成完整拼音 + 首字母

场景 2:仅保留合并拼音(适用于搜索建议)

5. 注意事项

常见问题


analysis-pinyin 是 Elasticsearch/OpenSearch 中用于处理中文拼音的分词插件(需单独安装)。其核心功能是将中文文本转换为拼音或拼音首字母,支持多种过滤参数以定制输出格式。以下是所有可配置参数及其作用解析:


1. 基础参数

参数名类型默认值作用
keep_originalbooleantrue是否保留原始中文词项(若为 false,则仅输出拼音)。
limit_first_letter_lengthinteger16限制首字母缩写结果的最大长度(超长截断)。
keep_full_pinyinbooleantrue是否保留完整拼音(如 北京 → beijing)。
keep_joined_full_pinyinbooleanfalse是否将多字拼音合并为一个词项(如 北京 → beijing,而非分拆为 bei jing)。
keep_none_chinesebooleantrue是否保留非中文字符(如数字、英文)。
keep_none_chinese_in_joined_full_pinyinbooleanfalse在合并拼音时是否保留非中文字符(需 keep_joined_full_pinyin=true)。

2. 拼音格式控制

参数名类型默认值作用
keep_first_letterbooleantrue是否保留首字母缩写(如 北京 → bj)。
keep_separate_first_letterbooleanfalse是否将首字母分拆为单独词项(如 北京 → b j)。
lowercasebooleantrue是否将拼音转为小写。
trim_whitespacebooleantrue是否移除拼音前后的空格。

3. 高级参数

参数名类型默认值作用
ignore_pinyin_offsetbooleantrue是否忽略拼音词项的偏移量(优化性能,但可能影响高亮显示)。
remove_duplicated_termbooleanfalse是否去重重复拼音词项(如多音字可能生成相同拼音)。

4. 配置示例

场景 1:生成完整拼音 + 首字母
PUT /my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "pinyin_analyzer": {
          "tokenizer": "ik_max_word",  // 先按中文分词
          "filter": ["pinyin_filter"]
        }
      },
      "filter": {
        "pinyin_filter": {
          "type": "pinyin",
          "keep_original": true,
          "keep_full_pinyin": true,
          "keep_first_letter": true,
          "limit_first_letter_length": 16,
          "lowercase": true
        }
      }
    }
  }
}

效果

  • 输入:"北京奥运会"

  • 输出词项:北京 奥运会 beijing aoyunhui bj ayh


场景 2:仅保留合并拼音(适用于搜索建议)
"filter": {
  "pinyin_filter": {
    "type": "pinyin",
    "keep_original": false,
    "keep_joined_full_pinyin": true,
    "keep_first_letter": false
  }
}

效果

  • 输入:"清华大学"

  • 输出词项:qinghuadaxue


5. 注意事项

  1. 多音字处理:拼音插件可能无法 100% 准确识别多音字(如 重庆 → chongqing 而非 zhongqing)。

  2. 性能开销:开启过多选项(如分拆首字母)会增加索引体积和查询耗时。

  3. 组合使用:建议与中文分词器(如 IK Analyzer)搭配使用,先分词再转拼音。


常见问题

Q:如何实现拼音首字母搜索?
A:启用 keep_first_letter 并搭配 edge_ngram 分词器:

"filter": {
  "pinyin_first_letter": {
    "type": "pinyin",
    "keep_first_letter": true,
    "keep_original": false
  },
  "edge_ngram_filter": {
    "type": "edge_ngram",
    "min_gram": 1,
    "max_gram": 8
  }
}

通过合理配置这些参数,可以灵活适配拼音搜索、自动补全、模糊匹配等场景需求。


pinyin分词器源码地址:

GitHub - infinilabs/analysis-pinyin: 🛵 This Pinyin Analysis plugin is used to do conversion between Chinese characters and Pinyin.🛵 This Pinyin Analysis plugin is used to do conversion between Chinese characters and Pinyin. - infinilabs/analysis-pinyinhttps://github.com/infinilabs/analysis-pinyin

 您可以从这里下载打包的插件:Index of:https://release.infinilabs.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值