2.2 搜索引擎面对的挑战
搜索引擎系统是最复杂的计算系统之一,当今主流搜索引擎服务商都是财力、人力、技术雄厚的大公司。但即使有技术、人力、财力的保证,搜索引擎还是面临很多技术挑战。搜索引擎诞生后的十多年中,技术已经得到了长足的进步。我们今天看到的搜索结果质量与十几年前,甚至二十年前相比已经好得多了。不过这还只是一个开始,搜索引擎必然还会有更多创新,提供更多、更准确的内容。
总体来说,搜索引擎主要面临以下几方面的挑战。
1.页面抓取需要快而全面
互联网是一个动态的内容网络,每天有无数页面被更新、创建,无数用户在网站上发布内容、沟通联系。想要返回最有用的内容,搜索引擎就要抓取最新的页面。但是由于页面数量巨大,搜索引擎蜘蛛每更新一次数据库中的页面都要花很长时间。搜索引擎刚诞生时,抓取、更新的周期往往以月为单位计算。这也是Google在2003年以前每个月进行一次大更新的原因。
现在主流的搜索引擎都已经能在几天之内更新重要页面了,高权重网站上的新文件在几小时甚至几分钟之内就会被收录。不过,这种快速被收录和更新的情况也只局限于高权重网站,很多页面几个月不被重新抓取和更新也是常见的。
要返回最好的结果,搜索引擎必须抓取尽量全面的页面,这就需要解决很多技术问题。一些网站并不利于搜索引擎蜘蛛的爬行和抓取,诸如网站链接结构存在缺陷、大量使用Flash、JavaScript脚本,或者把内容放在用户必须登录以后才能访问的部分,都增大了搜索引擎抓取内容的难度。
2.海量数据存储
一些大型网站单是一个网站就有百万、千万,甚至上亿个页面,可以想象,网上所有网站的页面加起来是一个什么规模的数据量。搜索引擎蜘蛛抓取页面后,还必须有效地存储这些数据,且数据结构必须合理,具备极高的扩展性,这对写入和访问速度的要求也很高。
除了页面数据,搜索引擎还需要存储页面之间的链接关系和大量历史数据,这样的数据量是用户无法想象的。据估测,百度有三四十万台服务器,Google有几十个数据中心,上百万台服务器。这样大规模的数据存储和访问必然存在很多技术挑战。
我们经常在搜索结果中看到,排名会没有明显原因地上下波动,甚至可能刷新一下页面,就会看到不同的排名,有的时候网站数据也可能丢失。这些情况有时候与大规模数据存储、同步的技术难题有关。
3.索引处理快速有效,具可扩展性
搜索引擎将页面数据抓取和存储后,还要进行索引处理,包括链接关系的计算、正向索引、倒排索引等。由于数据库中页面数量大,进行PR值之类的迭代计算也是耗时费力的。要想提供相关又及时的搜索结果,仅依靠抓取是没有用的,还必须进行大量的索引计算。由于随时都有新数据、新页面加入,索引处理也要具备很好的扩展性。
当数据量不大时,上面说的抓取、存储和索引计算都不是很大的难题,但当数据多到难以想象的海量时,即使最顶尖的科技巨头也无法避免出现问题。2020年,Google已经发生了数次大规模索引库无法索引新页面、数据丢失之类的问题。
4.查询处理快速准确
查询是普通用户唯一能看到的搜索引擎工作步骤。用户在搜索框输入查询词,点击搜索按钮后,通常不到一秒,搜索结果页面就会显示最相关、质量最高、最有用的信息,并且按照相关性、权威性排列。表面上看这一过程非常简单,实际上涉及了非常复杂的后台处理。搜索引擎排序算法高度复杂,细节极为保密,且处于不停变动更新中。
在最后的查询阶段,另一个难题是速度,这考验了搜索引擎怎样在不到一秒的时间内,从可能多达上亿个包含查询词的页面中,快速找到最合适的页面并计算排名。
5.准确判断用户的搜索意图
前4个挑战现在的搜索引擎都已经能够比较好地应对。为进一步提高搜索结果质量,近几年搜索引擎都非常关注准确判断用户搜索意图的问题。不同用户搜索相同的查询词,很可能是在寻找不同的东西。比如搜索“苹果”,用户到底是想了解水果、计算机,还是电影?有的查询词本身就有歧义,比如搜索“中国 新加坡 签证”,用户是想了解中国人去新加坡的签证,还是新加坡人去中国的签证呢?没有上下文,没有对用户个人搜索习惯的了解,就完全无从判断。
搜索引擎目前正在致力于基于对用户搜索习惯的了解、历史数据的积累,在语义搜索技术的基础上,判断搜索意图,理解文档真实意义,返回更相关的结果。根据搜索引擎这几年透露的讯息,人工智能、深度学习在理解用户真实意图、理解文档主题方面发挥着越来越重要的作用。今后,搜索引擎是否能够达到人工智能的水平,能否真正了解用户查询的意义和目的,让我们拭目以待。