《这就是搜索引擎:核心技术详解》---梳理总结

2,213 阅读21分钟
17年由于项目需要,学习整理了一些SEO相关的知识,主要可以分为2部分:
《搜索引擎:核心技术详解》---梳理总结 
 SEO搜索引擎优化
本文主要内容为阅读《搜索引擎:核心技术详解》时的一些知识梳理与总结,包含搜索引擎索引、链接分析以及网页反作弊三部分

一、搜索引擎索引

索引,比如书籍目录就是一种索引结构,目的是为了让人们能够更快地找到相关章节内容搜索。搜索引擎的索引简单的理解就是爬虫将页面抓取后,进行数据整理、排列的一个过程。搜索引擎的索引即实现单词——文档矩阵的数据结构,在实际应用中有很多中方式可以实现,常见的为倒排索引。

索引基本概念

引擎的索引基本模型为单词-文档矩阵,如图:

横向可以看出哪些文档中包含了某词汇,纵向可以看出,某个文档中包含了哪些关键词
                             
  • 文档---任何以文件形式存在的对象
  • 文档编号---搜索引擎内部赋予的唯一标识,用于区别每个文档
  • 单词编号---搜索引擎内部赋予的唯一标识,用于区别每个单词
  • 倒排索引(Inverted Index)---实现单词—文档矩阵的一存储形式。可以根据单词快速获取包含这个单词的文档列表。由两个部分组成:单词词典和倒排文件
         
  • 单词词典(Lexicon)----搜索引擎通常的索引单位是单词,单词词典是由文档集合中出现 过的所有单词构成的字符串集合,单词词典内每条索引项记载单词本身的一些信息及指 向倒排列表的指针。常用的数据结构包括哈希加链表结构和树形词典结构。
  • 倒排列表(PostingList)----倒排列表记载了出现过某个单词的所有文档的文档列表及单词 在该文档中出现的位置信息,每条记录称为一个倒排项(Posting)。根据倒排列表,即 可获知哪些文档包含某个单词。
  • 倒排文件(Inverted File)----所有单词的倒排列表往往顺序地存储在磁盘的某个文件里, 这个文件即被称为倒排文件,倒排文件是存储倒排索引的物理文件。

在实际的搜索引擎内部一般记录的不是文档编号而是相邻两个文档的差值,这样讲大数值转化为小数值,提高了压缩效率

建立索引

  • 两遍文档遍历法---- 完全是在内存里完成索引的创建过程, 第一遍扫描的主要目的是获得一些统计信息,并根据统计信息分配内存等资 源,同时建立好单词相对应倒排列表在内存中的位置信息,即主要做些资源准备工作。 第二遍:填入倒排列表,写入磁盘。

                  

缺点:从磁盘读取文档并解析文档基本是最消耗时间的一个步骤,而两遍扫描法因为要对文档集合进行两遍遍历,所以从速度上不占优势,在实际中采用这种方法的系统并不常见。

  • 排序法- --处理文档--->中间结果排序--->中间结果写入磁盘---合并中间结果---->最终索引文件
  • 归并法- --处理文档--->内存数据写入磁盘--->合并索引与词典---->最终索引文件

               

动态索引

实时反映索引变化,3 个关键的索引结构:倒排索引、临时索引和 已删除文档列表。

  • 倒排索引----就是对初始文档集合建立好的索引结构,一般单词词典存储在内存,对应的倒排列表存储在磁盘文件中。

  • 临时索引----是在内存中实时建立的倒排索引,其结构和前述的倒排索引是一样的,区别在于词典和倒排列表都在内存中存储。当有新文档进入系统时,实时解析文档并将其追加进这个临时索引结构中。

  • 已删除文档列表----则用来存储已被删除的文档的相应文档ID,形成一个文档 ID 列表。

索引更新策略

当临时索引越来越大师内存不足,需要将临时索引写入磁盘----索引更新策略

