elasticsearch自定义企业词典
Posted 我要用代码向我喜欢的女孩表白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了elasticsearch自定义企业词典相关的知识,希望对你有一定的参考价值。
我们中文分词用的是ik,但是ik只是对基本的中文词进行了分词,而对于企业或者人名没有进行分词。
比如,我搜索中国平安,那么ik只能分成中国、平安
![](https://image.cha138.com/20230310/ce64495ec1dc49e092f0fdaf4ea5d8e5.jpg)
如果这样,这肯定是不行滴!
接下来,俺就教你,如何创建词典。
首先写一个词典company.dic,然后写上你要识别的词。
![](https://image.cha138.com/20230310/2ddd30c0e0d340628a75ffe58a542b28.jpg)
文件的格式别忘记改成utf-8编码以及unix(因为我的es装的是linux里)
![](https://image.cha138.com/20230310/f4d406934cb64e069ce25868bc266778.jpg)
打开Es的插件目录添加dict,并且重启
进入ik的配置目录,并且修改
/ES安装好的目录/plugins/ik/config/IKAnalyzer.cfg.xml
<entry key="ext_dict">company.dic</entry>
将company.dic上传到 /ES安装好的目录/plugins/ik/config/目录下
重启es
![](https://image.cha138.com/20230310/eb0bb066106b4bb59a2c2684156b445c.jpg)
测试
![](https://image.cha138.com/20230310/2060b080342e4021a1c1dfcf67aceea7.jpg)
![](https://image.cha138.com/20230310/2074bcdbed4b4cca8a1b5617272cd498.jpg)
![](https://image.cha138.com/20230310/6966b0dcf7194e45bdb393175dc23f08.jpg)
bug:如果发现_search时候搜索不到相对应的分词,就是你索引没有建立好,建立索引时候就要采用ik分词。
请删除索引,然后在建立
删除curl -XDELETE -u elastic:elasticpasswd http://192.168.9.102:9200/index_name
建立
![](https://image.cha138.com/20230310/ef85b9f8245546aebc9fb5fed109c515.jpg)
"settings":
"number_of_shards": 5,
"number_of_replicas": 1,
"index":
"analysis.analyzer.default.type" : "ik_max_word"
最后一定要记住这张图
数据是在插入后就被分词,(所以后期无论你怎么改搜索,他也是搜不到),索引要刚开始就建立好,否则是会以默认分词把数据分词(而不是ik等中文词库)
![](https://image.cha138.com/20230310/f7cd6d65f2094fe3834250aa6a4477aa.jpg)
参考:https://www.cnblogs.com/dmzna/p/14913813.html
https://www.cnblogs.com/xinwei0909/p/9453323.html
以上是关于elasticsearch自定义企业词典的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch:自定义应用程序的日志记录 - Elastic Common Schema
Docker 部署 分布式搜索引擎 Elastic Search