ek插件------ik中文分词器的使用

ik分词器的使用

ik分词器的安装
离线安装:
	1、https://github.com/medcl/elasticsearch-analysis-ik/releases下载与es对应版本的ik
	2、解压到es/plugins目录下面
	3、分发到另外的机器上面(目录也是es/plugins)
	4、重启es
在线安装:
	1、在es目录下面输入
	./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.1/elasticsearch-analysis-ik-6.3.1.zip
	2、安装成功后会在plugins下面自动生成ik相关的目录
	3、重启es

下面测试ik分词器是否安装成功。

我们分别使用kibana和head插件

在这里插入图片描述

在这里插入图片描述

此时说明ik分词器设置成功

下面测试对某个索引库进行分词器设置

首先建一个索引库

curl -XPUT http://mini1:9200/chinese

设置索引库下一个type的分词器

//添加分词器的时候要写上type类型
//注意这只是给content字段添加分词器

curl -XPOST http://mini1:9200/chinese/hot/_mapping -H 'Content-Type:application/json' -d'
					{
							"properties": {
								"content": {
									"type": "text",
									"analyzer": "ik_max_word",
									"search_analyzer": "ik_max_word"
								}
							}

					}'

注意:

针对于es集群中已经存在的历史索引库,不会进行重新分词,分词插件不起作用。
或者是新建的索引库,不指定特定的中文分词插件,也是用默认的。

如果你想新增加字段,比如title,并且给它设置分词器,
需要提前给这个字段设置分词器,然后插入数据,否则会报错
curl -XPOST http://mini1:9200/chinese/hot/_mapping -H 'Content-Type:application/json' -d'
					{
							"properties": {
								"title": {
									"type": "text",
									"analyzer": "ik_max_word",
									"search_analyzer": "ik_max_word"
								}
							}

					}'

插入几条数据(注意,对某个字段设置分词器时,要先设置,然后插入数据)

curl  -H 'Content-Type:application/json' -XPOST http://mini1:9200/chinese/hot/1 -d'{"content":"美国留给伊拉克的是个烂摊子吗"}'

curl  -H 'Content-Type:application/json' -XPOST http://mini1:9200/chinese/hot/2 -d'{"content":"公安部:各地校车将享最高路权"}'

curl  -H 'Content-Type:application/json' -XPOST http://mini1:9200/chinese/hot/3 -d'{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}'

curl  -H 'Content-Type:application/json' -XPOST http://mini1:9200/chinese/hot/4 -d'{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}'

通过java api查询一下

SearchResponse response = client.prepareSearch("chinese")
                .setTypes("hot")
                .setQuery(QueryBuilders.termQuery("content", "中国"))//termQuery:根据词来进行查询
                .get();

        //分析结果
        for (SearchHit hit : response.getHits()) {
            System.out.println(hit.getSourceAsString());
        }

在这里插入图片描述
成功!

注:

如果嫌每次手动给索引库设置分词器麻烦的话,我们也可以通过更改es的配置文件,来指定默认es分词器

可以通过如下方式简化使用ik分词插件
修改ES_HOME/config/elasticsearch.yml文件,添加index.analysis.analyzer.default.type: ik(把IK设置为默认分词器,这一步是可选的)

自定义词库的设置

有时候默认词库里面的词并不能满足我们的需求,这就需要我们自定义我们的词库。

比如,我现在对“洛云凡”进行分词分析,发现它并不是一个词。

在这里插入图片描述

接下来我定义自己的分词库。

步骤:

1、进入ik插件目录下的config

2、创建一个目录(我这里创建名为"zidingyi"的目录),用于放我们自定义的词库(当然不创建也可以,到时候可以在IKAnalyzer.cfg.xml指定路径)

3、在zidingyi目录下面创建一个以.dic结尾的文件

cd zidingyi
vi mydic.dic

我加入这两个词:
洛云凡
洛云凡一号

4、配置IKAnalyzer.cfg.xml

在这里插入图片描述

5、发到其他两台

 scp -r config/ hadoop@mini2:/home/newdist/elasticsearch-6.3.1/plugins/ik/

6、重启es

7、再次去head插件中分析一下“洛云凡”和“洛云凡“一号

成功!


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值