996635
V2EX  ›  问与答

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

  •  
  •   996635 · Mar 23, 2017 · 4084 views
    This topic created in 3517 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
    solos
    Mar 23, 2017
    1
    可以分表吧
    paradoxs
    paradoxs
    Mar 23, 2017 via iPhone
    2
    hadoop
    xiusedelang
    xiusedelang
    Mar 23, 2017 via Android
    3
    这个查询技巧在谷歌的论文里也给出来了吧
    mooncakejs
    mooncakejs
    Mar 23, 2017 via iPhone
    4
    用 8 个 redis
    996635
    996635
    OP
    Mar 24, 2017
    6
    @wzha2008 #5 这篇的回答被推翻了
    996635
    996635
    OP
    Mar 24, 2017
    7
    @xiusedelang #3
    irl.cs.tamu.edu/people/sadhan/papers/cikm2011.pdf 你说的这篇吗? 貌似不好实现
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4019 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 07:31 · PVG 15:31 · LAX 23:31 · JFK 02:31
    ♥ Do have faith in what you're doing.