利用kibana可视化DevTools界面实现ElasticSearch文档数据的自定义拼音分词器以及搜索的自动补全功能(来自转载)

一、自定义拼音分词器
        settings是一个配置集合,里面的analyzer就是分词器的集合,my_analyzer是给分词器集合的命名,tokenizer是中文分词器,"filter": "py"是自己命名为py的过滤器,具体的filter看下面的配置,其中"type": "pinyin"是配置了这个过滤器是拼音分词器,keep_full_pinyin是否使用单个文字的拼音(狮子->shi,zi),keep_joined_full_pinyin是否使用中文分词之后的拼音(狮子->shizi),keep_original是否保留中文。
        注意:创建索引分词的时候用my_analyzer,但是搜索分词的时候不能用拼音搜索了,因为一组词的拼音会出现很多词组,如狮子的拼音是shizi,但是虱子的拼音也是shizi,当搜索狮子的时候会根据shizi的拼音也把包含虱子的字样一起搜索出来。
 1.1创建test索引库

PUT /test
{
  "settings": {
    "analysis": {
      "analyzer": { 
        "my_analyzer": { 
          "tokenizer": "ik_max_word",
          "filter": "py"
        }
      },
      "filter": {
        "py": { 
          "type": "pinyin",
          "keep_full_pinyin": false,
          "keep_joined_full_pinyin": true,
          "keep_original": true,
          "limit_first_letter_length": 16,
          "remove_duplicated_term": true,
          "none_chinese_pinyin_tokenize": false
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "name":{
        "type": "text",
        "analyzer": "my_analyzer",
        "search_analyzer": "ik_smart"
      }
    }
  }
}
1.2为上面的索引库添加数据:
POST /test/_doc/1
{
  "id": 1,
  "name": "狮子"
}
POST /test/_doc/2
{
  "id": 2,
  "name": "虱子"
}
 1.3搜索shizi的拼音进行测试
GET /test/_search
{
  "query": {
    "match": {
      "name": "shizi"
    }
  }
}
1.4测试结果

二、自动补全功能的实现

2.1创建索引库,注意:补全的字段必须是completion类型
PUT test2
{
  "mappings": {
    "properties": {
      "title":{
        "type": "completion"
      }
    }
  }
}
2.2示例数据,注意:想要补全的字段是多词条数组
POST test2/_doc
{
  "title": ["Sony", "WH-1000XM3"]
}
POST test2/_doc
{
  "title": ["SK-II", "PITERA"]
}
POST test2/_doc
{
  "title": ["Nintendo", "switch"]
}
 2.3自动补全查询

        text:搜索关键字

        field:补全字段

        skip_duplicates:是否跳过重复的

         size:获取前10条结果,搜索出来的结果以text显示在最顶

POST /test2/_search
{
  "suggest": {
    "title_suggest": {
      "text": "s", 
      "completion": {
        "field": "title", 
        "skip_duplicates": true, 
        "size": 10 
      }
    }
  }
}
 2.4搜索结果

凡是词组里面是S开头的都被搜索出来了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值