V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
reid2017
V2EX  ›  Elasticsearch

es 搜索问题请教

  •  
  •   reid2017 · 2019-04-03 11:21:43 +08:00 · 3903 次点击
    这是一个创建于 2071 天前的主题,其中的信息可能已经有所发展或是发生改变。

    索引分词使用 ik_max_word,es 里有些数据是连续的汉字,如
    哈哈哈哈哈哈...

    搜索的时候,输入 [哈哈] 或 [哈哈哈] 或 [哈哈哈哈] 一般能搜索到,但如果搜索单个字 [哈] ,却搜索不到。

    同样的,有一串数字字符 [ 1111 ] ,只能用 [ 1111 ] 搜索到, [ 1 ] [ 11 ] [ 111 ] 都搜索不到。

    有没有大佬给点思路如何解决?

    12 条回复    2019-04-03 12:11:01 +08:00
    misaka19000
        1
    misaka19000  
       2019-04-03 11:32:58 +08:00 via Android
    先看一下分词的结果是什么,看这个句子被分成了哪些词
    rogwan
        2
    rogwan  
       2019-04-03 11:35:05 +08:00
    你这个的结果像是 ik_smart 索引的,不像是 ik_max_word 出来的结果啊。你换个分词重新索引一下试试
    reid2017
        3
    reid2017  
    OP
       2019-04-03 11:38:06 +08:00
    @misaka19000
    @rogwan
    我用 analyze 接口分析出来的也是只有 [哈哈] ,所以是不是我哪里配置不对

    reid2017
        4
    reid2017  
    OP
       2019-04-03 11:38:42 +08:00
    es 版本:6.5.1
    reid2017
        5
    reid2017  
    OP
       2019-04-03 11:39:50 +08:00
    三个字 [哈哈哈] 也是没有单字 [哈]

    lawler
        6
    lawler  
       2019-04-03 11:41:11 +08:00
    哈,不是词。

    意思就是,你的词库里没有哈。
    qping
        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、实在不行,可以模糊搜索
    reid2017
        8
    reid2017  
    OP
       2019-04-03 11:50:13 +08:00
    @lawler 好像懂了。。
    qping
        9
    qping  
       2019-04-03 11:50:51 +08:00
    @reid2017 #5 你的词典里,就没有“哈” 这个词
    reid2017
        10
    reid2017  
    OP
       2019-04-03 11:51:05 +08:00
    @qping 谢谢,大概明白了
    leriou
        11
    leriou  
       2019-04-03 12:05:57 +08:00
    不管是 ik_smart 还是 ik_max_word 都不会把 哈 单独做分词, es 单个字段可以配置多个分词器, 在配置个标准分词器就可以了, 搜索的时候同时搜索多个分词字段, 权重自己调一下就行了
    reid2017
        12
    reid2017  
    OP
       2019-04-03 12:11:01 +08:00
    @qping
    字典里应该是 [哈] 的,因为另外一些数据,比如 [xxxxx 哈 xxxxx] ,这样的一长串字符里只有一个 [哈] 字,搜索单字 [哈] 时能搜索出来,只是匹配不出有连字的 [哈] 的内容,这是为什么呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1636 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:53 · PVG 00:53 · LAX 08:53 · JFK 11:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.