常用的索引更新策略有4 种:完全重建策略、再合并策略、原地更新策略及混合策略。

  1. 完全重建策略----新文档临时索引+老文档--------->遍历生成新索引(废弃老索引)
  2. 再合并策略----新文档索引+老索引---->合并生成新索引(废弃老索引)
  3. 原地更新策略--增量索引+老索引---->老索引+附加新倒排信息
  4. 混合策略----一般将单词进行分类,然后采用不同的更新策略

二、链接分析

概念模型

随机游走模型----是一个对直接跳转和远程跳转两种用户浏览行为进行抽象的概念模型。包括 PageRank 算法在内的很多链接分析算法都是建立在随机游走模型基础上。

            

  1. 假设互联网由 A、B、C 3 个网页构成,其相互链接关系如图中页面节点之间的有向边所示。根据链接关系,即可计算页面节点之间的转移概率,比如对于节点 A 来说,只有唯一一个出链指向节点 B,所以从节点 A 跳转到节点 B 的概率为 1,对于节点 C 来说,其对节点 A 和 B 都有链接指向,所以转向任意一个其他节点的概率为 1/2。
  2. 假设在时刻 1,用户浏览页面 A,之后经由链接进入页面 B,然后进入页面 C,此时面临两种可能选择,跳转进入页面 A 或者页面 B 皆可,两者概率相同,都为 1/2。
  3. 假设例子中的互联网包含不止 3 个页面,而是由 10 个页面构成,此时用户既不想跳回页面A,也不想跳回页面 B,则可以按照 1/10 的概率跳入其他任意一个页面,即进行远程跳转。

子集传播模型-----把互联网网页按照一定规则划分,分为两个甚至是多个子集合。其中某个子 集合具有特殊性质,很多算法往往从这个具有特殊性质的子集合出发,给予子集合内网页初 始权值,之后根据这个特殊子集合内网页和其他网页的链接关系,按照一定方式将权值传递 到其他网页。

链接分析算法

在众多算法中,PageRank 和 HITS 算法可以说是最重要的两个具有代表性的链接分析算法,后续的很多链接分析算法都是在这两个算法基础上衍生出来的改进算法。

         

PageRank 算法

每个页面将其当前的PageRank 值平均分配到本页 面包含的出链上,这样每个链接即获得了相应的权值。而每个页面将所有指向本页面的入链 所传入的权值求和,即可得到新的 PageRank 得分。

HITS算法

Authority 页面,是指与某个 领域或者某个话题相关的高质量网页。比如搜索引擎领域,Google 和百度首页即该领域的 高质量网页;比如视频领域,优酷和土豆首页即该领域的高质量网页。Hub 页面, 指的是包含了很多指向高质量 Authority 页面链接的网页。

Hub与Authority之间的相互增强关系 。HITS 算法与用户输入的查询请求密切相关, 而 PageRank 算法是与查询无关的全局算法。

HITS 算法的目的是通过一定的技术手段,在海量网页中找到与用户查询主题相关的高质量 Authority 页面和 Hub 页面,尤其是 Authority 页面,因为这些页面代表了能够满足用户查询 的高质量内容,搜索引擎以此作为搜索结果返回给用户。

SALSA算法----请求--->扩展网页子集----->转为无向二分图---->计算权重--->返回结果

     

hilltop----专家网页搜索----->目标网页排序

主题敏感PageRank----离线分类主题PR值计算---->请求是相似度比较计算---->前两者的乘积之和

