分词:把一段中文或者别的划分成一个一个的关键字,我们在搜索的时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词是将每个字看成一个词,比如"我爱魏一鹤"会被分成"我",“爱”,“魏”,“一”,“鹤”,这显然是不符合要求的,索引我们需要安装中文分词器IK来解决这个问题
如果要使用中文,建议使用ik分词器
IK提供了两个分词算法,ik_smart和ik_max_world,其中ik_smart为最少切分,ik_max_wold为最细颗粒度划分,一会都会分别来测试
下载网址:https://github.com/medcl/elasticsearch-analysis-ik
下载到本地,放入es插件中即可,这里我在es的plugins目录下创建一个IK目录
解压缩,目录如下
然后重启观察ES
注意:没有使用ik分词器插件的时候黑窗口会提示no plugins loaded(没有插件加载)
我们也可以使用命令(elasticsearch-plugin list)查看es下的全部加载的插件
elasticsearch-plugin list
分词结果比较少
GET _analyze
{
"analyzer": "ik_smart",
"text": "中国共产党"
}
分词结果比较多,组成各种结果,穷尽词库的可能!
再看个例子,把我们的句子换成 超级喜欢魏一鹤学习Java
首先看最少分词
然后是最细颗粒度分词
问题来了 我们输入超级喜欢魏一鹤学习Java,发现魏一鹤被拆开了,这种需要自己加入到分词器字典中的词如何处理呢?
找到并且打开IKAnalyzer.cfg分词器配置文件
自己自定义新建一个dic文件,一个dic就算一个字典,ik自带的字典是远远不够用的,我们需要手动去创建字典
新增字典项内容并且保存
然后把我们自定义配置的字典加入到配置文件让字典生效
配置完之后保存,然后重启es,注意观察,在重启es的时候会发现黑窗口已经加载我们自定义的字典weiyihe.dic
重启kibana,再次测试使用过自定义字典之后魏一鹤是否被分割
不管是哪种分词,魏一鹤都没被分割!说明我们自定义字典配置成功!
以后需要什么词汇,直接在我们的weiyihe.dic字典中去定义即可使用