标题：谷歌搜索算法
算法简介
谷歌搜索算法
这是一个很普通的搜索，谷歌每天要处理成千上万的这种搜索。但事实上这一搜索过程十分复杂，可能使一些搜索引擎误解。如果把这些单词输入到必应，第一个结果是美国国家橄榄球联盟的历年球员名单，其中有一个名叫Lawyer Milloy。搜索结果中的下面几页，也没有与律师Siwek相关的内容。 
这一对比显示出谷歌算法的强大，甚至可以说是智能，而这是通过反复的修正实现的。看起来谷歌拥有解读用户需求的神奇力量——不论是多么生僻的搜索，或是有拼写错误。谷歌将这种能力称为搜索质量，并且多年来一直竭力完善算法，以产生精确的搜索结果。
算法创始
但这并不是故事的全部。人们信赖PageRank是因为它是可以进行确认的，但要提供最有用的结果还需要其他技术。这涉及对某些信号、上下文的利用，这样对于任何查询，搜索引擎都能将最有用的结果排在最前面。
背景知识
网络搜索是一个多方过程。首先，谷歌机器人获取每个可访问网站的内容。这些数据将被分解成一个索引(通过文字进行组织，就像书本的目录)，这样就可以根据内容找到任何页面。每当用户键入一个查询，谷歌就会在索引中搜寻相关页面，然后返回一个包含多达数百万页面的列表。最复杂的是对列表进行排序，也就是决定哪些页面应该出现在最上面。 
此时，上下文便有了用武之地。所有搜索引擎都会引入上下文，但没有一个像谷歌那样引入得那样多、应用那样自如。PageRank本身也是一个信号，同时也是页面的一个属性(指其相对于其他网页的重要性)，该属性可以帮助确定其与查询内容的相关性，其中的一些信号在现在看来是显而易见的。
优化搜索
一直以来，谷歌算法都对页面的标题给与特别的关注，因此标题成为确定相关性的重要信号。另一个重要技术是锚文本，指的是超链接中的可见文本。因此， “当你进行搜索时，搜索引擎总能给出正确的页面，即使该页面中没有你找的关键词。”这是谷歌早期架构师斯科特·哈桑(Scott Hassa)的观点，他曾与佩奇和布林一起在斯坦福工作。之后，搜索引擎关注的信号还包括新鲜度(对于一些查询，新近的页面比较早的页面更有价值)和地理位置(谷歌知道搜索者的大致地理坐标，会将本地信息排在前面)等。谷歌目前使用200多种信号来帮助确定搜索结果的排序。 
谷歌工程师发现，一些最重要的信号可能来自谷歌本身。PageRank将受欢迎程度植入了搜索引擎：成千上万的网站民主地决定将链接指向哪些网站。但辛格表示，谷歌工程师还利用了另一种民主 ——成千上万使用谷歌搜索的用户。用户在搜索过程中产生的数据被证明同样很有价值，这些数据包括他们点击哪些结果、不满意时对关键词的更改、查询关键词与所处地理位置的关系等。这一过程的最直接例子就是谷歌所说的“个性化搜索”——这是一个可选功能，利用用户的搜索历史和地理位置来确定他想要找的内容(使用这项功能需要先登录谷歌账号)。更通常的方法是，谷歌利用其收集的大量数据支持其算法，谷歌对此有极深的理解，可以解读隐秘查询的复杂意图。
识别语义
谷歌以善于鼓励这些创新而闻名，每年公司都会举办“疯狂搜索创意”内部展示活动，以便鼓励那些离奇但有应用潜力的创新。但大多数时候，改进的过程是充满艰辛的，需要矢志不渝的精神，需要面对尝试过程中的打击。有一个不成功的搜索已经成为传奇：2001年，辛格得知输入“audrey fino”时无法搜到预期内容，而只是返回一些赞扬奥黛丽·赫本(Audrey Hepburn)的印度网页，因为在印度语中“fino”是好的意思。辛格说：“我们知道audrey fino是个人名，但我们的系统没这么聪明。” 
这一失败使辛格花了多年时间，试图改进谷歌对姓名的搜索结果——因为姓名占总搜索量高达8%。为了解决这一问题，他不得不掌握“bi-gram拆分”，也就是将多个词分割成独立的单元。比如，“new york”合在一起组成一个bi-gram，指的是纽约。但也有三个字的情况，比如“new york times”，意思是纽约时报，很明显二者指的不是同一样东西。如果用户输入的是“new york times square”，意思又变成了纽约时代广场。人类可以很容易做出区分，而谷歌不是由人工控制的，它依靠的是算法。 
“Mike Siwek”这一搜索可以解释谷歌是如何解决这一问题的。辛格输入显示代码的命令后，我们就可以看到信号是如何决定搜索结果排序的：通过bi-gram可以确定mike siwek是一个人名，lawyer是一个同义词，mi是一个地名。辛格说：“从工程师的角度进行解构，系统会对这些词进行分割，它会发现lawyer不是姓氏，siwek不是中间名。同时lawyer也不是密歇根的一个镇，因此它是attorney的同义词。” 
这是谷歌从无数次搜索中获得的可贵知识。石头可以是“rock”，可以是“stone”，还可以是“boulder”(漂石)。如果用户输入“rokc”，谷歌仍会知道他想找的是“rock”。但如果在“rokc”前加“little”，谷歌则会知道这是“Arkansas”(阿肯色州)的首府。“Arkansas”的缩写是 “ark”，与诺亚方舟同形，但谷歌会将二者区分开来。辛格说：“搜索中最重要的是理解用户的意图，因此你不是在匹配词语，而是在匹配意思。” 
谷歌一直在不断改进。近期，谷歌工程师莫琳·海曼斯(Maureen Heymans)发现了“Cindy Louise Greenslade”的搜索结果的问题。用户输入这些单词时，算法会认为应该找一个名叫Cindy Louise的人，于是在加利福尼亚的加登格罗夫市找到了一名心理学家，却没有把姓名为“Cindy Louise Greenslade”的人的网页放在结果的前十名。海曼斯发现，这是因为“Cindy Louise Greenslade”习惯将名字缩写成“Cindy L. Greenslade”。她表示：“我们的搜索引擎应该更聪明一点。”于是她增加了一个信号，用来寻找中间名的缩写。现在正确的结果已经被排在了第五位。
不断创新
在任何时候，谷歌高效运转的测试系统都会进行几十个这种改进。谷歌在全世界专门雇佣了上百人，这些人坐在家里的电脑前判断更改后的结果是更好还是更差。但谷歌还有一个更大的测试团队，这就是成千上万的谷歌用户，他们不知不觉地加入了这项长期的质量实验。 
每当工程师想测试一项技术调整时，他们会在一小批随机用户中运行这些算法，而绝大多数的用户扮演的是参照组的角色。需要测试的更改太多，因此谷歌放弃了一次只测试一项技术调整的策略。搜索质量工程师帕特里克·赖利(Patrick Riley)表示：“在大多数搜索过程中，你同时都处于多个‘实验组’和‘参照组’之中。”但他随后又做出了更正：“事实上，所有搜索都被卷入了实验之中，因此用户每次用谷歌搜索，都作了一次‘小白鼠’。” 
这种灵活性——增加信号、更改代码、立即测试的能力——就是谷歌团队为什么说他们可以应对来自必应、Twitter和Facebook的任何挑战的原因。事实上，在过去的六个月中，谷歌进行了200多项改进，其中一些似乎在模仿(但超越了)它的竞争对手(谷歌表示这只是巧合，称其多年来一直在增加新功能)，其中之一就是实时搜索。 
佩奇数月前曾表示谷歌应该每一秒钟都搜索整个网络，因此使这一功能备受期待。当用户搜索具有时效性的话题时，谷歌结果页面的10个蓝色链接中会有一个“最新结果”框。该框带有拖动条，显示的是从新闻媒体、博客和Twitter等获得最新内容。同样，谷歌使用信号来确保最有用的tweet(Twitter上发布的消息)出现在实时信息框中。 
除了实时搜索，谷歌还引入了一项新功能，称作“Goggles”。该功能可以将用户手机上拍摄的照片视作搜索请求。谷歌一直努力将搜索变成一种随时随地的行为，“Goggles”也是该努力的一部分。有了摄像和语音识别功能，智能手机就会变成你的眼睛和耳朵。只要找到正确的信号，任何东西都可以变成搜索请求。