4 IK分词器
4.1测试分词器
在添加文档时会进行分词,索引中存放的就是一个一个的词(term),当你去搜索时就是拿关键字去匹配词,最终 找到词关联的文档。
测试当前索引库使用的分词器:
post 发送:localhost:9200/_analyze
{“text”:“测试分词器,后边是测试内容:spring cloud实战”}
结果如下:
会发现分词的效果将 “测试” 这个词拆分成两个单字“测”和“试”,这是因为当前索引库使用的分词器对中文就是单字
分词。 所以搜索测试两字是搜不到的
4.2 安装IK分词器
使用IK分词器可以实现对中文分词的效果。
下载IK分词器:(Github地址:https://github.com/medcl/elasticsearch-analysis-ik)
下载zip:
解压,并将解压的文件拷贝到ES安装目录的plugins下的ik目录下
测试分词效果:
发送:post localhost:9200/_analyze
{“text”:“测试分词器,后边是测试内容:spring cloud实战”,“analyzer”:“ik_max_word” }
4.3 两种分词模式
ik分词器有两种分词模式:ik_max_word和ik_smart模式。
1、细颗粒分词器:ik_max_word
会将文本做最细粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为“中华人民共和国、中华人民、中华、
华人、人民共和国、人民、共和国、大会堂、大会、会堂等词语。
2、粗颗粒分词器:ik_smart
会做最粗粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为中华人民共和国、人民大会堂。
测试两种分词模式:
发送:post localhost:9200/_analyze
{“text”:“中华人民共和国人民大会堂”,“analyzer”:“ik_smart” }
4.4 自定义词库
如果要让分词器支持一些专有词语(比如:测试分词器),可以自定义词库。
没有自定义词汇前搜索在词汇表中没有的专有词语(如 测试分词器),会搜索不到:搜索结果:
iK分词器自带一个main.dic的文件,此文件为词库文件。
自定义词库步骤:
1、在上边的目录中新建一个my.dic文件(注意文件格式为utf-8(不要选择utf-8 BOM)),可以在其中自定义词汇:如 测试分词器
在IKAnalyzer.cfg.xml配置文件中配置my.dic,
重启ES,测试分词效果:
发送:post localhost:9200/_analyze
{“text”:“测试分词器,后边是测试内容:spring cloud实战”,“analyzer”:“ik_max_word” }