理论教育 等信息提取出来,从而提高搜索结果的准确性和精细度

等信息提取出来,从而提高搜索结果的准确性和精细度

时间:2023-05-27 理论教育 版权反馈
【摘要】:成立公司后的谷歌把注意力全部集中到了技术研发上。考虑到谷歌的海量数据信息,显然只有将这些数据分成小的数据模块然后同时进行搜索的分布式方式才能达到预期的反应速度。这一合作不但为谷歌带来了重要的收入,还为谷歌增加了成倍的搜索量。这使得谷歌算法可以学习人名的拼写和出现规律。然后通过使用二元语法切分,谷歌成功地从用户搜索的关键词中将人名、地名

等信息提取出来,从而提高搜索结果的准确性和精细度

成立公司后的谷歌把注意力全部集中到了技术研发上。布林和佩奇以及谷歌的几个早期重要员工都对传统的广告形式没有兴趣,所以谷歌在成立之初的几年时间里没有通过传统媒体做过广告。但是在研发方面谷歌下足了力气。1999年的谷歌虽然只有有限的创业资本,但在搜索领域已经小有名气,吸引了一批世界级的搜索领域专家,包括从DEC的西部研究中心和其他大公司跳槽过来的杰夫·迪恩(Jeff Dean)、克利什纳·伯哈拉特(Krishna Bharat)以及阿米特·辛格尔(Amit Singhal)。来自DEC的迪恩后来为谷歌开发出了关键词广告系统的原型,伯哈拉特优化了谷歌的索引擎,而通过伯哈拉特的朋友推荐的来自贝尔实验室的辛格尔后来成为谷歌算法的总工程师。

DEC公司在1998年因为运营失败被康柏收购后,康柏公司的管理层在当时互联网门户思潮的影响下,虽然意识到远景搜索技术的优势,却试图将远景改为门户网站,忽视了在搜索技术上的进一步研发。这使得包括莫尼尔在内的很多工程师对远景搜索失去了兴趣,最终离开。莫尼尔后来去了易贝,而更多人则选择了当时还处在创业阶段的谷歌。这批人中除了像伯哈拉特这样的专家负责优化谷歌的搜索算法外,还有不少人负责谷歌的基础设施的更新,并且很快解决了在系统伸缩性方面的几个重要的技术瓶颈,开发出了内存索引、谷歌文件系统(Google File System)、大表分布式数据系统(Bigtable)等关键技术。

谷歌公司注册成立后不久,就遇到了发展上的第一个障碍,这就是使用硬盘来存储网络索引很难达到预期效果,频繁的硬盘存取降低了反应速度,对用户的每一个搜索需求,谷歌搜索引擎的反应速度都为3秒左右,大大超出了预计的时间。为了解决这个问题,谷歌决定使用内存来放置网络索引数据的方法。尽管在当时内存的价格比硬盘的价格要高很多,但是根据摩尔定律,内存价格在不久的将来会降到与当时的硬盘相同甚至更低的价格。而到那时,互联网会更大,搜索需求也会更多,所以谷歌使用内存存储索引数据的决策不但提高了搜索引擎的反应速度,而且为以后的研发需求提供了更有效率的平台,这相当于将谷歌的研发速度提升了一个数量级。内存存取方式后来成为在线交易数据库系统的主要方式。

除了索引技术的革新外,谷歌是第一个面临不断增加的大数据处理问题的公司。因为谷歌除了每天需要存储不断增加的数以万计的互联网新网页的信息外,还需要存储已经存在的网页的页面更新信息。当用户进行搜索时,搜索引擎需要在很短的时间内完成对整个数据库的扫描并返回相关信息。考虑到谷歌的海量数据信息,显然只有将这些数据分成小的数据模块然后同时进行搜索的分布式方式才能达到预期的反应速度。2000年前后,可能满足要求的类似架构包括主从服务器(Master/Slave)、集群(Cluster)、表分割(Table Partitioning)以及联合表(Federated Table)这几种技术。主从服务器和集群的方式通常对服务器的性能要求非常高,而且只能应付相对较小量的数据存取要求,谷歌的廉价服务器在性能上无法达到这一要求。表分割虽然可以将大型的表格分割到不同的服务器上进行处理,但当需要的信息不在一张表上,需要处理表连接之类的数据库操作时效率非常低。而且这些方法都没有摆脱对调控服务器的依赖。一旦需要调控服务器来介入用户与服务器之间的数据读取,整个数据库的伸缩性就受到了瓶颈限制。联合表技术虽然在一定程度上解决了伸缩性的问题,但它的高复杂操作度使它不能满足谷歌的大规模并行计算系统的未来升级需求。

