ElasticSearch安装分词插件IK

前言

ElasticSearch本身带有分词插件,对英文支持的很好,但对中文支持的就不好了,把中文都分成了单个文字
在这里插入图片描述

所以我们安装一个支持中文的插件IK

一、下载安装IK

二、测试使用

我们使用postman来测试
在这里插入图片描述

报错了,analyzer参数可能是错的,我们查一下文档 https://github.com/medcl/elasticsearch-analysis-ik
在这里插入图片描述

  • 我们修改一下analyzer参数为 ik_max_word,也可以改为ik_smart
    在这里插入图片描述
{
    "tokens": [
        {
            "token": "postman",
            "start_offset": 0,
            "end_offset": 7,
            "type": "ENGLISH",
            "position": 0
        },
        {
            "token": "是",
            "start_offset": 7,
            "end_offset": 8,
            "type": "CN_CHAR",
            "position": 1
        },
        {
            "token": "一个",
            "start_offset": 8,
            "end_offset": 10,
            "type": "CN_WORD",
            "position": 2
        },
        {
            "token": "一",
            "start_offset": 8,
            "end_offset": 9,
            "type": "TYPE_CNUM",
            "position": 3
        },
        {
            "token": "个",
            "start_offset": 9,
            "end_offset": 10,
            "type": "COUNT",
            "position": 4
        },
        {
            "token": "不错",
            "start_offset": 10,
            "end_offset": 12,
            "type": "CN_WORD",
            "position": 5
        },
        {
            "token": "的",
            "start_offset": 12,
            "end_offset": 13,
            "type": "CN_CHAR",
            "position": 6
        },
        {
            "token": "测试",
            "start_offset": 13,
            "end_offset": 15,
            "type": "CN_WORD",
            "position": 7
        },
        {
            "token": "试工",
            "start_offset": 14,
            "end_offset": 16,
            "type": "CN_WORD",
            "position": 8
        },
        {
            "token": "工具",
            "start_offset": 15,
            "end_offset": 17,
            "type": "CN_WORD",
            "position": 9
        }
    ]
}	

这次是正确的啦,是我们想要的结果了。

三、其他

1、附带了解一下Analyzer与Tokenizer

  • https://blog.csdn.net/u014078154/article/details/80135703
  • Analyzer包含两个核心组件,Tokenizer以及TokenFilter。两者的区别在于,前者在字符级别处理流,而后者则在词语级别处理流。Tokenizer是Analyzer的第一步,其构造函数接收一个Reader作为参数,而TokenFilter则是一个类似的拦截器,其参数可以是TokenStream、Tokenizer。
    • 1)Tokenizer
        输入为Reader的TokenStream,其子类必须实现incrementToken()函数,并且在设置属性(attributes) 必须调用AttributeSource中的clearAttributes()方法。

2、ik_max_word 和 ik_smart 什么区别?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值