2.2 基于算法的排名系统:爬行、索引和排名
理解爬行、索引和排名的工作原理,有助于SEO从业者确定达到目标所需要采取的措施。本节主要介绍Google和必应的运营方式,不一定适用于其他流行搜索引擎,例如,Yandex(俄罗斯)、百度(中国)、Seznam(捷克斯洛伐克)和Naver(韩国)。
搜索引擎必须很好地执行几个任务,才能提供相关的搜索结果。简单地说,可以这样看待这些任务:
爬行和索引Web上的几十亿个文档(网页和文件)。(注意,它们会忽略自己认为是“无价值”的网页,这可能是因为它们认为这些网页不能增加新的价值,或者在Web上根本得不到引用。)
提供相关页面的列表响应用户查询。
本节从非技术角度介绍这些功能的基础知识,首先讨论搜索引擎如何查找和发现内容。
2.2.1 爬行与索引
为了提供尽可能好的结果,搜索引擎试图发现万维网上所有公开的网页,然后显示与用户搜索查询最匹配的结果。这一过程的第一步是Web爬行。搜索引擎从一组众所周知的高质量网站开始,然后访问这些网站每个页面上的链接,以发现其他网页。
Web的链接结构将所有公共的网页联系在一起。通过链接,搜索引擎的自动机器人(称作爬行器或者蜘蛛)能够接触到数以亿计相互连接的文档。
在图2-10中,你可以看到美国政府官方网站的主页http://www.usa.gov
,页面上的链接在图2-10上标出,对这个页面的爬行从加载网页开始,然后分析其内容,接着查看它所链接的其他网页。
然后,搜索引擎加载其他页面并分析其内容。这一个过程不断重复直到爬行过程完成。由于Web巨大而复杂,因此爬行过程的复杂度极高。
搜索引擎并不是每天都试图爬行整个Web。实际上,搜索引擎可以发现有些页面的重要性不足以出现在搜索引擎中,从而不对这些页面进行爬行。下一节将讨论重要性所起的作用。
一旦搜索引擎在爬行中读取一个页面,其下一步工作就是解析它们的代码,并将页面中精选的部分存放在大型磁盘阵列里,以便在查询时调用。这一过程的第一步是建立关键词词典。关键词词典是分类搜索引擎爬行得来的每个页面上所有重要关键词的大型数据库。其他一些数据(如页面链接地图、链接的锚文本、链接是否被当作广告等)也记录在内。存储瞬间内就能访问到的数千亿(甚至万亿)个网页的信息是极其繁重的任务,为此搜索引擎建立了许多大型的数据中心。
构建搜索引擎的关键概念之一是确定从Web的哪个位置开始爬行。尽管从理论上讲,可以从许多不同的地方开始,但是最理想的情况还是从一组信任的网站开始爬行。
从已知可信的一组网站开始,搜索引擎就能度量通过爬行过程找到的其他网站的可信度。7.1节将更详细地讨论可信度在搜索算法中所起的作用。
2.2.2 检索和排名
对于大部分搜索者来说,对答案的追求从图2-11中所示的搜索开始。
查询的下一步发生在搜索引擎返回Web上的相关网页列表时,这一列表按照搜索引擎所认为的用户满意度排序。这一过程要求搜索引擎在它所搜集的几千亿个文档寻找,并进行两项工作:第一,仅返回与搜索者的查询相关的结果,第二,按照重要性(考虑网站相关的可信度和权威性)排序结果。相关性和重要性都是SEO过程所要影响的因素。
相关性(relevance)是搜索返回文档的内容与用户查询的意图和关键字相匹配的程度。如果页面包含与用户查询相关的关键字,或者指向页面的链接来自相关页面且使用相关的锚文本,文档的相关性也就随之提高。
你可以将相关性看做“游戏”中的第一步。如果网站与查询不相关,搜索引擎就不会在该查询的搜索结果中包含它。2.3节将更详细地讨论如何确定相关性。
重要性(importance)指的是相对重要性,通过对匹配用户查询的指定文档的引用(citation,常见于学术和商业文件中一篇文章对另一篇文章的参考)次数来度量。每当被其他文档引用时,参考文档的重要性就会提高。在当今的在线环境中,引用可以以文档的链接或者社交媒体网站上的引用等形式发生。确定这些信号权重的方法称为引用分析(citation analysis)。
你可以将重要性看做确定一组同等相关的页面出现在搜索结果中顺序的一种手段。网站的相对权威性以及搜索引擎对该网站的信任度是重要的决定因素。当然,影响排名的因素绝非仅此而已,所有页面的相关性也不可能都一样。最终,相关性和重要性综合确定排名顺序。
因此,当你看到图2-12所示的搜索结果页面时,就能推测对于“marvel superhero stamps”(神奇超级英雄图章)的搜索,搜索引擎(在这个例子中,是必应)认为ebay.com上的神奇超级英雄图章相关网页有最高的相关性和重要性综合得分。
重要性和相关性不是人工确定的(即使地球上所有人都参与也无法应付),而是由搜索引擎精心设计出来的数学公式(算法)从大量页面中进行筛选,然后按照质量排名的。这些算法通常由数百个因素组成,在搜索营销领域,通常称这些因素为排名因素(ranking factor)或者算法排名条件(algorithmic ranking criteria)。2.4节将更详细地讨论排名因素(或者Google所称的“信号”)。
图2-12:“marvel superhero stamps”(神奇超级英雄图章)搜索结果示例
2.2.3 评估网页内容
搜索引擎为每个网页上的内容赋予很高的权重。毕竟,一个页面是关于什么的是由其内容决定的,为了做出这一决定,搜索引擎对爬行中找到的每个页面进行细致的分析。
你可以这样认为:搜索引擎对出现在网页上的所有单词和短语做出细致的分析,然后构建一张数据地图,用于在用户输入相关搜索查询时确定是否在结果中显示该页。这张地图通常称为语义地图(semantic map),能够帮助搜索引擎理解页面与用户搜索查询之间的匹配度。
如果页面内容与查询在语言上不匹配,页面出现在结果页面上的可能性就要低得多。因此,你在页面上放置的单词和页面的“主题”在排名中有巨大的作用。
图2-13展示了搜索引擎分割页面的方式,用的是Stone Temple Consulting网站上的一个页面。
在一个网站上,一个网页的导航元素可能和许多网页的导航元素都很类似。搜索引擎不会忽略这些导航元素,它们也起着重要的作用,但是对搜索引擎确定网页上的独特内容没有帮助。在这方面,搜索引擎关注的是页面的“实际内容”(图2-13中标出的地方)。
确定页面上的独特内容是搜索引擎工作的重要组成部分,对页面独特内容的理解,正是搜索引擎用于确定网页与各类搜索查询是否匹配的因素。由于网站上的许多页面通常都使用相同的导航,因此它对搜索引擎区分相同网站上各个页面的独特内容没有作用。
这并不意味着导航链接不重要,它们无疑是重要的,但是,因为许多网页共享相同的导航链接,在确定网页独特内容的时候它们未予考虑。
搜索引擎所面临的任务之一是判断内容的价值。尽管使用链接分析判断公众对内容的反应是该过程的一部分,但是搜索引擎还可以根据其在网页上看到的内容得出一些结论。
例如,另一个网站上是否有完全相同的内容?搜索引擎所能发现的独特内容是两句话还是长达500多个字?内容是否过度重复相同的关键词?这只是搜索引擎在确定内容价值时所考虑的几个因素。
2.2.4 搜索引擎在网页上能“看到”什么内容
搜索引擎爬行器和索引程序本质上是软件程序。这些程序非常强大,它们能够爬行数以万亿计的网页,分析所有页面的内容和这些网页相互之间的链接关系。然后,它们将这些数据组织为一系列数据库,能够在零点几秒之内响应用户搜索查询,提交一组非常合适的结果。
这是个令人惊叹的成就,但是它也有局限性。软件是非常机械的,它只能理解大部分网页的部分内容。搜索引擎爬行器分析网页的原始HTML形式。使用浏览器查看页面的源代码,你就能看到这种形式。
图2-14和图2-15说明了在Firefox和Internet Explorer中查看源代码的方法,分别是Tools→Web Developer→Page Source和Page→View Source。
你在源代码中可以看到Web服务器发给浏览器的实际网页代码。这也是搜索引擎爬行器所看到的(搜索引擎还会看到页面的HTTP头信息)。在分析网页上的用户可见内容时,搜索引擎多半会忽略与导航和页面显示相关的代码,例如,在图2-16中看到的那些,因为这些代码与网页的内容无关。
搜索引擎爬行器最感兴趣的是页面上的HTML文本。图2-17是网页HTML文本的一个例子(以SEOmoz.org首页为例)。
尽管图2-17仍然显示了一些HTML编码,但是你可以在代码中清晰地看到“常规”文本。这是爬行器所寻求的独特内容。
此外,搜索引擎还读取其他一些内容。其中之一是页面标题。页面标题是网页排名最重要的因素之一,它就是显示在浏览器标题栏(在浏览器菜单和地址栏之上)的文本。
图2-18展示了爬行器看到的代码,以Trip Advisor为例。
图2-18中的第一个圆圈标出的是标题标记。标题标记常用作搜索引擎结果中列出的标题。例如,图2-19展示了搜索“bank loans”的结果,注意,搜索标题中列出的Citibank和Capital One分别和首页的标题相同。
图2-15:在Internet Explorer中查看源代码
当你获得网站的DOMZ(Open Directory)列表时,这条规则可能有例外。在这种情况下,搜索引擎可能选择使用这一目录中列表使用的页面标题,代替页面上的标题标记。可以使用NOODP标记阻止这种情况发生,该标记告诉搜索引擎不要使用DMOZ标题。
除了标题标记之外,搜索引擎读取关键词元标记(图2-18中第二个圆圈标出的)。这里,可以指定与页面相关的关键词列表。多年以前,垃圾制造者(spammer,试图操纵搜索引擎结果,违反搜索引擎指导方针的人)就破坏了这个标记的SEO价值,所以现在它已经无足轻重。Google完全不将这个标记用于排名,但是必应似乎还将其作为参考。由于不能为SEO带来好处,不建议在元关键词上花费太多时间。
搜索引擎还阅读描述元标记(图2-19中第三个圆圈标出的)。描述元标记对搜索引擎排名没有任何影响,但是起着关键的作用,这是因为搜索引擎经常将它作为搜索结果中页面描述的一部分。精心编写的描述元标记对搜索列表上得到的点击数有重大的影响,所以将时间花在元描述上是有价值的。图2-20展示了在关于“trip advisor”的搜索中,元描述作为搜索结果描述的一个例子。
注意
用户的关键词在搜索结果中一般以粗体显示(有时候同义词也以粗体显示)。图2-20是一个例子,在描述的开始有粗体的TripAdvisor,这称为上下文关键词(KeyWords In Context,KWIC)。
搜索引擎读取的第4个元素是图片的alt属性。alt属性原来是用于在无法查看图片的时候显示某些内容,对此有两类基本受众:
无法查看图片的视觉受损者。
为了更快地浏览网络而关闭图片的人(通常只有没有宽带连接的人才需要这么做)。
对视觉受损者的支持成为使用alt属性的首要原因。你可以访问W3C网站的Web可访问性倡议网页阅读更多的相关信息。
搜索引擎还读取在图片标记的alt属性中包含的文本,图片标记用于告诉网页显示图片的元素。下面是来自Alchemist Media网站的一个图片标记实例:
<img alt="Top Search Agencies" src="/images/b2bsmall.jpg" title="BtoBMagazine"
class="alignnone" height="75" width="120">
alt属性(在本例中是alt="Top Search Agencies")为图片提供了一些描述文本,标记中src=这一部分表示所显示图片所在的位置。
搜索引擎读取alt属性的内容,帮助确定图片相关的内容,这对于页面内容的确定也有一定的意义。
搜索引擎阅读的另一个元素是NoScript标记。一般来说,搜索引擎只会以有限的方式尝试解析网页上出现的JavaScript代码(但是随着时间流逝,这一切可能会改变)。但是,少部分用户(按照作者的经验,大约占2%)在加载网页时会禁用JavaScript。对于这些用户,除非页面包含NoScript标记,否则网页上JavaScript所在的页面上什么都不会显示。
下面是说明这种情况的一个简单JavaScript示例:
<script type="text/javascript">
document.write("It Is a Small World After All!")
</script>
<noscript>Your browser does not support JavaScript!</noscript>
NoScript部分的内容是Your browser does not support JavaScript!(你的浏览器不支持JavaScript)。搜索引擎将读取这段文本,将其视为网页的相关信息。在这个例子中,还可以选择让NoScript标记包含文本“It Is a Small World After All!”(世界毕竟很小!),这是更具描述性的内容。NoScript应该只用于精确地表现JavaScript的内容。(搜索引擎可能将这个标记中放置的其他内容或者链接当作垃圾制造者的行为。)此外,浏览器警告可能被搜索引擎用作你的页面在搜索结果中的描述,这是一件很糟糕的事情。
搜索引擎看不到的东西
搜索引擎“看”不到的内容类型也值得研究。
例如,尽管搜索引擎能够检测到你显示一幅图片,但是除非你在前面介绍的alt属性中提供了信息,否则它们无法得知图片展示的是什么。它们只知道图片中的某些基本的信息,例如,图片上有一张脸,或者图片是否含有色情内容(通过图片中有多少肉色来判断)。搜索引擎无法得知一幅图片显示的是Bart Simpson还是一条船,一所房子还是龙卷风。此外,搜索引擎也无法识别图片中显示的任何文本。搜索引擎正在试验使用光学字符识别(Optical Character Recognition, OCR)从图片中提取文本,但是这种技术还没有得到普遍的应用。
另外,传统的SEO观念一直认为搜索引擎无法读取Flash文件,但是这有些言过其实了。搜索引擎多年前就已经能从Flash中提取一些信息,这在Google 2008年的公告中就已经指出。但是,搜索引擎不容易确定Flash里到底有什么。最大的问题之一是,即使搜索引擎探究Flash的内部,它们所寻找的仍然是文本内容,而Flash是图形化的媒体,没有什么因素能够驱使设计人员在Flash中采用文本(除了对搜索引擎的好处以外)。即使HTML与Flash一起使用,存在于HTML文本中的所有语义线索(例如,标题标记、粗体文本等)也都不见了。
而且,搜索引擎看不到Flash中包含的任何图片内容,这就意味着当Flash中的文本转化为矢量轮廓时,搜索引擎所能读取的文本信息也就丢失了。第6章将讨论优化Flash的方法。
音频和视频文件也不容易被搜索引擎读取。和图片一样,这些数据难以解析。在少数例外情况下,搜索引擎能够提取有限的一些数据,例如,MP3文件中的ID3标记,或者以AAC格式存在的具有嵌入式“注释”、图片和章节标记的改进型播客。不过,搜索引擎终究无法区分足球赛和森林火灾的视频。
搜索引擎也无法读取程序里包含的内容。搜索引擎实际上寻找的是网页源代码中人们能够看见的文本,这在前面已经论述过。在浏览器加载网页之后你所能看到的内容于事无补,只有在页面源代码中可以看到和阅读的信息对搜索引擎才有意义。
AJAX技术就是这样一个例子,人们能够看到它所显示的内容,而搜索引擎却无法看到。 AJAX是一种基于JavaScript的技术,用于从数据库中获取数据,然后在不刷新整个页面的情况下动态显示网页内容。这种技术常用于网络上的一些工具,当用户访问网址时提供某些输入,AJAX工具获取并显示正确的内容。
在用户输入信息后,在客户计算机(用户计算机)上运行的一个脚本负责获取内容,这成为问题的根源。这种方式可能造成许多不同的输出。此外,在接收到输入之前,内容不出现在页面的HTML中,所以搜索引擎无法看到。Google提供了建立可爬行的AJAX应用程序的具体技巧,你可以在http://code.google.com/web/ajaxcrawling/docs/getting-started.html
看到。
一些其他形式的JavaScript在用户采取行动之前不显示HTML内容,从而造成了类似的问题。
在HTML 5中,创建了一个嵌入标记()结构,这种结构允许在HTML页面中加入插件。插件是在用户计算机而不是网站Web服务器上的程序。这个标记常用于在网页中插入视频或者音频文件。标记告知插件在哪里寻找数据文件。通过插件包含的内容对于搜索引擎来说完全不可见。
框架(frame)和iframe是在网页中加入来自其他网页内容的方法。Iframe比框架更常用于插入来自另一个网站的内容。可以用下面这样的代码执行iframe:
<iframe src ="http://accounting.careerbuilder.com" width="100%" height="300">
<p>Your browser does not support iframes.</p>
</iframe>
框架一般用于分割发布者网站的内容,但它也可以用于从其他网站加载内容,图2-21中是《芝加哥论坛报》(Chicago Tribune)网站的一个例子。
图2-21是从其他网站获取内容(假设你得到了授权)并与自己的内容组合的一个好例子。但是,搜索引擎能够识别从其他网站拉取内容的iframe或者框架,从而忽略iframe或者框架中属于其他发布者的内容。换句话说,它们不将从其他网站拉取的内容作为独特内容的一部分。