BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

王天:Twitter是怎么做搜索的
录制于:

| 受访者 王天 关注 0 他的粉丝 作者 InfoQ 关注 9 他的粉丝 发布于 2016年2月19日 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!
18:34

个人简介 王天,2003年清华计算机系本科毕业并赴美留学,2005年硕士毕业后加入Google,在Mobile Search、News以及Search Quality等部门从事过近六年开发。2011年初加盟Twitter,参与了Twitter实时相关性搜索产品从无到有的建设过程。现任Twitter的Senior Staff Engineer,带领搜索质量团队。 从小就对计算机很有兴趣,编程序超过二十年,对于互联网尺度软件、分布式系统、搜索引擎等有多年经验。在键盘上一路走来,有幸目睹了两家主要互联网公司在百人、千人、万人员工尺度上的成长,对个中工程上的挑战和人员合作上的曲折有诸多感触。 滑雪爱好者。

全球架构师峰会(International Architect Summit,下简称ArchSummit)是由InfoQ中文站主办的一次全球性架构师峰会。ArchSummit专门针对架构师人群,讲述与架构和架构师相关的各方面趋势、技术和案例。这也是继QCon之后,InfoQ中文站主办的又一次高端技术盛会。

   

1. 各位InfoQ的网友大家好,现在我们是在ArchSummit的北京现场,做客我们专访间的是来自Twitter的高级主任工程师王天。非常荣幸您来接受我们的采访,您能给我们介绍一下自己的工作经历和负责的主要的事情吗?

王天:我是2011年加入Twitter,到现在工作快5年了,主要负责搜索和搜索质量方面的内容,带领搜索质量团队改进实时搜索产品。在此之前我在Google工作了大概5年多,也是从事移动搜索、新闻搜索和搜索质量,所以基本上整个工作生涯都在做搜索引擎相关的工作

   

2. 您能说说最初接触到编程是什么时候?当时是怎么样的情景吗?

王天:小学的时候有朋友向我介绍过编程的东西,我觉得挺好玩,上初中参加了一个课外编程兴趣小组,由老师带着学习一些编程的基本东西,那时候产生了很大的兴趣。直到后来得到了台我亲戚借给我的电脑,就在上面编编编,一直持续到初中、高中,到大学选择计算机系,也没有什么令人惊讶的地方,就是兴趣爱好。

   

3. Twitter搜索现在是不是最原始的一些推文能够搜到,时间更久之前的那些数据会不会跟搜索的速率有影响?

王天:这个是进化的,我们在系统刚开始的时候,也只能搜到一部分的内容,最开始甚至只能搜到过去三天的内容,后来慢慢扩展到七天,后来扩展到很长的区间,但是只能搜到比较好的内容,不断的在不同维度上渐进,到今天,应该是到去年2014年初的时候,我们实现了完全索引,就是从twitter创立到现在的6700亿条贴子都能搜到。

   

4. 那这个对你们搜索架构是不是会有一些改变?

王天:对,架构中间变了很多次,一个是不断的业务拆分让它可以更灵活的开发,另外一方面是为了不断的支持更大的索引。一般传统索引是放在内存里面的,慢慢需要把它放在磁盘上,上面的分层架构和可扩展性的设计都很不一样。我们经过了很多步才走到今天这个可扩展的现状。

   

5. 与Google这样的传统搜索引擎相比,Twitter的搜索在功能和技术上有哪些跟传统搜索引擎不一样的地方。

王天:传统搜索引擎搜的是网页,得用爬虫去爬很多东西,耗费很大的资源。而且怎么爬是一个非常复杂的问题,每个网页尺寸也都非常大,差异性非常大。对我们来说这个问题要简单得多,我们拥有完全的内容,我们知道需要搜什么,是我们的贴子以及贴子里面提及的别的东西,所以说内容并不是问题,爬也不是问题,当然我们也可以爬。主要问题是在于怎么实现实时性,就是我们提供的结果不像Google一样,是几条排头的好的结果,我们提供的是一个动态的数据流,让别人来消费这个数据流,所以数据流怎么提供是一个很不一样的问题,提供的结果的形式决定了搜索的过程不一样。所以说做起来有很多不同的挑战。

   

