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

Python 50 万个 KV 数据, 用什么过滤/搜索方案搜索? (目前用 Whoosh)

  •  1
     
  •   wzw · 2020-04-09 08:04:02 +08:00 · 1741 次点击
    这是一个创建于 1682 天前的主题,其中的信息可能已经有所发展或是发生改变。

    数据

    • key value
    • 例如 50 万个商品信息, dict 的 key 是固定的
    • 目前最多 50w
    • 数据是会更新的
    • 数据例子:
    p1 = {
      "brand": "Ford",
      "model": "Mustang",
      "tag": ['A','BB', 'xxx'],
      "year": 1964
    }
    

    需求

    • 在这 50 万个中, 过滤信息.(和京东的商品过滤一个的意思)

    现状

    • 数据库 SSDB(Redis)
    • 结巴分词
    • Whoosh 建立索引搜索

    请大家说说有什么比较好的方案, (数据放内存, 会不会更快)

    14 条回复    2020-04-09 16:43:44 +08:00
    RHxW
        1
    RHxW  
       2020-04-09 08:08:53 +08:00
    es ?
    wzw
        2
    wzw  
    OP
       2020-04-09 08:13:42 +08:00
    @RHxW #1 es 和 Whoosh 算是类似了吧
    lzxz1234
        3
    lzxz1234  
       2020-04-09 08:49:53 +08:00
    es 支持集群是搜索的完整方案了
    SjwNo1
        4
    SjwNo1  
       2020-04-09 08:51:56 +08:00
    持续关注
    lhx2008
        5
    lhx2008  
       2020-04-09 08:54:56 +08:00 via Android
    mysql 硬顶也没事。。区分度那么大
    swulling
        6
    swulling  
       2020-04-09 08:58:21 +08:00 via iPhone
    从给的示例看,传统的关系数据库没啥不行的。
    wzw
        7
    wzw  
    OP
       2020-04-09 09:08:34 +08:00
    @swulling #6
    @lhx2008 #5

    我用的是 NoSql 数据库呀
    rrfeng
        8
    rrfeng  
       2020-04-09 09:53:42 +08:00 via Android
    50w 随便搞吧…

    tag 这种字段可以单独拆出来,如果以后会变大。当然现在这点 MongoDB 里无所谓。建好索引就行
    Vegetable
        9
    Vegetable  
       2020-04-09 09:57:11 +08:00
    50w 真随便搞,mongodb 能给你这 50w 全缓存到内存里,获得近似 redis 的体验.
    关系数据库其实也一样.
    cabing
        10
    cabing  
       2020-04-09 09:59:56 +08:00
    计算下数据占用的内存空间,假设一条数据 128 个字节。128*500k = 64000k = 54M

    假设一个 k-v 是 1.28k ,也才 540M,都是毛毛雨。

    考虑下以后的增长量有限的话,真可以随便玩了。


    自己建个字典树都没问题。。
    qlhai
        11
    qlhai  
       2020-04-09 10:18:10 +08:00
    如果就这几个字段,50 万扔 MySQL 里没问题啊
    marcushbs
        12
    marcushbs  
       2020-04-09 10:34:39 +08:00
    50w 放内存
    wzw
        13
    wzw  
    OP
       2020-04-09 10:45:36 +08:00
    @marcushbs #12 @cabing #10 @Vegetable #9

    内存肯定是够用的, 关键用什么方案呀? 有时候单个商品更新, 也需要去更新这些缓存呀.
    cabing
        14
    cabing  
       2020-04-09 16:43:44 +08:00
    @wzw 更新写队列,更新下缓存就行。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2529 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 01:19 · PVG 09:19 · LAX 17:19 · JFK 20:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.