ElasticsearchBES

    analysis-pinyin拼音分词插件

    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中文分词插件与动态更新词典
    下一篇
    ingest attachment插件