1998年,Larry Page 和 Sergey Brin 在斯坦福的线搜宿舍里写了个叫 Backrub 的东西。它干的索引事很简单:爬取网页,数链接。线搜谁被链接得多,索引谁就靠前。线搜这个朴素的索引逻辑后来变成了 PageRank,再后来变成了 Google。线搜二十多年过去,索引我们早已习惯在搜索框里敲几个词,线搜按下回车,索引然后从一亿条结果里挑前三条点开。线搜但你有没有想过,索引那个输入框背后到底发生了什么?线搜
先说说抓取。搜索引擎有个叫“蜘蛛”的程序,没日没夜地在互联网上爬。它从一个已知的种子页面出发,顺着链接跳到另一个页面,把内容抓回来,存进一个巨大的数据库。这个数据库大到什么程度?Google 的索引里大概有 几千亿个网页。几千亿。你一辈子也看不完。蜘蛛不是只抓一次,它还会定期回访,看看页面有没有更新。你昨天发的博客,今天就被搜到,就是蜘蛛刚爬过。
抓回来之后是建索引。想象你有一本一百万页的书,你想找“苹果”这个词出现在哪几页。你不会从第一页翻到最后一页,你会先做一份“词 → 页码”的对照表。搜索引擎干的就是这个事,只不过规模大得多。它把每个网页拆成词,去掉“的”“了”“是”这种没信息量的停用词,然后记录每个词出现在哪些文档里、出现了几次、在标题还是正文。这份对照表就是倒排索引。没有它,你搜“在线搜索引擎”,系统得把几千亿网页全扫一遍,你等到明年也出不来结果。
排序才是真正见功夫的地方。你输入“苹果”,它怎么知道你要的是水果还是手机公司?靠的是几百个信号。页面标题里有没有“苹果”?URL 里有没有?别人链接到这个页面时,用的锚文本是“苹果官网”还是“苹果的营养价值”?你所在的地理位置、搜索历史、甚至你用的是手机还是电脑,都会影响结果。Google 在 2015 年引入 RankBrain,用机器学习来理解查询意图。你搜“附近修车”,它不会给你一篇讲修车历史的维基百科,而是直接列出你周围三公里的修车铺。
“搜索不是找到你输入的东西,而是找到你想要的东西。”——这句话听起来像废话,但做起来极难。
还有一件事很少被提起:广告。搜索引擎的商业模式几乎全靠广告。你搜“保险”,前四条结果里通常有两三条是广告,右下角有个小小的“赞助商链接”标签。这些广告位的竞价机制复杂得像股票交易所,每次你搜索,后台都在进行一场毫秒级的拍卖。广告主为“保险”这个词出的价,可能高达几十美元一次点击。免费搜索的背后,是广告主在买单。
那搜索引擎有没有偏见?当然有。它给你的结果,是算法认为“大多数人会满意”的结果。这就意味着小众的、新出现的、没有多少人链接的内容,很难排到前面。一个刚上线的独立博客,哪怕写得再好,也可能被淹没在几千页之后。Google 每年调整算法几千次,有些站点一夜之间流量归零,有些则突然暴涨。做 SEO 的人对此又爱又恨。
我有时候会想,如果没有搜索引擎,互联网会是什么样?大概像一座没有目录的巨型图书馆,书散落一地,你只能靠口口相传找到想要的那本。搜索引擎给了我们一种“全知”的错觉——好像任何问题都能在一秒内找到答案。但真相是,它只索引了互联网的一部分,只返回了它认为相关的结果,而且排序规则从不完全公开。你看到的,是它想让你看到的。
下次你在搜索框里敲下几个字的时候,不妨停半秒。那一瞬间,几千台服务器在为你运转,几千亿个网页在竞争你的注意力。而你,只是按了一下回车。