装箱百万奖金,第六届全国工业互联网数据创新应用大赛火热报名中! 了解详情
写点什么

Facebook 工程总监 Lars Rasmussen 介绍图谱搜索产品开发过程

  • 2013-01-16
  • 本文字数:2241 字

    阅读完需:约 7 分钟

2013 年 1 月 16 日,Facebook 发布了图谱搜索(Graph Search)的 beta 版该,产品可以让用户按照自己的关系图谱搜索内容。Las Eilstrup Rasmussen 是 Facebook 的工程总监,他在自己的日志上介绍了图谱搜索的开发历程。

Las 首先指出了该产品的独特之处:

它可以让你以全新的方式,发掘你的朋友和其他人在 Facebook 上分享的内容。使用图谱搜索,你只要输入类似短语:“我住在旧金山的朋友”,“我的家人在哥本哈根拍的照片”,或是“我朋友喜欢的牙科医生”,Facebook 就能很快展示出你请求的内容。

Las 提到:图谱搜索在一年多前就是 Facebook 搜索团队的主要目标,但项目的起源要从 Facebook 早年间说起。

人们能搜索基本信息,比如朋友、小组、活动,但是支撑这些搜多的系统不够强大,它们也不能随着网站的发展而扩展。

随着内容越来越多,Las 和团队认识到:想得到需要的结果,越来越困难,等待时间也越来越长。

接下来,他回顾了图谱搜索的开端:

在 2011 年,Zuck 要求搜索团队设计、构建一个全新系统,要具备搜索整个社交图谱的能力。这是个有趣的挑战,因为与 Web 这样的海量文本集合相比,我们数据库里面的数据要更具结构性,不像自由流动的文本那么简单。因此,传统的关键字搜索产品可能无法满足要求。

当时,他们的争论在于:在开始时,是否应该开发针对特定用例(比如招聘搜索,或本地搜索)的小型产品。这样的产品易于理解,而且可以帮团队为开发更大规模产品积累经验。但是,他们的最终选择是:

出于最彻底的黑客精神,我们决定一干到底:我们能否开发出一个单一的、结构化的搜索机制,既可以让人们搜索社交图谱上的一切,又能随着 Facebook 不可思议的成长而扩展?我们必须找到答案。

Las 接下来指出:

这样的产品同时带来两个挑战:这样的产品会是什么样子?我们需要构建什么样的基础架构来支持它?

对于产品的原型部分,Las 的团队开发了多种简单的图形化原型,让用户以点击的方式,逐步完成结构化的、数据库式的查询。但都因为过于复杂被他们否决,而且也不能满足 Zuck 给他们提供的挑战。

接下来,新的思路出现了:

新的想法来自于 Facebook 每个页面的标题,我们希望人们能构建他们自己感兴趣的特定内容的视图。如果一个用户只是输入他想找的内容,我们能否构建一个系统来理解用户的输入并找到响应的内容?

这样的内容能完美整合 Facebook 现有的搜索机制,因为用户要做的,还是在每个页面上方输入搜索意向。

一周左右,我们几个人完成一个简单的概念原型:初级的、指数级的“解析器”,用 JavaScript 写成,可模拟我们希望完成的体验,只要输入的内容不超过几个标志字符。我记得我们拿给 Zuck 看的时候,那是在 2011 年夏天。他说:“你们不可能做出那样的东西,但如果你们能做出来,那就牛掰了。”(Zuck 知道如何激励人……)

Las 的团队从未有类似产品开发经验,因此他们看了很多书。

我们组合了很多解析技术,构建出一个字符串解析器。假设用户输入:“friends New York",对此,我们已经定义了一个所有可能的页面集合,而且系统可以处理这样的集合。我们的解析器接下来就可以生成图谱搜索的标题,其中包含用户的输入,包括“friends who lived in New York"和“friends who have visited New York"。如果我们能找到一种方式来为这些建议的标题排名,就算有了一个好的开端。

又过了一个多月开发,我们有了一个原型,让我们有信心足以构建今天发布 beta 版本的这个系统。

接下来,Las 介绍了该产品的基础架构。

搜索团队的系统工程师致力于开发必须的架构。

头号挑战:每个月,有超过 10 亿人使用 Facebook,他们分享超过 2400 亿张图片,并在几千种不同类型的内容间构建超过 1 万亿连接。每天,人们分享几十亿新内容,图谱搜索需要在这些内容创建后几秒内就建立起针对它们的索引。

其次,我们运行这么多服务,还要写很多代码。在 Facebook 我们以最快速度前进,常常构建针对特定用例的基础设施和架构。坚信:公司相当程度上的成功,都依赖这些。但是背后要付出代价:从我们开始图谱搜索项目时,搜索团队负责维护三个独立的搜索系统,支持站点上诸多搜索功能,这些功能都是我们过去几年开发的。维护压力已经占用了相当多很有限的工程工作时间,要加入第四个系统,看起来不是什么好主意。我们极度需要把系统都整合起来。