6. 主要是在搜索结果的展示上?

王天:一个是结果的展示,还有它的实时性,还有个人性,因为是搜索社交网络的贴子,所以个人的网络关系,跟大家的联系方法,都对搜索结果有很大的影响。Google的也有影响,但是影响就没有那么大了,它可能有一个客观正确的结果,你搜这个就应该出这个。但是对Twitter来说的话,都是贴子,相当于给我一个话题我生成一篇文章一样的东西,每个人的文章可能是有不同的。

   

7. 权重不会有区分?

王天:对,根据你和那个人的网络关系不同,可能得到的展现机会也会不同。

   

8. 另外一个它对自然语义的处理,应该和传统引擎是一样的吧?

王天:我们做了一些跟自然语言模型相关的东西在里面,从而影响到它的算分或者是中间的过程,这些都会做,自然语言现在是一个比较通用的技术。

   

9. 目前Twitter的搜索应用有Twazzup,还有一个被Apple收购,但是它好像在前两天就关闭了,叫Topsy,有些用户评论说,这些搜索的结果其实不比官方Twitter搜索要差。而且还有一些优化的服务,比如说能过滤一些垃圾信息,搜索的结果用户觉得更满意一些,你是怎么看待这些搜索引擎的?

王天:在历史上这些说法应该是正确的,因为确实有很多第三方搜索软件,他把我们所有的推文都收集下来,我们实际上也是把这个数据流提供给大家,他可以在上面再创建别的应用。这些比较好的应用他们自己建了搜索索引,做了一些额外的工作。但是这个东西在过去两年已经不是问题了,因为我们在内部已经完全赶上了,不管是垃圾文处理还是额外的搜索功能,这些东西都跟它们没有非常大的差异,而且我们有更多的内部数据,对推文结构和整个信息有更多的了解,可以做出更好的服务,所以这些服务慢慢他们的竞争力也会降低很多,有些被关闭了。

   

10. 对这些第三方的即时搜索,Twitter现在官方是什么态度?或者说有没有一些官方的策略?

王天:对于搜索我们并没有非常明确的策略,因为我们自己也提供自己的数据服务,我们在搜索上也下了很大的功夫,把搜索的影响扩大。最大的一个变化是我们不再提倡外面的开发者开发跟我们自己客户端类似的东西,以前有很多非常类似的客户端,里面就用我们的API做了一些工作,但是实际上它就是一个新的壳,做一个壳很容易,但是没有太多的附加价值,这个我们是不提倡的,我们会把权力慢慢收回来。因为有这种反向的鼓励,所以做这方面东西的人也变得比较少了。具体功能上我们还是按自己的需要,慢慢的净化我们的搜索引擎,没有让外面的搜索引擎的功能影响我们太多的决策。

   

11. 之前Twitter把这些API开放出来供大家调用,是不是在功能上也会有一些影响?对twitter本身的性能?

王天:有,在Twitter早期的时候,Twitter就是一个API平台,Twitter自己的网站、手机客户端都做得很一般,反而是花了很多功夫来供应外面的API,实际上当时有一个思路就是把Twitter做成一个API平台,让大家在上面创建。那这个东西长远看来的话,相当于在整个生态链的最下端,只提供基础数据附加值也是最小的。所以后来公司策略变了,我们要把客户端和web端做得更好一点,在上面做一些更新的、附加值高的产品,对用户帮助大的产品,走了这个路线以后,也有其他的一些策略,不鼓励第三方开发者做跟我们一样的东西,这样慢慢把平衡转移过来了,搜索也是这样慢慢转移过来的。

   

