Badoo.com拥有56.000.000个用户个人资料。可以按性别,年龄,头发颜色,生肖,教育等搜索个人资料,以及离家乡的距离,在线状态和注册日期。到目前为止,这似乎是可行的,即使它对巨大的表(56m成员......)进行了相当多的查询,它可以以一般方式缓存。
有趣的是,他们还有一个单独的“排除列表”(你看到的每个档案,你可以说你不想见到这个人)。另外,你的朋友也不会出现。
第二个有趣的部分是查询的OR部分。你可以搜索一个女人,25-35岁,金发女郎或黑发女郎,非吸烟者,异性恋或双性恋者,处女座或双胞胎或癌症,生活在巴黎50公里半径并且不是你的朋友而不在你的排除名单上的人谁现在在线。许多OR,繁重的查询,排序选项,无法缓存或预先计算所有这些,但搜索以毫秒为单位返回11.298结果。
他们如何使用5600万个数据集和250K人同时使用它来做这样的事情?全文搜索索引?关系数据库?关键价值商店? 有没有人对这个概念或架构有所了解?
答案 0 :(得分:3)
它们很可能是使用像Lucene或Sphinx这样的倒置索引技术构建的。如果您正在寻求构建解决方案,我的建议是Apache Solr(使用Lucene构建的搜索服务器)。它非常受欢迎,有一个活跃的OSS社区,并被Netflix,Cnet等网站使用。
答案 1 :(得分:1)
我建议您查看Badoo Dev Blog。这是俄语,但谷歌翻译帮助很多。
简而言之,他们使用分片MySQL和memcached。这是一些badoo evolution list。