最终,谷歌的数据存储采取了数据库分片(Database Shard)的方式。数据库分片技术是将一个大的数据库分成相对独立的若干个小数据库。每一个小数据库包含大的数据库里的一部分数据。而这一部分数据与其他数据是相对独立的。与其他分割方式不同的是,分片技术把大数据库里内容简单的小表全部复制到每一个服务器上,而内容庞大的大表则以行分割的形式分布到不同的服务器上,比如一个有100万行数据的大表可以分割成100个长度为一万行的分表。每个分表再和其他复制过来的小表一同被分配到一个服务器上。服务器之间的相对独立使得数据的存取主要在用户与相关服务器中进行,不受到数据增长的限制。调控服务器只负责数据库的分割和再分配,这就解决了数据量不断增加情况下的伸缩性问题。(www.daowen.com)

在解决了这些早期瓶颈后,2000年6月谷歌获得了重要的发展机遇,这就是取代为雅虎提供搜索的因托米公司搜索引擎成为雅虎的网站搜索引擎[4]。这一合作不但为谷歌带来了重要的收入,还为谷歌增加了成倍的搜索量。大量涌入的用户访问为谷歌提高引擎的准确度和优化算法提供了重要的实验温床。这些用户搜索所产生的数据都自动被存入搜索服务器的日志中。不久,谷歌工程师发现通过系统地分析搜索日志可以发现很多有价值的信息。比如一个用户如果点击了第一个搜索结果就不再回到谷歌的话,就说明谷歌提供的搜索结果是好的。如果用户点击了第一个之后,很快又回到原来的搜索页面,又点击后面的搜索结果,说明用户没有从第一个搜索结果中找到他所需要的东西。如果这一现象对某一个搜索关键词反复出现,说明在算法方面需要提高。于是通过服务器日志分析,谷歌开始一点一滴地全面提高它的搜索算法。最早的突破是谷歌的搜索专家发现用户搜索关键词的同义词和背景信息对提高搜索准确度至关重要[5]。于是通过将这些关键词的关联信息进行收集和整理,谷歌的工程师积累了大量近义词信息。这些信息被制成专门的数据索引供算法使用,大大丰富了谷歌对未来搜索的理解程度,渐渐可以根据用户输入关键词的关联信息来决定搜索结果的查询方向。

关联词信息为谷歌的工程师遇到的另一个技术瓶颈的解决也起到了关键性的作用,这就是对人名、地名等专有名词的解析。这个问题的解决对谷歌的意义重大,因为谷歌的用户搜索中,人名的搜索占了8%。为了解决这个问题,谷歌首先通过购买电话白页公司的数据库获得了大批人名和地址信息。这使得谷歌算法可以学习人名的拼写和出现规律。然后通过使用二元语法切分,谷歌成功地从用户搜索的关键词中将人名、地名等信息与其他搜索关键词区分开来[6]。类似的优化使得谷歌的算法准确度越来越高。

通过谷歌工程师们对不断增加的搜索数据的研究,包括最初的佩奇排名在内的多达200多个解读信号被先后应用到算法设计中,成为决定搜索结果排名的因素。为了将这些信号成功地整合到新算法中,辛格尔开始重新编写谷歌的搜索引擎[7],并在2001年1月对完成的新引擎进行了测试。当用户反馈积极后,新引擎被正式使用。这是谷歌在成立后第一次重要的引擎升级,随后每隔两三年,谷歌都会进行类似的升级。

1999年6月,谷歌进行了第二轮融资。这次谷歌获得了硅谷最重要的两大创投的青睐,凯鹏华盈的杜尔和红杉资本的莫里斯都看中了谷歌的潜力,并且破例同意共同投资谷歌,每家投入1250万美元,总共2500万美元。这次投资使得谷歌从资金到管理上都进入了一个新的阶段。在创投公司的不断敦促下,布林和佩奇认识到需要找一位资深的IT经理人来帮助管理谷歌的发展。2001年3月,他们聘请了之前在升阳公司任职的艾瑞克·施密特(Eric Schmidt)为公司的总裁。作为UNIX系统专家的施密特比布林和佩奇大将近20岁,施密特主要负责公司的商业外联,布林和佩奇则继续将主要精力放在产品开发上。谷歌逐渐形成了三人共同管理的领导局面。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