索引分词使用 ik_max_word,es 里有些数据是连续的汉字,如
哈哈哈哈哈哈...
搜索的时候,输入 [哈哈] 或 [哈哈哈] 或 [哈哈哈哈] 一般能搜索到,但如果搜索单个字 [哈] ,却搜索不到。
同样的,有一串数字字符 [ 1111 ] ,只能用 [ 1111 ] 搜索到, [ 1 ] [ 11 ] [ 111 ] 都搜索不到。
有没有大佬给点思路如何解决?
1
misaka19000 2019-04-03 11:32:58 +08:00 via Android
先看一下分词的结果是什么,看这个句子被分成了哪些词
|
2
rogwan 2019-04-03 11:35:05 +08:00
你这个的结果像是 ik_smart 索引的,不像是 ik_max_word 出来的结果啊。你换个分词重新索引一下试试
|
3
reid2017 OP |
4
reid2017 OP es 版本:6.5.1
|
5
reid2017 OP 三个字 [哈哈哈] 也是没有单字 [哈]
|
6
lawler 2019-04-03 11:41:11 +08:00
哈,不是词。
意思就是,你的词库里没有哈。 |
7
qping 2019-04-03 11:49:36 +08:00 1
比如“你好,您的发票号是 11111 ”,经过分词器,把 “ 11111 ” 分成了一个词,建立倒排索引,然后“ 11111 ”就可以搜到了。 “ 1 ” 搜不到是因为没有分出 “ 1 ” 这个词,如果所有单个词都建索引,索引会特别大。你可以考虑下你的需求,真的需要 输入“ 1 ” 搜到所有文档吗。
1、能不能输入“ 1 ”时出现下拉框,做联想提醒呢,给用户推荐一些热门的关键词。比如淘宝搜索“女”,会出现下拉列表:“女装”、“女鞋”、“女包” 2、对数字或者文字按建立索引,比如 “ 1234 ” 分词为 "12" "23" "34",减少索引的量,同时搜索的时候输入 "12" 也能够得到相关的结果 3、实在不行,可以模糊搜索 |
11
leriou 2019-04-03 12:05:57 +08:00
不管是 ik_smart 还是 ik_max_word 都不会把 哈 单独做分词, es 单个字段可以配置多个分词器, 在配置个标准分词器就可以了, 搜索的时候同时搜索多个分词字段, 权重自己调一下就行了
|