analysis-pinyin拼音分词插件
更新时间:2024-07-12
analysis-pinyin拼音分词插件是百度智能云Elasticsearch默认安装的分词插件。
注意:目前analysis-pinyin拼音分词插件支持所有版本的Elasticsearch实例。
使用方法
创建索引并使用自定义拼音分析器
PUT /test_index/
{
"settings" : {
"analysis" : {
"analyzer" : {
"pinyin_analyzer" : {
"tokenizer" : "my_pinyin"
}
},
"tokenizer" : {
"my_pinyin" : {
"type" : "pinyin",
"keep_separate_first_letter" : false,
"keep_full_pinyin" : true,
"keep_original" : true,
"limit_first_letter_length" : 16,
"lowercase" : true,
"remove_duplicated_term" : true
}
}
}
}
}
其中参数含义如下:
参数 | 含义 | 默认值 | 备注 |
---|---|---|---|
keep_first_letter | 保留拼音首字母分词,例如:刘德华 ->ldh 。 |
true | |
keep_separate_first_letter | 拆分保留拼音首字母,例如:刘德华 ->l ,d ,h 。 |
false | 分词过细可能导致查询结果比较模糊 |
limit_first_letter_length | 限制首字母最大长度 | 16 | |
keep_full_pinyin | 拆分保留全拼,例如:刘德华 -> [liu ,de ,hua ] |
true | |
keep_joined_full_pinyin | 合并保留全拼,例如:刘德华 -> liudehua |
false | |
keep_none_chinese | 保留非中文字符 | true | |
keep_none_chinese_together | 保留非中文字符,并将非中文字符放在一起。例如:当设置为true,则DJ音乐家 -> DJ ,yin ,yue ,jia ;当设置为false,DJ音乐家 -> D ,J ,yin ,yue ,jia |
true | 需要先设置keep_none_chinese 为true |
keep_none_chinese_in_first_letter | 将非中文字符放在首字母分词中,例如:刘德华AT2016 ->ldhat2016 |
true | |
keep_none_chinese_in_joined_full_pinyin | 将非中文字符放在全拼分词中,例如:刘德华AT2016 ->liudehua2016 |
false | |
none_chinese_pinyin_tokenize | 如果非中文字母是拼音的话,把它们分成单独的拼音。例如:liudehuaalibaba13zhuanghan -> liu ,de ,hua ,a ,li ,ba ,ba ,13 ,zhuang ,han |
true | 需要先设置keep_none_chinese 和keep_none_chinese_together 为true |
keep_original | 在分词的同时,保留原始输入内容 | false | |
lowercase | 将非中文字符转化成小写字母 | true | |
trim_whitespace | 去除空格 | true | |
remove_duplicated_term | 删除重复的term,例如:de的 >de |
false |
测试拼音分词效果
GET /test_index/_analyze
{
"text": ["刘德华"],
"analyzer": "pinyin_analyzer"
}
{
"tokens" : [
{
"token" : "liu",
"start_offset" : 0,
"end_offset" : 1,
"type" : "word",
"position" : 0
},
{
"token" : "de",
"start_offset" : 1,
"end_offset" : 2,
"type" : "word",
"position" : 1
},
{
"token" : "hua",
"start_offset" : 2,
"end_offset" : 3,
"type" : "word",
"position" : 2
},
{
"token" : "刘德华",
"start_offset" : 0,
"end_offset" : 3,
"type" : "word",
"position" : 3
},
{
"token" : "ldh",
"start_offset" : 0,
"end_offset" : 3,
"type" : "word",
"position" : 4
}
]
}
创建索引mapping
POST /test_index/_mapping
{
"properties": {
"name": {
"type": "keyword",
"fields": {
"pinyin": {
"type": "text",
"store": false,
"term_vector": "with_offsets",
"analyzer": "pinyin_analyzer",
"boost": 10
}
}
}
}
}
写入数据
POST /test_index/_doc
{"name":"刘德华"}
查询测试
POST test_index/_search?q=name.pinyin:刘德华
POST test_index/_search?q=name.pinyin:刘德
POST test_index/_search?q=name.pinyin:liu
POST test_index/_search?q=name.pinyin:ldh
POST test_index/_search?q=name.pinyin:de+hua