analysis-pinyin拼音分词插件
更新时间:2024-07-12
analysis-pinyin拼音分词插件是百度智能云Elasticsearch默认安装的分词插件。
注意:目前analysis-pinyin拼音分词插件支持所有版本的Elasticsearch实例。
使用方法
创建索引并使用自定义拼音分析器
Plain Text
1PUT /test_index/
2{
3 "settings" : {
4 "analysis" : {
5 "analyzer" : {
6 "pinyin_analyzer" : {
7 "tokenizer" : "my_pinyin"
8 }
9 },
10 "tokenizer" : {
11 "my_pinyin" : {
12 "type" : "pinyin",
13 "keep_separate_first_letter" : false,
14 "keep_full_pinyin" : true,
15 "keep_original" : true,
16 "limit_first_letter_length" : 16,
17 "lowercase" : true,
18 "remove_duplicated_term" : true
19 }
20 }
21 }
22 }
23}
其中参数含义如下:
参数 | 含义 | 默认值 | 备注 |
---|---|---|---|
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 |
测试拼音分词效果
Plain Text
1GET /test_index/_analyze
2{
3 "text": ["刘德华"],
4 "analyzer": "pinyin_analyzer"
5}
Plain Text
1{
2 "tokens" : [
3 {
4 "token" : "liu",
5 "start_offset" : 0,
6 "end_offset" : 1,
7 "type" : "word",
8 "position" : 0
9 },
10 {
11 "token" : "de",
12 "start_offset" : 1,
13 "end_offset" : 2,
14 "type" : "word",
15 "position" : 1
16 },
17 {
18 "token" : "hua",
19 "start_offset" : 2,
20 "end_offset" : 3,
21 "type" : "word",
22 "position" : 2
23 },
24 {
25 "token" : "刘德华",
26 "start_offset" : 0,
27 "end_offset" : 3,
28 "type" : "word",
29 "position" : 3
30 },
31 {
32 "token" : "ldh",
33 "start_offset" : 0,
34 "end_offset" : 3,
35 "type" : "word",
36 "position" : 4
37 }
38 ]
39}
创建索引mapping
Plain Text
1POST /test_index/_mapping
2{
3 "properties": {
4 "name": {
5 "type": "keyword",
6 "fields": {
7 "pinyin": {
8 "type": "text",
9 "store": false,
10 "term_vector": "with_offsets",
11 "analyzer": "pinyin_analyzer",
12 "boost": 10
13 }
14 }
15 }
16 }
17
18}
写入数据
Plain Text
1POST /test_index/_doc
2{"name":"刘德华"}
查询测试
Plain Text
1POST test_index/_search?q=name.pinyin:刘德华
2POST test_index/_search?q=name.pinyin:刘德
3POST test_index/_search?q=name.pinyin:liu
4POST test_index/_search?q=name.pinyin:ldh
5POST test_index/_search?q=name.pinyin:de+hua