2.4.3 排名
经过搜索引擎蜘蛛抓取页面,索引程序计算得到倒排索引后,搜索引擎就已准备好,可以随时处理用户搜索了。用户在搜索框输入查询词后,排名程序就会调用索引库数据,计算排名并显示给用户。排名过程是与用户直接互动的。
1.搜索词处理
搜索引擎接收到用户输入的搜索词后,需要对搜索词做一些处理,才能进入排名过程。搜索词处理包括如下几方面。
(1)中文分词。与页面索引时一样,搜索词也必须进行中文分词,将查询字符串转换为以词为基础的关键词组合。其分词原理与页面分词相同。
(2)去停止词。和页面索引时一样,搜索引擎也需要把搜索词中的停止词去掉,最大限度地提高排名相关性及排名效率。
(3)指令处理。查询词完成分词后,搜索引擎的默认处理方式是在关键词之间使用“与”逻辑。也就是说,用户搜索“减肥方法”时,程序分词为“减肥”和“方法”两个词,搜索引擎排序时默认用户寻找的是既包含“减肥”,又包含“方法”的页面。只包含“减肥”不包含“方法”,或者只包含“方法”不包含“减肥”的页面,则被认为是不符合搜索条件的。当然,这种说法只是为了极为简要地说明原理,实际上我们还是会看到只包含一部分关键词的搜索结果。另外,用户输入的查询词还可能包含一些高级搜索指令,如加号、减号等,搜索引擎都需要进行识别并做出相应处理。有关高级搜索指令将在后面详细说明。
(4)拼写错误矫正。用户如果输入了明显错误的字或错误的英文单词拼法,搜索引擎会提示用户正确的用字或拼法,并进行矫正,如图2-38所示。
图2-38 输入的错拼、错字矫正
(5)整合搜索触发。某些搜索词会触发整合搜索,比如明星的姓名就经常触发图片和视频内容,当前的热门话题又容易触发资讯内容。哪些词触发哪些整合搜索,也需要在搜索词处理阶段计算。
(6)搜索框提示。用户在搜索框输入查询词的过程中,搜索引擎就会根据热门搜索数据给出多组相关的查询词,减少用户的输入时间。
(7)理解搜索真实意图。现在的搜索算法都会尝试深入理解用户的真实搜索意图,尤其是在查询词意义不明或存在歧义时,理解错误,自然会返回错误的页面。对查询意图的理解无法通过关键词的匹配实现,目前是以人工智能、机器学习方法为主,而且进展快速。后面的章节将详细介绍。
2.文件匹配
搜索词经过处理后,搜索引擎得到的是以词为基础的关键词集合。文件匹配阶段就是找出包含所有搜索关键词的所有文件。在索引部分提到的倒排索引使得文件匹配能够快速完成,如表2-3所示。
表2-3 倒排索引快速匹配文件
假设用户搜索“关键词2”和“关键词7”,排名程序只要在倒排索引中找到“关键词2”和“关键词7”这两个词,就能找到分别含有这两个词的所有页面。经过简单的求交集计算,就能找出既包含“关键词2”,又包含“关键词7”的所有页面:文件1和文件6。
3.初始子集的选择
找到包含所有关键词的匹配文件后,还不能进行相关性计算,因为找到的文件通常会有几十万、几百万,甚至上亿个。要对这么多文件实时进行相关性计算,需要很长时间。
实际上,用户并不需要知道所有与关键词匹配的几十万、几百万个页面,绝大部分用户只会查看前两页的搜索结果,也就是前20个结果。搜索引擎也并不需要计算这么多页面的相关性,而只要计算最重要的一部分页面即可。经常使用搜索引擎的人都会注意到,搜索结果页面通常最多可显示100个。用户点击搜索结果页面底部的“下一页”链接,最多也只能看到第100页,也就是1000个搜索结果。如图2-39所示,Google曾经显示100页搜索结果,现在则不固定,不同查询词可能显示40~50页搜索结果。
百度则通常显示76页搜索结果,如图2-40所示。
图2-39 Google显示100页搜索结果(曾经)
图2-40 百度显示76页搜索结果
总之,一次搜索最多显示1000个搜索结果,所以搜索引擎只需要计算前1000个结果的相关性,就能满足用户的搜索要求。
但问题在于,在还没有计算相关性时,搜索引擎又怎么知道哪1000个文件是最相关的呢?所以选择用于最后相关性计算的初始页面子集时,必须依靠其他特征而不是相关性,其中最主要的就是页面权重。由于所有匹配文件都已经具备了最基本的相关性(这些文件都包含所有查询词),搜索引擎通常会用非相关性的页面特征选出一个初始子集。初始子集的数目是多少?几万个?或许更多,外人并不知道。不过可以肯定的是,当匹配页面数目巨大时,搜索引擎不会对这么多页面进行实时计算,而必须选出页面权重较高的一个子集作为初始子集,再对子集中的页面进行相关性计算。
4.相关性计算
选出初始子集后,子计算集中的页面与关键词的相关性。计算相关性是排名过程中最重要的一步,也是搜索引擎算法中最令SEO感兴趣的部分。
最经典的关键词-文件相关性计算方法是TF-IDF公式:
Wx,y=tfx,y×log(N/dfx)
● Wx,y是文件y与关键词x的相关性。
● tfx,y是关键词x在页面y上出现的次数,即词频(term frequency)。
● dfx是文件频率(document frequency),也就是包含关键词x的文件总数。
● N是常量,所有文件的总数。
N除以dfx后取对数,称为IDF,逆文件频率(inverse document frequency)。取对数是为了归一化,使数值范围按比例缩小。
所以,TF-IDF所代表的意思就是,相关性等于词频乘以逆文件频率。
关键词出现的次数越多,词频越大,文件与关键词的相关性就越高,这是仅凭直觉就可以想到的。但词频作为相关性因子存在几个问题:一是可以很容易地被人为提高、作弊。二是没有考虑文件的篇幅,所以真正使用时还应该考虑关键词密度。三是没有考虑关键词的常用程度,因此引入逆文件频率。
逆文件频率代表了关键词的常用程度。语言中越常见的词,包含这个词的文件总数越多,文件频率也就越高,逆文件频率越低,关键词与文件的相关性也越低。
所以逆文件频率也代表了这个词的语义重要性及其对相关性的贡献程度,或者说是区别文件的能力。举例来说,“的”在几乎所有文件中都会出现,文件频率极高,逆文件频率极低,也就是说,“的”这个词的语义重要性很低,对文件相关性没什么贡献,几乎无法用来代表和区别文件内容。
反过来,越不常用的词对文件相关性的贡献越大。“搜索引擎”这个词只出现在一小部分文件中,逆文件频率要高得多,对文件内容来说重要性要高得多。举个极端例子,假如用户输入的查询词是“作者昝辉”。“作者”这个词还算常用,在很多页面上会出现,它对“作者昝辉”这个查询词的辨识程度和意义相关度的贡献就很小。找出那些包含“作者”这个词的页面,对搜索排名相关性几乎没有什么影响,显然无法满足搜索需求。而“昝辉”这个词的常用程度极低,除了指我本人,大概没有其他意思,对“作者昝辉”这个查询词的意义贡献要大得多。那些与“昝辉”这个词相关度高的页面,才是真正与“作者昝辉”这个查询词相关的页面。
常用词的极致就是停止词,对页面意义完全没有影响。
所以搜索引擎在对搜索词字符串中的关键词进行处理时并不是一视同仁的,会根据其常用程度进行加权。不常用的词加权系数高,常用词加权系数低,排名算法对不常用的词会给予更多关注。
我们假设A、B两个页面都出现了“作者”及“昝辉”两个词。但是“作者”这个词在A页面出现于普通文字中,“昝辉”这个词在A页面出现于标题标签中。B页面正相反,“作者”出现在标题标签中,而“昝辉”出现在普通文字中。那么针对“作者昝辉”这个查询,A页面的相关性将更高。
TF-IDF是最经典的相关性算法,其思路和公式很简单,搜索引擎真正使用的算法以此为基础,但肯定要复杂得多。
除了TF-IDF,相关性算法还可能考虑:
(1)关键词位置及形式。就像在索引部分中提到的,页面关键词出现的格式和位置都被记录在索引库中。关键词越是出现在比较重要的位置,如页面标题、黑体、H标签等,就说明页面与关键词越相关。这一部分就是页面SEO要解决的问题。
(2)关键词距离。切分后的关键词在页面上完整匹配地出现,说明此页面与查询词最相关。比如搜索“减肥方法”时,连续完整出现“减肥方法”四个字的页面是最相关的。如果“减肥”和“方法”两个词在页面上没有连续匹配出现,但出现的距离较近,此页面也被搜索引擎认为相关性较大。
(3)链接分析及页面权重。除了页面本身的因素,页面之间的链接和权重关系也影响其与关键词的相关性,其中最重要的是锚文字。页面有越多以查询词为锚文字的导入链接,就说明页面的相关性越强。链接分析还包括了链接源页面本身的主题、锚文字周围的文字等。
上面简单介绍的几个因素在本书后面的章节都有更详细的说明。
5.排名过滤及调整
选出匹配文件子集、计算相关性后,大体排名就已经确定了。之后搜索引擎可能还有一些过滤算法,对排名进行轻微调整,其中最主要的过滤就是施加惩罚。一些有作弊嫌疑的页面,虽然按照正常的权重和相关性计算排到前面,但搜索引擎的惩罚算法却可能在最后一步把这些页面调到后面。典型的例子是百度的11位算法,Google的负6、负30、负950等算法。
6.排名显示
所有排名确定后,排名程序调用原始页面的标题标签、说明标签、页面发布或更新时间、结构化数据等信息显示就在搜索结果页面上。如果页面没有说明标签,或说明标签写得不好,搜索引擎也会从页面正文中动态生成页面说明文字。
7.搜索缓存
用户搜索的查询词有很大一部分是重复的。按照二八定律,20%的搜索词占到了总搜索次数的80%。按照长尾理论,最常见的搜索词即便没有占到80%那么多,通常也有一个比较粗大的头部,很少一部分搜索词占到了所有搜索次数的很大部分。尤其是有热门新闻发生时,每天可能有几百万人都在搜索完全相同的词。
如果每次搜索都重新处理排名,可以说是很大的浪费。搜索引擎会把最常见的查询词及结果存入缓存,用户搜索时直接从缓存中调用,而不必经过文件匹配和相关性计算,大大提高了排名效率,缩短了搜索反应时间。
8.查询及点击日志
搜索用户的IP地址、搜索词、搜索时间,以及点击了哪些结果页面,搜索引擎都会记录并形成日志。这些日志文件中的数据对搜索引擎判断搜索结果质量、调整搜索算法、预期搜索趋势、开发人工智能算法等都具有重要意义。
前文简单介绍了搜索引擎的工作过程,实际上搜索引擎的工作步骤与算法是极为复杂的。上面的说明很简单,但其中包含了很多技术难点。
搜索引擎还在不断优化、更新算法,并大力引入人工智能。不同搜索引擎的工作步骤会有差异,但大致上所有主流搜索引擎的基本工作原理都是如此,在可以预期的未来十几年,不会有实质性的改变。