ik分词器介绍
es搜索英文时,可以很简单的根据空格来分词。因为英文大部分就是空格来隔开。
而遇到中文,这个分词就哑火了。。es只能一个字一个字的分词。
中文实在难拆字,因为各种字组合在一起,可能意思就大不一样了。所以我们用ik的分词词库。
例子:英文搜索 What’s your name。es分词将会分成 3个词
[‘What’s’,’your’,’name’]
例子:中文搜索 你叫什么名字。es将每个字都拆解
[‘你’,’叫’,’什’,’么’,’名’,’字’]
例子:使用ik分词器 使用粗粒度分词搜索 你叫什么名字,将会被分词
[‘你’,’叫什么’,’名字’]
IK分词器有2个粒度,一个粗粒度,1个细粒度。
粗粒度 1串搜索字符,分完就完了。
细粒度 1串搜索词,匹配各种分词可能性分词。
例如搜索:进口红酒
粗粒度:[‘进口’,’红酒’]
细粒度:[‘进口’,’口红’,’红酒’],如果分词库里,酒甚至单独一个词,那么可能分成 [‘进口’,’口红’,’红酒’,’酒’]
当然各有优点。
ik分词器下载 安装配置
下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
在es的plugins目录下,创建一个 ik目录。并把ik分词器解压后的内容拖到ik目录里面
重启es。
自定义分词
如有自定义分词需求,请在ik分词器的config目录,创建个自定义分词库的文件。 例如abc.dic 记得一定要用utf-8编码。
里面词库自己配置。然后打开config目录下的“IKAnalyzer.cfg.xml”
找到<entry key="ext_dict"></entry> 这行改成读取你自定义扩展<entry key="ext_dict">abc.dic</entry>
修改完记得重启es。