栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ElasticSearch:集成IK分词器以及基本使用

ElasticSearch:集成IK分词器以及基本使用

IK分词器的简单介绍

把一段中文划分成一个个的关键字,我们在搜索时候会把自己的语句进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作 ,默认的中文分词是将每个字分成一个词。目前比较流行的是ik分词器是一个好用的中文分词器。

下载IK分词器

根据你的Es的版本来下载对应版本的IK,这里我使用的是7.16.2的ES,所以就下载ik-7.16.2.zip的文件(这种版本对应的整挺好)
下载网址

ElasticSearch:简单介绍以及使用Docker部署ElasticSearch 和 Kibana

我以这篇博客为基础,在服务器新创建一个plugins文件夹,好放ik插件,然后挂载

mkdir -p /usr/local/elasticsearch/plugins/ik

新创建的文件夹也要赋予用户操作权限

chmod -R 777 /usr/local/elasticsearch/plugins/ik

使用xftp将文件拷贝到服务器的上述路径之后,解压

//解压
unzip elasticsearch-analysis-ik-7.16.2.zip
//完事之后,删除压缩包
rm -rf elasticsearch-analysis-ik-7.16.2.zip

停止上面那篇博客创建的容器并删除

docker stop 容器ID/容器名
docker rm 容器ID/容器名

重新创建容器服务运行

docker run -itd -p 9200:9200 -p 9300:9300 -p 5601:5601 
-v /usr/local/elasticsearch/config/jvm.options:/home/elasticsearch/elasticsearch-7.16.2/config/jvm.options 
-v /usr/local/elasticsearch/config/elasticsearch.yml:/home/elasticsearch/elasticsearch-7.16.2/config/elasticsearch.yml 
-v /usr/local/elasticsearch/data:/home/elasticsearch/elasticsearch-7.16.2/data 
-v /usr/local/elasticsearch/plugins://home/elasticsearch/elasticsearch-7.16.2/plugins 
--name EsKibana  nshou/elasticsearch-kibana

查看插件

http://IP:9200/_cat/plugins

测试IK分词器

使用kibana的Dev Tools工具来测试IK分词器

http://IP:5601/app/dev_tools#/console

IK提供了两种分词算法: ik_smart和ik_max_word

ik_smart:最少切分

请求一个分词器,填好分词要求

GET _analyze
{
  "analyzer": "ik_smart",
  "text": "搜索引擎"
}
ik_max_word: 最多切分
GET _analyze
{
  "analyzer": "ik_max_word",
  "text": "搜索引擎"
}

不过这也是看你输入的text来的,有时候最少切分和最多切分的结果差不多

像如下句子就切分得差不多,当是一个名词的时候,像上面那样好像就切分的区别大一些

GET _analyze
{
  "analyzer": "ik_smart",
  "text": "我来试试这个切分算法"
}

GET _analyze
{
  "analyzer": "ik_max_word",
  "text": "我来试试这个切分算法"
}
自定义词典

分词算法毕竟是算法,不可能穷尽所有我们的需求。
有些我们自己的土话可能就不需要IK分词器将它分割开

如下例子不管使用那个算法都分开了

GET _analyze
{
  "analyzer": "ik_smart",
  "text": "三克油"
}

GET _analyze
{
  "analyzer": "ik_max_word",
  "text": "三克油"
}

所以我们要自定义一个三克油的词来让IK分词器别把他们分割开了

在如下目录下有着相应的配置文件

plugins/ik/config

下面.dic后缀的都是字典

我们随便进一个main.dic看看,可以看见都是词语

IKAnalyzer.cfg.xml 配置文件
我们修改这个配置文件




	IK Analyzer 扩展配置
	
	ext_dict.dic
	 
	
	
	
	
	


并在config 这个目录下面新建一个ext_dict.dic文件

将自定义的词语放进去

修改文件之后,我们需要重启ElasticSearch

docker restart 容器ID/容器名

再次使用kibana 的dev tools ,不管那个算法策略都有三克油这个词

GET _analyze
{
  "analyzer": "ik_smart",
  "text": "三克油"
}

GET _analyze
{
  "analyzer": "ik_max_word",
  "text": "三克油"
}

(写博客主要是对自己学习的归纳整理,资料大部分来源于书籍、网络资料、官方文档和自己的实践,整理的不足和错误之处,请大家评论区批评指正。同时感谢广大博主和广大作者辛苦整理出来的资源和分享的知识。)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/734264.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号