检索出必须包含关键词“我想”的数据。
在写入数据时,ik_max_word 会将文本拆分为“我”、“想我”和“能够”但不存在“我想”,所以导致搜索无果。
我不知道是我的用法不对还是插件分词不够细,难道需要将文本拆分为“我”、“我想”、“我想我”、“我想我能”....
1
zakokun 2020-08-27 11:29:24 +08:00 via iPhone
2 个办法
1. 你把“我想”加到自定词库里面,刷一遍数据,分词插件就能把“我想”作为一个词了 2. 使用单字分词,然后搜索的使用 match_phrase |
2
polaris8977 2020-08-27 11:30:08 +08:00
自己定制一下词库啊, "我想"没在你的词库里面
|
3
murmur 2020-08-27 11:33:56 +08:00
你说的是 ngram 分词,ngram 拆出来应该是
我 想 我 能 够 我想 想我 我能 能够 我想我 想我能 我能够 。。。。。 这种拆词太暴力了,很少有这么拆的,效率太低结果也不好看,说白了还是字典拆词不行,可以考虑下用算法的,以前我们就用 crf 分词,字典分词效率高但是准确度不行 |
4
Pengxiguaa OP @zakokun 感谢
|
5
Pengxiguaa OP @polaris8977 感谢
|
6
Pengxiguaa OP @murmur 感谢
|
7
KalaSearch 2020-08-27 13:18:08 +08:00
CJK 语言做查询的时候如果非常在乎召回的话,ngram 也是可以考虑的(类似你这写的:我,我想...)
如果索引本身没那么大的话,对中文分词来说 N 取个 10 就完全够了,这样索引大小最多也就是 10 倍。目前 SSD 这么便宜的状况下问题不大 当然如果实在索引大小有限制(边缘计算、嵌入之类情景,或者数据真的太大)那可以像一楼说的自定义一些词库。 如果是以学习为目的的话推荐读: https://github.com/ysc/cws_evaluation 如果是在做项目需要搜索的话,且不想折腾的话,自荐下我们做的卡拉搜索 kalasearch.com 不用自己搞分词之类,全托管了。作为工程师的你时间很宝贵,应该用来学习或者解决业务问题,搜索可以交给我们 :) |