最近学习es的使用,在VMware上面搭建了es的集群,随即打算安装IK分词器:
1.在VMware中将windows的文件拖动到虚拟机中一般通过VMtools,对于CentOS系统,需要安装对应的图形界面才能拖动文件。然而,出于未知原因,本次进行文件拖动会出现文件缺损的情况,需要重装VMtools。但是我拒绝,我下载了WinSCP来进行文件的传输。
2.在CSDN上面下载了IK分词器对应es7的zip包,看网上的教程是可以直接将其复制到plugins/ik的文件夹下的(亲测不行),会报如下的错误:
显然地址是错的,经过资料查询,包是直接解压到plugins的目录下面即可。
成功安装分词器。
IK分词器的使用
给index指定IK分词器:
代码语言:javascript复制PUT my_index
{
"settings": {
"analysis": {
"analyzer": {"default":{"type":"ik_max_word"}}
}
}
}
给field指定IK分词器:
代码语言:javascript复制{
"settings": {
"number_of_shards": 9,
"number_of_replicas": 1,
"analysis": {
"analyzer": {
"default": {
"type": "ik_max_word"
}
}
}
},
"mappings": {
"dynamic": "strict",
"properties": {
"title": {
"type": "text"
},
"operate_date": {
"type": "date"
},
"writer": {
"type": "text",
"analyzer": "standard"
},
"content": {
"type": "text"
}
}
}
}
我们可以了解到ik分词器有两种分词选择:ik_max_word和ik_smart
我查找了相关的资料,在此进行引用:https://blog.csdn.net/weixin_44062339/article/details/85006948
1、ik_max_word
会将文本做最细粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为“中华人民共和国、中华人民、中华、华人、人民共和国、人民、共和国、大会堂、大会、会堂等词语。
2、ik_smart
会做最粗粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为中华人民共和国、人民大会堂。
测试两种分词模式的效果:
发送:post localhost:9200/_analyze
测试ik_max_word
{“text”:“中华人民共和国人民大会堂”,“analyzer”:“ik_max_word” }
测试ik_smart
{“text”:“中华人民共和国人民大会堂”,“analyzer”:“ik_smart” }
其他的常见分词器和分词效果汇总:https://segmentfault.com/a/1190000011065897