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

          Elasticsearch BES

          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插件