elasticSearch的IK分词器
1、为什么要用IK分词器:
es在创建倒排索引时需要对文档分词;在搜索时,需要对用户输入内容分词。但默认的分词规则对中文处理并不友好。
测试标准分词器对中英文混合的分词效果:
不管使用标准分词器还是英文、中文分词器,对中文的分词效果都是不友好的,被分成了一个一个的汉字,这样的分词是不理想的。因为如果输入的是“手机”,那么就分成了“手”和“机”,那么查询记录的时候,输入手机就会把所有包含“手”和“机”的记录都给查询出来。
处理中文分词,一般使用IK分词器。
IK分词器:GitHub网址
2、测试IK分词器:
2.1 IK分词器的两种模式:
ik_smart:最少切分,粗粒度,分词不够细,文档没有那么容易给搜索到,但占用内存少,可以缓存更多的数据,查询效率更高一点。
ik_max_word:最细切分,细粒度,分词够细,文档容易给搜索到,但占用内存大。
2.2 使用ik_smart模式:
2.3 使用ik_max_word模式:
3、ik分词器的拓展和停用字典:
3.1 背景:
分词器底层应该是依赖于一个字典,但这个字典中的词汇,肯定不可能涵盖我们生活中所有的词汇,而且我们使用了很多新生的词汇,这些词汇在字典中查不到的时候,分词器就会逐个字逐个字的分词,这个时候就需要对分词器进行拓展。但比如“的”这些字眼也会给分词出来,无意义且占空间,所以应该停用这种分词。
3.2 分词器的拓展:
ext.dic文件需要自己创建,创建的位置:和IKAnalyzer.cfg.xml同个目录下,即config目录下。
3.3 停用字典:
stopword.dic在config目录下有,无需自己创建。