ElasticSearch安装ik中文分词器

1.前言

使用ES作为搜索引擎,不得不说ES默认的中文分词做的不怎么好,所以安装了网上推荐的ik中文分词器
项目git地址

2.项目环境:

JDK 1.8
Spring Boot 2.0.0.RELEASE
ElasticSearch 5.6.8
elasticsearch-analysis-ik-5.6.8
Deepin Linux 15.5

3.安装IK 中文分词器

官方给出了两种安装方法,这里再给出一种本地安装方法

1.下载

下载地址: https://github.com/medcl/elasticsearch-analysis-ik/releases
下载和ElasticSearch版本号对应的版本,解压放到 your-es-root/plugins/

2.使用elasticsearch-plugin安装( version > v5.5.1 ):

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.6.8/elasticsearch-analysis-ik-5.6.8.zip

3.本地安装

https://github.com/medcl/elasticsearch-analysis-ik/releases 下载和ElasticSearch版本号对应的版本的zip包
放到一个位置,比如我放到的是elasticsearch的解压目录下,然后在es目录下运行终端

cd ${ES_HOME}
./bin/elasticsearch-plugin install file:///home/suddev/elasticsearch/elasticsearch-analysis-ik-5.6.8.zip

注意,install之后的参数表示ik插件安装包所在位置,格式为file://+文件位置.zip 注意斜杠的数量
重启ElasticSearch

4.测试分词器功能

首先,ik分词器有两个ik_max_wordik_smart,官方给出解释如下
ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合;
ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”。
测试-直接流量器输入url使用get

http://localhost:9200/_analyze?analyzer=ik_max_word&pretty=true&text=中华人民共和国国歌

输出结果

{
    "tokens": [
        {
            "token": "中华人民共和国",
            "start_offset": 0,
            "end_offset": 7,
            "type": "CN_WORD",
            "position": 0
        },
        {
            "token": "中华人民",
            "start_offset": 0,
            "end_offset": 4,
            "type": "CN_WORD",
            "position": 1
        },
        {
            "token": "中华",
            "start_offset": 0,
            "end_offset": 2,
            "type": "CN_WORD",
            "position": 2
        },
        {
            "token": "华人",
            "start_offset": 1,
            "end_offset": 3,
            "type": "CN_WORD",
            "position": 3
        },
        {
            "token": "人民共和国",
            "start_offset": 2,
            "end_offset": 7,
            "type": "CN_WORD",
            "position": 4
        },
        {
            "token": "人民",
            "start_offset": 2,
            "end_offset": 4,
            "type": "CN_WORD",
            "position": 5
        },
        {
            "token": "共和国",
            "start_offset": 4,
            "end_offset": 7,
            "type": "CN_WORD",
            "position": 6
        },
        {
            "token": "共和",
            "start_offset": 4,
            "end_offset": 6,
            "type": "CN_WORD",
            "position": 7
        },
        {
            "token": "国",
            "start_offset": 6,
            "end_offset": 7,
            "type": "CN_CHAR",
            "position": 8
        },
        {
            "token": "国歌",
            "start_offset": 7,
            "end_offset": 9,
            "type": "CN_WORD",
            "position": 9
        }
    ]

效果还是很满意的

5.Spring Data Elasticsearch中使用ik中文分词器

在字段上加上@Field并配置参数analyzer或searchAnalyzer为ik分词器

@Document(indexName = "idx_persons",type = "person")
public class Person {

    @Id
    private String id;

    @Field(analyzer = "ik_max_word",searchAnalyzer = "ik_max_word")
    private String username;

    // getters && setters
}

欢迎留言交流

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值