HITS 算法与 PageRank 算法比较

  1. HITS算法是与用户输入的查询请求密切相关的,而PageRank与查询请求无关。所以,HITS算法可以单独作为相似性计算评价标准,而PageRank必须结合内容相似性计算才 可以用来对网页相关性进行评价。
  2. HITS算法因为与用户查询密切相关,所以必须在接收到用户查询后进行实时计算,计算 效率较低;而PageRank则可以在爬虫抓取完成后离线计算,在线直接使用计算结果, 计算效率较高。
  3. HITS算法的计算对象数量较少,只需计算扩展集合内网页之间的链接关系;而PageRank是全局性算法,对所有互联网页面节点进行处理。
  4. 从两者的计算效率和处理对象集合大小来比较,PageRank更适合部署在服务器端,而HITS算法更适合部署在客户端。
  5. HITS算法存在主题泛化问题,所以更适合处理具体的用户查询;而PageRank算法在处 理宽泛的用户查询时更有优势。
  6.  HITS算法对于每个页面需要计算两个分值,而PageRank算法只需计算一个分值即可;在搜索引擎领域,更重视HITS算法计算出的Authority权值,但是在很多应用HITS算法的其他领域,Hub分值也很重要。
  7. 从链接反作弊的角度来说,PageRank从机制上优于HITS算法,而HITS算法更易遭受链 接作弊的影响。HITS算法结构不稳定,当对扩展网页集合内链接关系做出很小改变,则对最终排名有很 大影响;而PageRank算法相对HITS而言表现稳定,其根本原因在于PageRank计算时的 远程跳转。

三、网页作弊

从大的分类来说,比较常见的作弊方法包括:内容作弊、链接作弊、隐藏作弊及最近几年兴起的Web 2.0 作弊方法。学术界和搜索引擎公司也有针对性地提出了各种反作弊算法。

内容作弊

内容作弊的目的是通过精心更改或者调控网页内容,使得网页在搜索引擎排名中获得与其网页不相称的高排名。搜索引擎排名一般包含了内容相似性和链接重要性计算,内容作弊主要针对的是搜索引擎排序算法中的内容相似性计算部分,通过故意加大目标词词频,或者在网页重要位置引入与网页内容无关的单词来影响搜索结果排名。

常见内容作弊手段:关键词重复、无关查询词作弊、图片 alt 标签文本作弊、网页标题作弊、网页重要标签作弊、网页元信息作弊

内容农场:内容农场运营者廉价雇佣大量自由职业者,支持他们付费写作,但是写作内容普遍质量低下,很多文章是通过复制稍加修改来完成的,但是他们会研究搜索引擎的热门搜索词等,并有机地将这些词汇添加到写作内容中。这样,普通搜索引擎用户在搜索时,会被吸引进入内容农场网站,通过大量低质量内容吸引流量,内容农场可以赚取广告费用。

                 

链接作弊

所谓链接作弊,是网站拥有者考虑到搜索引擎排名中利用了链接分析技术,所以通过操纵页面之间的链接关系,或者操纵页面之间的链接锚文字,以此来增加链接排序因子的得分,并影响搜索结果排名的作弊方法。
  • 链接农场(Link Farm)
为了提高网页的搜索引擎链接排名,链接农场构建了大量互相紧密链接的网页集合,期望能够利用搜索引擎链接算法的机制,通过大量相互的链接来提高网页排名。链接农场内的页面链接密度极高,任意两个页面都可能存在互相指向的链接。
  • Google 轰炸(Google Bombing)
锚文字是指向某个网页的链接描述文字,这些描述信息往往体现了被指向网页的内容主题,所以搜索引擎往往会在排序算法中利用这一点。作弊者通过精心设置锚文字内容来诱导搜索引擎给予目标网页较高排名,一般作弊者设置的锚文字和目标网页内容没有什么关系。
几年前曾经有个著名例子,采用 Google 轰炸来操控搜索结果排名。当时如果用 Google搜索“miserable failure”,会发现排在第 2 位的搜索结果是美国时任总统小布什的白宫页面,这就是通过构建很多其他网页,在页面中包含链接指向目标页面,其链接锚文字包含“miserable failure”关键词所达到的效果。


  • 交换友情链接
  • 购买链接
  • 购买过期域名
  • 门页”作弊(Doorway Pages)
“门页”本身不包含正文内容,而是由大量链接构成的,而这些链接往往会指向同一网站
内的页面,作弊者通过制造大量的“门页”来提升网站排名。

页面隐藏作弊

页面隐藏作弊通过一些手段瞒骗搜索引擎爬虫,使得搜索引擎抓取的页面内容和用户点击查
看到的页面内容不同,以这种方式来影响搜索引擎的搜索结果。常见的页面隐藏作弊方式有
如下几种。
1. IP 地址隐形作弊(IP Cloaking)
网页拥有者在服务器端记载搜索引擎爬虫的 IP 地址列表,如果发现是搜索引擎在请求页
面,则会推送给爬虫一个伪造的网页内容,而如果是其他 IP 地址,则会推送另外的网页
内容,这个页面往往是有商业目的的营销页面。
2. HTTP 请求隐形作弊(User Agent Cloaking)
客户端和服务器在获取网页页面的时候遵循 HTTP 协议,协议中有一项叫做用户代理项
(User Agent)。搜索引擎爬虫往往会在这一项有明显的特征(比如 Google 爬虫此项可能
是:Googlebot/2.1),服务器如果判断是搜索引擎爬虫则会推送与用户看到的不同的页面
内容。
3. 网页重定向
作弊者使搜索引擎索引某个页面内容,但是如果是用户访问则将页面重定向到一个新的
页面。
4. 页面内容隐藏
通过一些特殊的 HTML 标签设置,将一部分内容显示为用户不可见,但是对于搜索引擎
来说是可见的。比如设置网页字体前景色和背景色相同,或者在 CSS 中加入不可见层来
隐藏页面内容。将隐藏的内容设置成一些与网页主题无关的热门搜索词,以此增加被用
户访问到的概率。

四、网页反作弊

网页反作弊是目前所有商业搜索引擎需要解决的重要难点,出于商业利益驱使,很多网站站长会针对搜索引擎排名进行分析,并采取一些手段来提高网站排名,而搜索引擎为了保证排名的公正性,也需要对作弊行为进行识别和处罚。作弊与反作弊会一直作为搜索引擎领域的斗争而存在下去。学术界和搜索引擎公司也有针对性地提出了各种反作弊算法。

反作弊技术的整体思路

从基本的思路角度看,可以将反作弊手段大致划分为以下 3 种:信任传播模型、不信任传播型和异常发现模型。其中前两种技术模型可以进一步抽象归纳为“链接分析”中提到的子集传播模型。

信任传播模型

通过一定的技术手段或者人工半人工手段,从数据中筛选出部分完全值得信任的页面(白名单),算法以白名单内的页面作为基点,赋予白名单内的页面节点较高的信任度分值,根据和白名单内节点的链接关系来确定其他页面是否作弊。

不信任传播模型
从大的技术框架上,和信任传播模型是相似的,最大的区别在于:初始的页面子集合是确认存在作弊行为的页面集合(黑名单)。

异常发现模型

其基本假设认为:作弊网页必然存在有异于正常网页的特征,这种特征有可能是内容方面的,也有可能是链接关系方面的。而制定具体算法的流程往往是先找到一些作弊的网页集合,分析出其异常特征有哪些,然后利用这些异常特征来识别作弊网页。 

专用链接反作弊技术

识别链接农场
  1. 网页出链、入链的统计分布规律,正常网页的出链、入链满足 Power-law 分布。
  2. URL 名称统计特征,作弊网页的网址倾向于较长,包含更多的点画线和数字等。
  3. 很多作弊网页的 URL 地址尽管不同,但是常常会对应同一个 IP 地址。
  4. 网页特征会随着时间变化,比如入链的增长率、出链的增长率等,正常网页和作弊网页在这些变化模式上是不同的。
识别 Google 轰炸

Google 轰炸利用了指向目标网页的锚文字来操纵搜索结果排名,而锚文字很可能和被指向的页面没有任何语义关系,所以一个直观的判断方式即为判断锚文字是否和被指向页面有语义关系,如果有语义关系存在,则被判断为正常链接,否则可被判断为作弊链接。

识别内容作弊

重复关键词作弊:判断文本内一定大小的窗口中是否连续出现同一关键词,如果是的话则消除掉重复出现的内容。

标题关键词作弊:判断标题词汇在文本正文出现的比例和权重,如果达到一定条件则可判断为标题关键词作弊。

也可以采用一些统计手段来进行内容作弊识别,比如统计正常网页中句子长度的规律、停用词的分布规律或者词性分布规律等,通过比较页面内容统计属性是否异常来识别内容作弊的情况

识别页面隐藏

页面隐藏的本质特征是向搜索引擎爬虫和用户推送不同内容的页面。

识别页面隐藏:网页做两次抓取,第 1 次是正常的搜索引擎爬虫抓取,第 2 次抓取则以模拟人工访问网页的方式抓取。如果两次抓取到的内容有较大差异,则会认为是作弊页面。

识别网页重定向
网页重定向是很容易识别的,大部分搜索引擎对于重定向的网页都会有相应的降权惩罚。
Strider 系统给出了根据网页重定向来识别到底哪些是作弊网页的解决方案。这个系统首先收
集一批作弊页面,然后根据这批作弊网页进行扩展,如果有在论坛中和这些作弊 URL 经常
一起出现的网页链接,会逐步将其扩充进可疑页面集合。之后,依次访问这些可疑 URL,并
记录下访问时是否做了重定向及重定向到哪个页面,如果某个页面被很多可疑 URL 重定向
指向,则认为这个重定向地址是作弊网页,反过来,那些重定向到这个作弊网页的可疑 URL
也被认为是作弊网页,其他可疑 URL 则可以被认为是正常网页。 

搜索引擎反作弊综合框架

一个综合反作弊系统的框架,用户可以在浏览搜索结果甚至是上网浏览时随时举报作弊网页,比如 Google 推出了浏览器插件来方便用户举报,搜索引擎公司内部会有专门的团队来审核与主动发现可疑页面,经过审核确认的网页可以放入黑、白名单中。


通用的反作弊方法大体有两类,一种类似于 BadRank 的思路,即从黑名单出发根据链接关系探寻哪些是有问题的网页;另外一种类似于 TrustRank 的思路,即从白名单出发根据链接关系排除掉那些没有问题的网页。

两者显然有互补关系,通过两者搭配可以形成有效的通用反作弊屏障。这种通用方法的好处是具有预防性,哪怕是新出现的作弊方式,只要作弊网页需

要通过链接关系进行操纵,那么通用方法就能在一定程度上起到作用。但是正是因为通用方
法的通用性,所以其反作弊思路没有针对性,对于一些特殊的作弊手段无法有效发现。此时,
针对特殊作弊手段的方法形成了第 3 道屏障,即搜索引擎公司针对具体作弊方法采取专用技
术手段来进行识别,因为有针对性所以效果较好,但是缺点在于一类反作弊方法只能识别专
门的作弊手段,对于新出现的作弊方法往往无能为力,而且在时间上往往滞后于作弊现象。


总结

  • 链接分析在搜索引擎搜索结果排序中起到非常重要的作用。
  • 绝大部分链接分析算法建立在随机游走模型和子集传播模型基础之上。
  • PageRank 和 HITS 算法是最重要且基础的两种链接分析算法,很多链接分析算法是对这两种方法的改进。
  • SALSA 算法是目前效果最好的链接分析算法之一,其融合了 HITS 算法与查询相关的特点,以及 PageRank 算法的随机游走模型。
  • 主题敏感 PageRank 是对 PageRank 算法的改进,可以应用于个性化搜索中。
  • Hilltop 算法除了可以用来改善搜索系统的精确性,还可以用来当做网页反作弊的技术手段。
  • 作弊与反作弊相生相克,只要作弊存在经济利益,两者斗争一定会持续。
  • 常见的作弊方法包括:内容作弊、链接作弊、隐藏作弊和 Web 2.0 作弊。
  • 通用反作弊手段大致划分为以下 3 种类型:信任传播模型、不信任传播模型和异常发现模型。
  • 纯粹用技术手段目前无法彻底解决作弊问题,必须将人工手段和技术手段相互结合,才能取得较好的反作弊效果。