好的想法是十分钱一打,真正无价的是能够实现这些想法的人。

关于IK分词,自己的扩展字典的问题

Elasticsearch | 作者 OLALA | 发布于2017年11月02日 | 阅读数:6138

使用IK_smart,由于部分词分割粒度过小,所以在自己的扩展字典mydic.dic里面增加了几个词,重启ES,反而这样查不到了。
把所有数据都删除,重新初始化一遍,新增的几个词就能搜到了。
这是为啥呢?
难道有新的搜索关键词,每次都要重新初始化数据吗?
已邀请:

napoay

赞同来自: laoyang360 jiangtao

是必须要重新初始化数据的。举个例子,“蓝瘦香菇”,这个词如果词库中没有,那么在分词的时候不会分成一个词的,只有加入词库,对后面的文档才生效。更新词库前的文档要想生效,必须重索引。

jiangtao

赞同来自:

@napoay,解释的比较详细,更新词库必须重建历史索引。如果索引量较少,周期较短,可以通过定时全量索引fix 该问题。如果A索引数据量较大,索引周期长,则必须通过增量索引来进行处理。
如何拿到需要增量处理的doc Id,并重建该索引呢?大概提供下我的思路:另建一个以单字切分的索引B,当词库进行定时更新时,去查询B索引,批量获得索引B中的需要更新的doc id后,再去重建A索引中的数据。这样便能在索引和查询阶段都应用都更新词库后的最新索引。PS,查询索引B时,可使用Elasticsearch 的scan and scroll机制,避免对查询结果进行排序,以降低性能开销。

xiao

赞同来自:

你好,为什么我在mydict.dic 添加了美团这个单词,重启ES的时候并没有看到加载我的mydict.dic文件,而且利用API
GET _analyze { "analyzer":"ik_max_word", "text":"美团魅力美丽" }

并没有看到我添加词语的分词效果,请问添加词语后如何才能生效,谢谢
 

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自:

新加词典后,重启es,问题解决

要回复问题请先登录注册