Elasticsearch的ik分词器安装和验证

1、什么是分词器
        把文本转换为一个个的单词,分词称之为analysis。es默认只对英文语句做分词,中文不支持,每个中文字都会被拆分为独立的个体。
2、es内置分词器

  • standard:默认分词,单词会被拆分,大小会转换为小写。
  • simple:按照非字母分词。大写转为小写。
  • whitespace:按照空格分词。忽略大小写。
  • stop:去除无意义单词,比如the/a/an/is…
  • keyword:不做分词。把整个文本作为一个单独的关键词。

3、ik中的两种分词器

  • ik_max_word:会将文本做最细粒度的拆分,比如会将“我是中国人”拆分为“我,是,中国人,中国,国人”,会穷尽各种可能的组合,适合 Term Query;
  • ik_smart:会做最粗粒度的拆分,比如会将“我是中国人”拆分为“我,是,中国人”,适合 Phrase 查询。

4、自定义中文分词库
      中文词汇复杂繁多,ik分词器也不能保证所有情况下都能有效的分词,例如:“骚年在认真的学习”,就会被拆分成“骚,年在,认真的,学习”,很明显“年在”并不是一个词,同样的一些专属名词也不能很有效的分词,比如:“印象笔记”,“掘金网“等等,这时候我们就需要为分词器,添加自定义词汇。
5、安装ik分词器

1)下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

选择对应的版本,我之前安装的elasticsearch是7.4.2版本,ik也是这个版本。

2)下载到plugins文件夹下

使用命名进入es容器内部

docker exec -it 0d3a094476dd /bin/bash

进入后直接切换到plugins目录,通过命令下载ik压缩包到此目录

wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip

如果出现wget没有安装,就先安装再下载。

#安装wget
yum install wget

最后下载完成后可以看到目录下有elasticsearch-analysis-ik-7.4.2.zip文件。

3)解压文件到ik文件夹下,重启es。

unzip elasticsearch-analysis-ik-7.4.2.zip -d ik

#赋予权限
chmod -R 777 ik/

检查ik,进入bin目录,查看

elasticsearch-plugin list

重启es

#docker下执行
docker restart elasticsearch

#linux下执行
./bin/elasticsearch

4)验证ik

POST _analyze
{
  "analyzer": "ik_smart",
  "text": "我是中国人"
}


POST _analyze
{
  "analyzer": "ik_max_word",
  "text": "我是中国人"
}

6、自定义分词库

1)在nginx/html下创建es目录,编写fenci.txt文档,插入要分词的内容。

mkdir es

2)nginx访问

3)修改ik分词器配置文件、添加自定义词典

cd /home/data/elasticsearch/plugins/ik/config

修改IKAnalyzer.cfg.xml文件

vi IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
        <comment>IK Analyzer 扩展配置</comment>
        <!--用户可以在这里配置自己的扩展字典 -->
        <entry key="ext_dict">custom.dic</entry>
         <!--用户可以在这里配置自己的扩展停止词字典-->
        <entry key="ext_stopwords"></entry>
        <!--用户可以在这里配置远程扩展字典 -->
        <!--<entry key="remote_ext_dict">location</entry> -->
        <!--用户可以在这里配置远程扩展停止词字典-->
        <!--<entry key="remote_ext_stopwords">http://xxx.com/xxx.dic</entry> -->
</properties>
#备份 
cp IKAnalyzer.cfg.xml   IKAnalyzer.cfg.xml20200724

修改为一下内容,重启es

<properties>
        <comment>IK Analyzer 扩展配置</comment>
        <!--用户可以在这里配置自己的扩展字典 -->
        <entry key="ext_dict"></entry>
         <!--用户可以在这里配置自己的扩展停止词字典-->
        <entry key="ext_stopwords"></entry>
        <!--用户可以在这里配置远程扩展字典 -->
        <entry key="remote_ext_dict">http://172.16.175.211/es/fenci.txt</entry> 
        <!--用户可以在这里配置远程扩展停止词字典-->
        <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

4)验证自定义分词

POST _analyze
{
  "analyzer": "ik_max_word",
  "text": "乔碧萝殿下"
}

如果有其他的分词可以自行在fenci.txt文件加的。

 

 

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liangshitian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值