今天爆出新闻,“阉割版”谷歌中文搜索将回归。首先,这是好事,将加强中文搜索的竞争,免得一家独大,毕竟,中国的广大网民,和巨大的消费市场,国际公司都不可忽视。

  作为Google的一名老兵,在2010和之前,就经历过,谷歌经过结果审查,好听一点的词,是过滤的中文搜索的研发和运维。那么,大家肯定会好奇,过滤是如何实现的呢?到底怎么“阉割”呢?

  最早的时候,Google只有一个巨大的索引,里面包括世界上所有国家,所有语言,的所有高质量的网站和网页。高质量,就是根据PageRank和用户点击计算出来的。但是,随着互联网的高速发展和Web2.0的爆发,网页实在太多了,所有东西放到一块,根本满足不了不同语言,不同国家,不同文化的需求。比如,英文,美国的网页偏多,好质量的也偏多,由于索引的总量是一定的,那么,别的语言和国家的网页能进索引的量就少了,这样,对于别的国家的网民的体验就不是太好了,很多中国网民,看到的可能是外国的中文网站或网页。

  于是,Google为了解决这个问题,提出和实现了区域索引,也就是说,对于不同的地区,会建立不同的索引。在这些索引里面,控制不同语言,不同地区,不同国家,能包括进索引的网页的数量。比如,对于,欧美区域索引,包含的英文网页的量特别大。对于,中日韩区域索引,包含的中文,日文,韩文,的网页的量就很大。这样,对于中国的用户,就会使用中日韩索引,这样,就能有很多中文的,国内的网站和网页的内容,但也会有不少高质量的英文网页。

  这样就很好的解决了索引对于中文搜索的覆盖的问题。接下来,就要解决结果审(过)查(滤)的问题,毕竟,很多违法的结果,和敏感性的结果,各国政府都是有要求的。不要以为只有中国有过滤问题,其实所有国家都有。比如,在欧洲,有关纳粹的内容就是非法的。

  第一个层次的审(阉)查(割)是在建立索引的时候,有的网站或是网页,会直接标注为非法的网页,它们就进不了索引,那么,在搜索结果中就永远不可能出现了。其它的敏感性内容,会做网页分类和识别,在索引时打上标签,然后在搜索时,根据不同国家的法律要求,过滤掉不合规定的标签的网页。

  第二个层次是使用黑白名单。在索引时没有过滤掉的,或是突发的要求,那么,黑白名单就能快速实时的起到作用。在黑名单的网页结果,会在搜索结果中被毙掉。在白名单的,如果搜索词要被屏蔽的,那么就只能从白名单里面的那些网站出结果,比如,对于中文来说,政府网站,官媒等的网页,就不会有任何问题。

  第三个层次是实时过滤。管理机构会不定时的告知某些网页,或是某些搜索词是敏感词,当接到这些指令时,必须在系统设计和实现上能保障快速处理,否则,就有被拔网线的风险。在Google,是通过代理(Proxy)的机制来实现的。在国内,有几个Proxy的数据中心,里面运行的都是Proxy服务器,它们接收用户的搜索请求,然后和敏感词表进行比较。如果整个搜索词,或是部分搜索词,或是变种的搜索词,匹配了,就需要启动过滤机制。否则,就是简单的去区域索引数据中心拿到结果返回。

  过滤的时候分几种情况。

  如果是很严重的敏感词,一点错都不能出的,那么,就使用白名单机制的结果,这些结果一般是经过人审核的,或是政府网站内容,或是官媒内容。Proxy告诉后面的服务器,只提供白名单结果。

  如果是次之的敏感词,这时,会对返回的结果的标题,摘要,甚至全文,进行敏感词的匹配,如果,有匹配的,这条结果就要拿掉,不能返回给用户。过滤和匹配,都是在Proxy进行的,比较费时费资源,也比较容易出错。

  在某些情况下,可能需要对所有搜索词的所有的结果,主要是标题和摘要,进行敏感词的匹配,这样,Proxy的工作量是相当大的。

  还好,Google,包括所有搜索引擎,只会关注前面的1000个高质量的相关结果,也就是说,每次最多返回1000个网页结果。这些结果,一般都会在Proxy上做缓存。这样,其实能减少不少的计算量。

  技术上来说,阉割的关键是保障:匹配的正确性和反应的实时性。正确性,就不用太多解释了,如果弄错了,后果会很严重的。实时性,就是管理部门有了新的过滤需求,就的马上生效,怠慢不得。