ek插件------ik中文分词器的使用
程序员文章站
2022-07-12 13:43:13
...
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/ aaa@qq.com:/home/newdist/elasticsearch-6.3.1/plugins/ik/
6、重启es
7、再次去head插件中分析一下“洛云凡”和“洛云凡“一号
成功!
推荐阅读
-
Lucene-分词器简介及IK分词器的使用
-
ek插件------ik中文分词器的使用
-
白话Elasticsearch28-IK中文分词器的安装和使用
-
Lazy Load 延迟加载图片的jQuery插件中文使用文档
-
OrientDB使用Lucene的全文索引,并且使用中文分词器
-
ES第九天-分词,自定义分析器,中文分词器ik与基于中文分词器ik的全文检索
-
Lazy Load 延迟加载图片的jQuery插件中文使用文档_jquery
-
Lazy Load 延迟加载图片的jQuery插件中文使用文档_jquery
-
photoshop cs5 官方中文正式原版下载 在PHP中使用反射技术的架构插件使用说明
-
solr6.6搜索环境搭建、IK中文分词、同义词、拼音、solrj的使用