12. Twitter搜索在未来,还有哪些或者说你们现在已经既定的发展规划?

王天:很难说有一个非常明确的发展规划,但是我估计的大方向是把搜索产品本身做得更完善,因为搜索产品有无数的可以改进的,不论是积分还是找到过去的推文的能力,还有导航的能力,这些是基本的改进你可以做的。另外一方面我们希望用Twitter的搜索来驱动一些别的应用,这个东西在很多内部团队里面已经做到了,他们产品的一部分内容是由搜索提供的,把搜索当成存储结构来看的话,它就是一个大的存储服务,可以用一个特定的方式获取里面的内容,它是按关健字获取,而不是按行获取。这种特定的存储结构可以让你做很多延伸应用。我们希望慢慢把搜索平台化,在内部把它做成一个通用的基于搜索的存储结构,让它支持很多内部的延伸应用的开发。搜索的下层平台化,上层搜索产品自己不断进步,它是下层的一个特定的用例了,别的也都可以用,上下层分离的。

   

13. 这样的话上层产品形态是什么样的?

王天:基本的产品形态还是在客户端和手机上的搜索。但是搜索可能出现在很多地方,很多你意想不到的地方,结果实际上也是由搜索,或者一半是由搜索提供的,我们发现下面的存储结构有很大的用处,就把这个用处给通用化了、平台化了。

   

14. 比如说热词那个,那算是一个用例吗?

王天:热词不是搜索提供的,我说的用例更像是你有一个很大的索引数据库,索引里面每一条推文都有很多相关的信息,你可以通过关键字获取这些索引,以及他们周边的源信息创建一些别的产品。如果你只是把结果单纯的表达出来那就是一个搜索结果,如果你把结果的数据拿来和别的产品数据相结合,还可以做别的产品。我们现在希望内部把它平台化做得更强一点,让它成为大家可以用的东西。因为很多你想不到的产品都可以拿搜索来做,包括以前我们的图数据库,最早就是在mysql上存你跟朋友谁关注谁这个关系,现在的图数据库也可以拿搜索引擎做。因为搜索引擎支持倒排表的合并,用图数据库做这个的话,很多非常复杂的图上的代数计算可以变成非常简单。原来得手工的把图数据库里面做一些合并,效率很低,对一些特定的操作,搜索也能让他们变得很快。所以我们现在在探索各种各样的把搜索平台化,用搜索的路径来解决一些别的问题的方法。

   

15. 你这样一说我脑洞有点开了,又想到一个问题,因为Twitter是文本的东西比较多,有没有人搜一些图片类的东西?

王天:有,我们可以做图片搜索。每发一条推文可以嵌一个图片,相当于是里面的一个entity性质的东西,我们也支持给定一个关键字,看所有跟这个关键字匹配的推文贴子里面最热门的图片是哪一张,我们甚至还能根据图片的内容自动把图片合并在一起,即使图片是不同人发的,但是图片只要是基本一致的我们也可以把它合并在一起,可以做很多类似的,搜里面的元素,可以搜图片元素,可以搜里面@的人,也可以搜里面的话题、链接、新闻,很多都可以做,可以无穷的扩展。

   

16. 这个图片的关联是基于什么?是基于图片的描述还是说基于图片本身的图象识别出来的内容?

王天:最简单的,图片出现在了含有这个关键字的贴子里,就可以把这个图片作为一个备选了,把所有备选图片根据它们出现的次数计算出来,还有很多因素,计算次数是一个最基本的因素,这样就可以做到搜索图片的功能,在此之上我们还做了搜索其他的entity,新闻、刚才说提及的人物,比如说你可以搜日落,然后就可以看到底有多少人在日落这个语境下被提及了,他们到底有什么样的关系。

   

17. 这个就已经超过了图片本身。

王天:对,你可以把它当成一个源服务来用,有些东西直接产品化不好做,做成一个产品有点奇怪,一般把它当成一个基础服务合并到别的产品,为别的产品贡献一些信息,这也是平台化的一个动力。

   

18. 最后一个问题是团队文化,相处之道,你在两个比较大的互联网公司里面待过,都见证了规模从百人到千人到万人这种跨越成长。对于其中的工程上的挑战还有人员的合作上肯定也有很多感触,我们想问一下,您在同一家公司工作这么多年,跟不同的人、不同的Team都有过合作,自己有没有什么感悟需要说一说?或者说您谈一谈Google和Twitter这两个工程师文化有什么不一样的地方,您自己有哪些处世之道?

王天:我觉得在硅谷的很多公司工程师文化还是比较接近的,工程师本身比较喜欢做一些发明创造,做一些自己喜欢,但是整体局面上可能不是特别实用的东西,工程师挺喜欢搞这些东西的,每个公司在管理层面能不能把这些能力好好组织起来,让管理团队和产品合理地对应起来这也是很重要的。Google我进去的时候就已经有三千人了,完全不觉得这是个三千人的公司,他把每个人能够看到的东西已经精简得非常好了,如果你有兴趣关注很下层的东西,你也可以直接看到所有的代码,了解所有的信息,跟任何人谈,但是如果你不需要这些,只需要上面的一个特定的东西的话,那也有非常简洁好看的接口。Google花了很多工夫把工程师的架构环境和架构支持做得非常完善。Twitter现在也是走这个路线,不过Twitter是更早期的发展过程,twitter从大概300个人发展到现在4000多人,这样一个变化中可以看到,尤其从Google出来你觉得外面的技术一下子落后很多,大家都还在建设的过程中, Twitter就属于跟在后面的,慢慢慢慢当你自己规模足够大的时候,你会发现自己也能往开源社区贡献了。这两家公司,体验是很不一样,但只是同一种类型的公司的两个不同阶段,总体风格还是挺一致的。每家公司都可能有管理层的变动,或者具体人物的变动,那些都是相对次要的。

   

19. 你有没有观察过国内?国内从早几年一直到现在也在谈工程师文化,国内的人普遍认为中国的工程师文化和硅谷那边还是有很大差异的,您对这点怎么看?

王天:工程师本身的人都没有什么区别,硅谷在之前那么多年的发展过程中积累下来一些很好的实践,普通工程师已经受到这些实践的训练,你觉得天经地义就是应该做的东西,或者搭一个东西,搭成什么样子,对底线的感觉不一样,国内对底线的容忍比较低,工程师文化的发展实际上是慢慢抬高这个工程质量底线这一层。大家觉得硅谷有很好的工程师文化,实际上是因为大家在整个环境和社区的影响下已经塑造了比较好的底线,有共同的话语。国内这些话语在慢慢形成,硅谷和国内现在的联系也很紧密,当这些实践慢慢实施开的时候,国内的底线也会提高,工程师的环境也会更加活泼健康。现在国内非常活泼,那么多公司,那么多东西大家都在做,但是经验在传播的过程中有时候没有很好的积累下来,或者需要有人推动一下。科技媒体这一点很重要,还有整个社区的交流,相关的杂志、社区这些都非常重要,在中国以前这些东西影响可能没有那么大。比如小学学电脑的时候,基本上是自己买书自己看,周围没有多少朋友学。也许在学校遇到一个好的老师会教你,学了以后参加竞赛,完全看你的运气,遇到什么样的环境,我的运气比较好,遇到两三个志同道合的朋友,大家相互促进相互鼓励往前进步,如果没有遇到这些人我学计算机的过程会迟很多。社区的建立是慢慢慢慢的形成的,包括以前国内大家做DOS、Windows,就那几个东西,美国的小孩喜欢工程师的东西的话,linux,unix这些东西是非常常见的。一方面有语言限制,再一方面也是能带你的人不多,但是现在环境的变化,这已经不是一个问题了。

InfoQ:谢谢您接受我们的采访。

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT