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

2017-03-23 18:45:30 +08:00
 996635

simhash 算法简单又高效.

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

目前的做法:

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

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

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

3213 次点击
所在节点    问与答
7 条回复
solos
2017-03-23 19:39:00 +08:00
可以分表吧
paradoxs
2017-03-23 19:42:42 +08:00
hadoop
xiusedelang
2017-03-23 19:46:47 +08:00
这个查询技巧在谷歌的论文里也给出来了吧
mooncakejs
2017-03-23 20:32:11 +08:00
用 8 个 redis
wzha2008
2017-03-24 10:46:03 +08:00
996635
2017-03-24 10:55:59 +08:00
@wzha2008 #5 这篇的回答被推翻了
996635
2017-03-24 11:03:24 +08:00
@xiusedelang #3
irl.cs.tamu.edu/people/sadhan/papers/cikm2011.pdf 你说的这篇吗? 貌似不好实现

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/349819

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX