1.2 搜索引擎的工作原理

1.2.1 搜索引擎是如何运行的

搜索引擎的工作原理,可以看做三步:

从互联网上抓取网页→建立索引数据库→在索引数据库中根据搜索排序。

1.从互联网上抓取网页

利用能够从互联网上自动收集网页的Spider系统程序(专门用于检索信息的Robot(机器人)程序像蜘蛛(spider)一样在网络间爬来爬去,搜索引擎的Robot程序被称为spider程序),自动访问互联网,并沿着任何网页中的所有URL网址“爬”到其他网页,重复这一过程,并把爬过的所有网页收集回来。

相关概念

信息抓取:信息抓取是将非结构化的信息从网站中抓取出来保存到结构化的数据库中的过程。

搜索引擎蜘蛛(Search Engine Spider):是一个很形象的名称,如果把互联网比喻成一张蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。搜索引擎蜘蛛是通过网页的链接地址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其他链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一张网,那么搜索引擎蜘蛛就可以用这个原理把互联网上所有节点的网页都抓取下来。

网页抓取主要包括三个方面的工作:搜集新出现的网页;搜集那些在上次搜集后有改动的网页;发现自从上次搜集后已经不存在的网页,并从库中删除。

网页抓取的优先策略通常是尽可能地首先抓取重要性的网页,这样可以保证在有限的资源内尽可能地关注到那些重要性高的更高网页。什么是重要性更高的网页,主要是由以下几个方面决定的:

● 链接欢迎度。链接欢迎度主要是由反向链接(在其他网页中指向原网页的链接)的数目和质量决定的。

● 链接重要度。链接重要度是关于一个URL字符串的函数,仅仅考查字符串本身,它主要通过一些模式,如一般认为包含“.com”、“HOME”的URL重要度较高。

● 平均链接的深度。一个种子站点集合中,每个种子站点如果存在一条链接路径到达该网页,那么平均链接深度就是该网页的一个链接指标,因为距离种子站点越近说明被访问的机会越多。

2.建立索引数据库

由分析索引系统程序对收集回来的网页进行分析,提取相关网页信息(包括网页所在URL、代码类型、页面内容包含的所有关键词、关键词位置、生成时间、大小、与其他网页的链接关系等),根据一定的相关度算法进行大量复杂计算,得到每一个网页针对页面文字中及超链接中每一个关键词的相关度,利用这些相关信息建立网页索引数据库。

相关概念

索引:是对数据库表中一列或多列的值进行排序的一种结构,例如employee表的姓(name)列。如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引可以帮助我们快速访问数据库表中的特定信息。

数据库:是按照数据结构来组织、存储和管理数据的仓库。随着信息技术和市场的发展,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统,都在各个方面得到了广泛的应用。

通俗地理解,正类似于传统书籍中“索引”的意义(检索图书资料的一种工具,将书刊中的内容或项目分类摘录,标明页数,按一定次序排列,附在一书之前或之后,或单独编印成册,以便读者查阅),网页索引数据库就是将对应不同可能的关键词的网页(网页内容与关键词具有相关性)分类提取(摘录),标明所在位置(页数),只是这个数据库因为过于庞大,不能也没必要完整地展现给搜索者(读者),使用它只需要搜索者输入关键词即可。

3.在索引数据库中根据搜索排序

当搜索用户输入关键词后,搜索系统程序则从网页索引数据库中找到符合该关键词的所有相关网页。因为所有相关网页针对该关键词的相关度早已被计算好,所以只需按照现成的相关度数值排序即可,相关度越高,排名则越靠前。

最后,由页面生成系统将搜索结果的链接地址和页面内容摘要等组织起来返回给用户,也就是我们通常在点击“搜索”按钮后在眼前展现的结果列表页。

下面一段Google官方对其搜索技术的叙述可以加深大家对搜索引擎工作原理的理解:

“我们搜索技术的后端软件会在服务器侧触发一系列执行时间不到1秒的并行计算,Google问世前的传统搜索引擎的搜索结果严重依赖于关键词在页面上出现的频度,我们使用了200多个指标信号(其中包括我们拥有专利的PageRank页面等级加权算法)用来检查万维网的链接结构(佩奇和布林最初的想法是把万维网的链接结构用图论的有向无环图来建模)并决定网页的重要程度。我们假定一个网页的重要程度取决于别的页面对它的引用,就像学术论文中的引用指数一样,重要的论文总是会被很多其他论文引用。然后我们再根据搜索条件进行超文本匹配分析(对机器抓取的页面内容进行关键词倒排索引检索),确定跟搜索请求最相关的网页。综合最重要的网页和跟搜索请求最相关的网页两个方面,我们就能按重要程度和用户搜索请求相关程度把查询结果排序后呈现给我们的用户。”

以Google为例,搜索引擎的处理流程一般是:

(1)网站主进行网站内容的发布与更新;

(2)搜索引擎爬虫机器人(一种作为搜索引擎构件的智能代理程序)抓取网站主网页的title(标题)、description(描述)、keyword(关键词)、网页正文文字和图片等内容;

(3)一旦被搜索引擎爬虫机器人访问到,网页几秒钟内就被索引了,被存储在一个倒序排列的索引目录中;

(4)搜索引擎基于链接情况评估域名和网页的总体PageRank值,并检查网页以防止作弊行为;

(5)在对页面做了损害分析后,现在每个页面都有很多用于辅助用户搜索的数据片(比如检索关键词)反向引用;

(6)用户发出搜索请求;

(7)搜索引擎会用同义词匹配与搜索关键词语义相近的查询结果;

(8)生成初步的查询结果;

(9)对查询结果集按权威性和PageRank进行排序,重复的查询结果被剔除,并做一些过滤处理;

(10)最终返回给浏览器端的用户一个人性化的、布局良好的、查询结果和广告泾渭分明的有机查询结果页面。

一般以上流程会在1秒钟以内的时间完成。

PPCblog.com呈现给我们一幅由Jess Bachman精心描绘的流程图,这张流程图展示了每天拥有数亿次请求量的Google搜索按钮背后搜索引擎在那不到1秒钟的响应时间内所进行的处理,有兴趣的读者可以图片搜索一下,如图1-10所示。

图1-10

1.2.2 关于搜索引擎工作原理需要说明的重要问题

1.关于竞争程度

某个关键词被搜索后出现相关结果页的数量在一定程度上体现了该关键词的竞争程度——相关结果数越多,竞争越激烈,如图1-11所示。

图1-11

2.关于排序规则

搜索引擎结果的排序一般会由多个因素共同决定,而每个因素中又有更为细分的指标:

● 关键词分数。可能包括的指标有:网页标题(title)中关键词,H标签(h1-h6)中关键词的处理,文本内容中关键词的密度,外部链接中关键词的选择,域名中的关键词等。

相关概念

关键词密度(Keyword Density):也称为关键词频率(Keyword Frequency),是用来量度关键词在网页上出现的总次数与其他文字的比例,一般用百分比表示。相对于页面总字数而言,关键词出现的频率越高,关键词密度也就越大。

● 域名权重。可能包括的指标有:域名注册前的历史问题,域名注册时间的长短,外部链接网站的权重,是否使用历史、链接形式等。

● 外链分数。可能包括的指标有:链接域名权重,是否为锚文本,链接数量与链接权重(PR或其他搜索引擎页面质量参数),外部链接网页的主题相关度,外部链接的时间。

● 用户数据。可能包括的指标有:搜索引擎结果页面(SERPs)的点击率,用户在网页上的停留时间,域名或URL的搜索量,访问量及其他可以监测到的流量统计数据。

● 内容质量分数。可能包括的指标有:内容的相关性,内容的原创性,内容的独特(稀缺)性,内容的时效性。

● 其他人工干预因素。对于某些受限制或有需特别处理的关键词,人工干预将直接影响排序结果。

3.关于关键词可能对应的搜索结果及其排序

广告客户应该尽可能智能地“理解”关键词背后的搜索意图,举一个应用场景来说明:假设在某天我们在上网时浏览到某条体育新闻“利物浦3:1曼联 库伊特上演帽子戏法”,从兴趣和新闻点的角度可能会对库伊特这个人名产生兴趣,因而可能会在搜索引擎中搜索“库伊特”。搜索者最可能的意图是什么呢?让我们看下主流搜索引擎给出的解答结果,如图1-12所示。

图1-12

从百度给出的关于“库伊特”的搜索结果来看,排在第一位的是关于该人名的百科页面,百度搜索引擎“认为”搜索该词的人中应该有很多人是希望了解这个人的基本资料,而这个百科链接也足够有“权威”作为网页信息的代表来解答这种“了解”。后续几个链接则主要是关于库伊特的新闻报道及视频、图片信息,这些链接应该基本可以满足大多数搜索需要了解和应该被提供的信息内容。

Google对于本例的搜索结果类似,同样在前面几个排序中分别展示了资料类、新闻类的信息链接,只是前后顺序略有变化,如图1-13所示。

图1-13

这个例子说明,好的搜索引擎会根据搜索关键词可能反映的搜索者的搜索意图在尽可能前列的链接中来做迎合,这些结果是从统计意义上的大多数人所需要的,排序也能够满足大多数人对各自链接内容重要性的认可。此外,还能够非常好地体现时效性(关于新闻的部分)。

这个例子也说明,除了历史悠久的新闻类网站,普通网站几乎是没有可能靠发布一条与这个关键词相关的内容排在搜索结果页前列的。这是即使发现“热词”(搜索量很大的词)也很难将其相关页面排在前面(搜索引擎优化,SEO)的情况之一(还有很多其他情况)。