V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lhx2008
V2EX  ›  问与答

百万条数据想加快字符串匹配的速度,有什么解法

  •  
  •   lhx2008 · 2021-12-15 00:49:10 +08:00 · 1782 次点击
    这是一个创建于 1065 天前的主题,其中的信息可能已经有所发展或是发生改变。
    数据是普通的文本数据,字符串匹配就是不分词根据输入直接搜,类似记事本那种。

    如果用传统数据库匹配速度有点差,类 ES 的好像分词的问题不太好处理,还有没有别的更优雅的搞法呢
    11 条回复    2021-12-15 14:09:57 +08:00
    3dwelcome
        1
    3dwelcome  
       2021-12-15 01:41:54 +08:00
    建索引啊,还能有什么办法。

    要查找速度上去,那就要看着这索引,建的好不好了。

    至于具体算法,那就是 bloom filter 魔改。
    dbsquirrel
        2
    dbsquirrel  
       2021-12-15 03:03:54 +08:00 via iPhone
    让我想起了这个
    https://v2ex.com/t/814478
    murmur
        3
    murmur  
       2021-12-15 07:48:20 +08:00
    具体场景是什么

    什么叫普通的文本数据

    如果是内部的数据库慢就慢呗 不能违背物理定律

    如果是商业的 可以对热门词汇缓存
    qping
        4
    qping  
       2021-12-15 09:21:52 +08:00
    百万条都加载到内存里,怎么匹配都快
    dddd1919
        5
    dddd1919  
       2021-12-15 09:44:49 +08:00
    ES 分词不好处理?中文上 IK 啊
    changnet
        6
    changnet  
       2021-12-15 09:48:27 +08:00
    精准匹配?用个字典树或者 acism ,百万的词库匹配起来都是毫秒级的,这在关键字过滤经常用
    IsaacYoung
        7
    IsaacYoung  
       2021-12-15 09:57:12 +08:00
    tire
    murmur
        8
    murmur  
       2021-12-15 10:15:38 +08:00
    @changnet 不是百万词库是百万记录...
    lhx2008
        9
    lhx2008  
    OP
       2021-12-15 12:08:13 +08:00 via Android
    不能分词的数据,现在就是直接字符完全匹配,类似 mysql 的 like %xxx%
    lhx2008
        10
    lhx2008  
    OP
       2021-12-15 12:08:44 +08:00 via Android
    小项目才能这么完,从数据库同步数据开销也很大的
    abersheeran
        11
    abersheeran  
       2021-12-15 14:09:57 +08:00
    radix tree 完事,只要内存能完全放得下,那搜索速度就和你数据量没什么关系。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2621 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:57 · PVG 23:57 · LAX 07:57 · JFK 10:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.