analysis-pinyin拼音分词插件
所有文档
menu

Elasticsearch BES

analysis-pinyin拼音分词插件

产品详情自助选购

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_chinesekeep_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
上一篇
上传与安装自定义插件
下一篇
IK中文分词插件与动态更新词典