目录
analysis-pinyin 是 Elasticsearch/OpenSearch 中用于处理中文拼音的分词插件(需单独安装)。其核心功能是将中文文本转换为拼音或拼音首字母,支持多种过滤参数以定制输出格式。以下是所有可配置参数及其作用解析:
1. 基础参数
参数名 | 类型 | 默认值 | 作用 |
---|---|---|---|
keep_original | boolean | true | 是否保留原始中文词项(若为 false ,则仅输出拼音)。 |
limit_first_letter_length | integer | 16 | 限制首字母缩写结果的最大长度(超长截断)。 |
keep_full_pinyin | boolean | true | 是否保留完整拼音(如 北京 → beijing )。 |
keep_joined_full_pinyin | boolean | false | 是否将多字拼音合并为一个词项(如 北京 → beijing ,而非分拆为 bei jing )。 |
keep_none_chinese | boolean | true | 是否保留非中文字符(如数字、英文)。 |
keep_none_chinese_in_joined_full_pinyin | boolean | false | 在合并拼音时是否保留非中文字符(需 keep_joined_full_pinyin=true )。 |
2. 拼音格式控制
参数名 | 类型 | 默认值 | 作用 |
---|---|---|---|
keep_first_letter | boolean | true | 是否保留首字母缩写(如 北京 → bj )。 |
keep_separate_first_letter | boolean | false | 是否将首字母分拆为单独词项(如 北京 → b j )。 |
lowercase | boolean | true | 是否将拼音转为小写。 |
trim_whitespace | boolean | true | 是否移除拼音前后的空格。 |
3. 高级参数
参数名 | 类型 | 默认值 | 作用 |
---|---|---|---|
ignore_pinyin_offset | boolean | true | 是否忽略拼音词项的偏移量(优化性能,但可能影响高亮显示)。 |
remove_duplicated_term | boolean | false | 是否去重重复拼音词项(如多音字可能生成相同拼音)。 |
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. 注意事项
-
多音字处理:拼音插件可能无法 100% 准确识别多音字(如
重庆
→chongqing
而非zhongqing
)。 -
性能开销:开启过多选项(如分拆首字母)会增加索引体积和查询耗时。
-
组合使用:建议与中文分词器(如 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分词器源码地址:
您可以从这里下载打包的插件:Index of:https://release.infinilabs.com/