996635
V2EX  ›  问与答

google 是如何存储上亿 simhash 的?目标:存储并可快速匹配

  •  
  •   996635 · Mar 23, 2017 · 3792 views
    This topic created in 3357 days ago, the information mentioned may be changed or developed.

    simhash 算法简单又高效.

    但是问题来了,如何对亿级 hash 进行存储,同时达到高效 查找的目的

    目前的做法:

    将 64bit 的 hash 分为 8 片, 然后分别以每片的值做 key,其余所有作为 set 的 value 存储在 redis 中,

    每次新来一个 hash 就将其分片,去 redis 查 8 次,然后遍历所有 再进行抑或得到海明距离小于 2 的结果.

    这样下来 每次查询都需要 100ms 左右, 请问有更好的方式么?

    7 replies    2017-03-24 11:03:24 +08:00
    solos
        1
    solos  
       Mar 23, 2017
    可以分表吧
    paradoxs
        2
    paradoxs  
       Mar 23, 2017 via iPhone
    hadoop
    xiusedelang
        3
    xiusedelang  
       Mar 23, 2017 via Android
    这个查询技巧在谷歌的论文里也给出来了吧
    mooncakejs
        4
    mooncakejs  
       Mar 23, 2017 via iPhone
    用 8 个 redis
    wzha2008
        5
    wzha2008  
       Mar 24, 2017
    996635
        6
    996635  
    OP
       Mar 24, 2017
    @wzha2008 #5 这篇的回答被推翻了
    996635
        7
    996635  
    OP
       Mar 24, 2017
    @xiusedelang #3
    irl.cs.tamu.edu/people/sadhan/papers/cikm2011.pdf 你说的这篇吗? 貌似不好实现
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3907 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 00:49 · PVG 08:49 · LAX 17:49 · JFK 20:49
    ♥ Do have faith in what you're doing.