当然,还要解决图谱搜索需要回答的特定搜索查询。使用传统的信息存取系统,来混合关键字和结构化查询,这已经熟烂于心了。但是我们需要系统找到的答案不仅限于单一关联,比如“restaurants liked by my friends from India”。我们运气不错:三个已有系统中的 Unicorn,就是专门为这个设计的。

搜索基础架构团队决定采取两个步骤:

首先,扩展 Unicorn,管理所有现有的搜索体验,并满足图谱搜索的所有需求。今天,我们已经足以上线图谱搜索 beta 版本。但是,我们还没有能力索引用户在 Facebook 上分享的所有帖子和评论,这个数据集是我们为了图谱搜索和 Unicorn 所积累的最大的数据集。团队会在工程团队博客上撰写更多关于这个问题的内容。

Las 接下来还谈到图谱搜索的未来:

今天只是开始,我们开始把更多注意力放在人、照片、地点和兴趣上,但是希望寻找方法整合帖子和开放图谱动作,同时,让图谱搜索在移动终端和所有语言中都可以使用。我们很兴奋,能让搜索变得更有用、有趣,同时致力于让用户发掘现有关系中,以及在 Facebook 上建立新关系。

最后,Las 号召大家都去尝试图谱搜索的beta 版本

InfoQ 中文站的读者们,你们有谁翻墙用过这个产品了么?感觉如何?欢迎在评论中留下你们的使用感受。

2013-01-16 08:581373
用户头像

发布了 479 篇内容, 共 141.1 次阅读, 收获喜欢 42 次。

关注

评论

发布
暂无评论
发现更多内容

「元宇宙十万个为什么」:为什么元宇宙值得投资?

WorkPlus Lite

龙头整机厂商宝德加入,共建龙蜥社区开源新生态

OpenAnolis小助手

Linux 开源 合作伙伴

Apache Flink ML 2.0.0 发布公告

Apache Flink

大数据 flink 编程 实时计算

SAE 最佳实践范本:助力视野数科进入云原生“快车道”

Serverless Devs

Serverless SAE

Pravega Flink Connector Table API 进阶功能探秘

Apache Flink

大数据 flink 编程 实时计算 Pravega

内网是什么意思?指什么网?内网需要做等保测评吗?

行云管家

安全 内网 等保测评

免费下载!FFA 系列专刊|《Flink CDC 新一代数据集成框架》电子书

Apache Flink

大数据 flink 编程 实时计算 IT

【云图说】DDS读写两步走,带您领略只读节点的风采

华为云开发者联盟

数据库 节点 DDS 文档数据库 DDS读写

大数据开发之Flink + TiDB

@零度

flink 大数据开发

PHP 遇见 Serverless,帮你解决这些痛点!

Serverless Devs

数据安全产品之堡垒机详细介绍-行云管家

行云管家

网络安全 防火墙 数据安全 堡垒机

🏆【Alibaba中间件技术系列】「Nacos技术专题」配置中心加载原理和配置实时更新原理分析(中)

洛神灬殇

nacos 配置中心 Alibaba 1月日更 Apache alibaba

从 Flink Forward Asia 2021,看 Flink 未来开启新篇章

Apache Flink

大数据 flink 编程 实时计算

工商银行实时大数据平台建设历程及展望

Apache Flink

大数据 flink 编程 实时计算

一个低成本确保IM消息时序的方法探讨

WorkPlus Lite

『TDengine2021用户故事』征文活动进入投票阶段!

TDengine

tdengine

WTM活动回顾|WomenTechmakers 2021 Courage to Create

江湖老铁

认识 Express 的 res.send() 和 res.end()

编程三昧

JavaScript 前端 nodejs Express 1月月更

技术升级!国内公有云厂商首个支持保留消息功能

百度开发者中心

物联网

大咖集结,共创生态|AIOps社区专家团正式集结出道

云智慧AIOps社区

开源项目 开源社区 智能运维 开发者社区 社区治理

MultipartFile与File的一些事

华为云开发者联盟

spring File 文件 MultipartFile 中转文件

Flink CDC 系列 - Flink MongoDB CDC 在 XTransfer 的生产实践

Apache Flink

大数据 flink 编程 实时计算 IT

netty系列之:可以自动通知执行结果的Future,有见过吗?

程序那些事

Java Netty 程序那些事

MyBatis的功能架构是怎样的

编程江湖

mybatis

Alink、Tensorflow on Flink 在京东的应用

Apache Flink

大数据 flink 编程 实时计算 Alink

虎符推出AMM流动性资金池 支持现货专区做市赚收益

区块链前沿News

流动性 虎符 Hoo 虎符交易所 AMM

Flink 大规模作业调度性能优化

Apache Flink

大数据 flink 编程 实时计算

一文读懂HarmonyOS服务卡片怎么换肤

HarmonyOS开发者社区

HarmonyOS

Facebook工程总监Lars Rasmussen介绍图谱搜索产品开发过程_Facebook_郑柯_InfoQ精选文章