我们中文分词用的是ik,但是ik只是对基本的中文词进行了分词,而对于企业或者人名没有进行分词。
比如,我搜索中国平安,那么ik只能分成中国、平安
如果这样,这肯定是不行滴!
接下来,俺就教你,如何创建词典。
首先写一个词典company.dic,然后写上你要识别的词。
文件的格式别忘记改成utf-8编码以及unix(因为我的es装的是linux里)
打开Es的插件目录添加dict,并且重启
进入ik的配置目录,并且修改
/ES安装好的目录/plugins/ik/config/IKAnalyzer.cfg.xml
<entry key="ext_dict">company.dic</entry>
将company.dic上传到 /ES安装好的目录/plugins/ik/config/目录下
重启es
测试
bug:如果发现_search时候搜索不到相对应的分词,就是你索引没有建立好,建立索引时候就要采用ik分词。
请删除索引,然后在建立
删除curl -XDELETE -u elastic:elasticpasswd http://192.168.9.102:9200/index_name
建立
{
"settings": {
"number_of_shards": 5,
"number_of_replicas": 1,
"index": {
"analysis.analyzer.default.type" : "ik_max_word"}
}
}
最后一定要记住这张图
数据是在插入后就被分词,(所以后期无论你怎么改搜索,他也是搜不到),索引要刚开始就建立好,否则是会以默认分词把数据分词(而不是ik等中文词库)