请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

ik分词器中suffix.dic后缀词典,一般是怎么使用的呀

ik分词器中suffix.dic后缀词典,一般是怎么使用的呀,我自己手动在suffix.dic中增加词之后,感觉没有什么作用一样,需求就是我要提取帖子内容中的景点名,然后有个景点叫 理塘,理塘其实也是个镇,然后有人在帖子中写的我到了理塘,有的人写的是我到了理塘镇,我想用自定义分词的方式,将用户不管是写理塘,还是写了理塘镇,都算是一个keyword,我不知道这个需求用suffix.dic实现可以吗,谢谢老师

正在回答 回答被采纳积分+3

1回答

少林码僧 2022-07-21 06:47:34

首先镇这个词已经包含在suffix.dic词典中,不管它在不在词典中,对于ik_max_word而言都是会单独将镇这个词做分词的,ik_max_word是最细粒度的分词,词库中有镇会单独拆分,没有也会单独拆分。

如果想达到你这种索引分词效果,可以这样实现:

1. tokenizer使用ik_smart

2. 在自定义词库中添加理塘和理塘镇这两个词

具体添加方法为:

1. 在config/analysis-ik下新建自定义词库custom.dic

内容如下:

理塘

理塘镇

2. config/analysis-ik/IKAnalyzer.cfg.xml配置文件中增加自己本地扩展词库的路径

修改后的配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">

<properties>

<comment>IK Analyzer 扩展配置</comment>

<!--用户可以在这里配置自己的扩展字典 -->

<entry key="ext_dict">custom.dic</entry>

<!--用户可以在这里配置自己的扩展停止词字典-->

<entry key="ext_stopwords"></entry>

<!--用户可以在这里配置远程扩展字典 -->

<!-- <entry key="remote_ext_dict">words_location</entry> -->

<!--用户可以在这里配置远程扩展停止词字典-->

<!-- <entry key="remote_ext_stopwords">words_location</entry> -->

</properties>



上面改动位置是将

将<entry key="ext_dict"></entry>改为

<entry key="ext_dict">custom.dic</entry>

来指定本地扩展词库的位置


然后重启ES集群进行验证:

POST _analyze

{

  "text": ["我到了理塘镇"],

  "analyzer": "ik_smart"

}


从用户体验来分析,如果用户帖子中出现理塘镇,使用理塘搜索应该也需要能够召回,所以这里可以使用ik_max_word分词,再配合match_phrese,或者match and查询来实现会更合理一些

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信