17年由于项目需要,学习整理了一些SEO相关的知识,主要可以分为2部分:
《搜索引擎:核心技术详解》---梳理总结
SEO搜索引擎优化
本文主要内容为阅读《搜索引擎:核心技术详解》时的一些知识梳理与总结,包含搜索引擎索引、链接分析以及网页反作弊三部分
一、搜索引擎索引
索引基本概念
引擎的索引基本模型为单词-文档矩阵,如图:
横向可以看出哪些文档中包含了某词汇,纵向可以看出,某个文档中包含了哪些关键词

- 文档---任何以文件形式存在的对象
- 文档编号---搜索引擎内部赋予的唯一标识,用于区别每个文档
- 单词编号---搜索引擎内部赋予的唯一标识,用于区别每个单词
- 倒排索引(Inverted Index)---实现单词—文档矩阵的一存储形式。可以根据单词快速获取包含这个单词的文档列表。由两个部分组成:单词词典和倒排文件

- 单词词典(Lexicon)----搜索引擎通常的索引单位是单词,单词词典是由文档集合中出现 过的所有单词构成的字符串集合,单词词典内每条索引项记载单词本身的一些信息及指 向倒排列表的指针。常用的数据结构包括哈希加链表结构和树形词典结构。
- 倒排列表(PostingList)----倒排列表记载了出现过某个单词的所有文档的文档列表及单词 在该文档中出现的位置信息,每条记录称为一个倒排项(Posting)。根据倒排列表,即 可获知哪些文档包含某个单词。
- 倒排文件(Inverted File)----所有单词的倒排列表往往顺序地存储在磁盘的某个文件里, 这个文件即被称为倒排文件,倒排文件是存储倒排索引的物理文件。
在实际的搜索引擎内部一般记录的不是文档编号而是相邻两个文档的差值,这样讲大数值转化为小数值,提高了压缩效率
建立索引
- 两遍文档遍历法---- 完全是在内存里完成索引的创建过程, 第一遍扫描的主要目的是获得一些统计信息,并根据统计信息分配内存等资 源,同时建立好单词相对应倒排列表在内存中的位置信息,即主要做些资源准备工作。 第二遍:填入倒排列表,写入磁盘。

缺点:从磁盘读取文档并解析文档基本是最消耗时间的一个步骤,而两遍扫描法因为要对文档集合进行两遍遍历,所以从速度上不占优势,在实际中采用这种方法的系统并不常见。
- 排序法- --处理文档--->中间结果排序--->中间结果写入磁盘---合并中间结果---->最终索引文件
- 归并法- --处理文档--->内存数据写入磁盘--->合并索引与词典---->最终索引文件

动态索引
实时反映索引变化,3 个关键的索引结构:倒排索引、临时索引和 已删除文档列表。
- 倒排索引----就是对初始文档集合建立好的索引结构,一般单词词典存储在内存,对应的倒排列表存储在磁盘文件中。
- 临时索引----是在内存中实时建立的倒排索引,其结构和前述的倒排索引是一样的,区别在于词典和倒排列表都在内存中存储。当有新文档进入系统时,实时解析文档并将其追加进这个临时索引结构中。
- 已删除文档列表----则用来存储已被删除的文档的相应文档ID,形成一个文档 ID 列表。
索引更新策略
当临时索引越来越大师内存不足,需要将临时索引写入磁盘----索引更新策略
- 完全重建策略----新文档临时索引+老文档--------->遍历生成新索引(废弃老索引)
- 再合并策略----新文档索引+老索引---->合并生成新索引(废弃老索引)
- 原地更新策略--增量索引+老索引---->老索引+附加新倒排信息
- 混合策略----一般将单词进行分类,然后采用不同的更新策略
二、链接分析
概念模型

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

HITS算法
Authority 页面,是指与某个 领域或者某个话题相关的高质量网页。比如搜索引擎领域,Google 和百度首页即该领域的 高质量网页;比如视频领域,优酷和土豆首页即该领域的高质量网页。Hub 页面, 指的是包含了很多指向高质量 Authority 页面链接的网页。
Hub与Authority之间的相互增强关系 。HITS 算法与用户输入的查询请求密切相关, 而 PageRank 算法是与查询无关的全局算法。
HITS 算法的目的是通过一定的技术手段,在海量网页中找到与用户查询主题相关的高质量 Authority 页面和 Hub 页面,尤其是 Authority 页面,因为这些页面代表了能够满足用户查询 的高质量内容,搜索引擎以此作为搜索结果返回给用户。
SALSA算法----请求--->扩展网页子集----->转为无向二分图---->计算权重--->返回结果

hilltop----专家网页搜索----->目标网页排序
主题敏感PageRank----离线分类主题PR值计算---->请求是相似度比较计算---->前两者的乘积之和
HITS 算法与 PageRank 算法比较
- HITS算法是与用户输入的查询请求密切相关的,而PageRank与查询请求无关。所以,HITS算法可以单独作为相似性计算评价标准,而PageRank必须结合内容相似性计算才 可以用来对网页相关性进行评价。
- HITS算法因为与用户查询密切相关,所以必须在接收到用户查询后进行实时计算,计算 效率较低;而PageRank则可以在爬虫抓取完成后离线计算,在线直接使用计算结果, 计算效率较高。
- HITS算法的计算对象数量较少,只需计算扩展集合内网页之间的链接关系;而PageRank是全局性算法,对所有互联网页面节点进行处理。
- 从两者的计算效率和处理对象集合大小来比较,PageRank更适合部署在服务器端,而HITS算法更适合部署在客户端。
- HITS算法存在主题泛化问题,所以更适合处理具体的用户查询;而PageRank算法在处 理宽泛的用户查询时更有优势。
- HITS算法对于每个页面需要计算两个分值,而PageRank算法只需计算一个分值即可;在搜索引擎领域,更重视HITS算法计算出的Authority权值,但是在很多应用HITS算法的其他领域,Hub分值也很重要。
- 从链接反作弊的角度来说,PageRank从机制上优于HITS算法,而HITS算法更易遭受链 接作弊的影响。HITS算法结构不稳定,当对扩展网页集合内链接关系做出很小改变,则对最终排名有很 大影响;而PageRank算法相对HITS而言表现稳定,其根本原因在于PageRank计算时的 远程跳转。
三、网页作弊
内容作弊
常见内容作弊手段:关键词重复、无关查询词作弊、图片 alt 标签文本作弊、网页标题作弊、网页重要标签作弊、网页元信息作弊
内容农场:内容农场运营者廉价雇佣大量自由职业者,支持他们付费写作,但是写作内容普遍质量低下,很多文章是通过复制稍加修改来完成的,但是他们会研究搜索引擎的热门搜索词等,并有机地将这些词汇添加到写作内容中。这样,普通搜索引擎用户在搜索时,会被吸引进入内容农场网站,通过大量低质量内容吸引流量,内容农场可以赚取广告费用。

链接作弊
- 链接农场(Link Farm)

- Google 轰炸(Google Bombing)

- 交换友情链接
- 购买链接
- 购买过期域名
- 门页”作弊(Doorway Pages)
页面隐藏作弊
四、网页反作弊
反作弊技术的整体思路
信任传播模型
通过一定的技术手段或者人工半人工手段,从数据中筛选出部分完全值得信任的页面(白名单),算法以白名单内的页面作为基点,赋予白名单内的页面节点较高的信任度分值,根据和白名单内节点的链接关系来确定其他页面是否作弊。
异常发现模型
专用链接反作弊技术
- 网页出链、入链的统计分布规律,正常网页的出链、入链满足 Power-law 分布。
- URL 名称统计特征,作弊网页的网址倾向于较长,包含更多的点画线和数字等。
- 很多作弊网页的 URL 地址尽管不同,但是常常会对应同一个 IP 地址。
- 网页特征会随着时间变化,比如入链的增长率、出链的增长率等,正常网页和作弊网页在这些变化模式上是不同的。
Google 轰炸利用了指向目标网页的锚文字来操纵搜索结果排名,而锚文字很可能和被指向的页面没有任何语义关系,所以一个直观的判断方式即为判断锚文字是否和被指向页面有语义关系,如果有语义关系存在,则被判断为正常链接,否则可被判断为作弊链接。
重复关键词作弊:判断文本内一定大小的窗口中是否连续出现同一关键词,如果是的话则消除掉重复出现的内容。
也可以采用一些统计手段来进行内容作弊识别,比如统计正常网页中句子长度的规律、停用词的分布规律或者词性分布规律等,通过比较页面内容统计属性是否异常来识别内容作弊的情况
页面隐藏的本质特征是向搜索引擎爬虫和用户推送不同内容的页面。
识别页面隐藏:网页做两次抓取,第 1 次是正常的搜索引擎爬虫抓取,第 2 次抓取则以模拟人工访问网页的方式抓取。如果两次抓取到的内容有较大差异,则会认为是作弊页面。
搜索引擎反作弊综合框架

通用的反作弊方法大体有两类,一种类似于 BadRank 的思路,即从黑名单出发根据链接关系探寻哪些是有问题的网页;另外一种类似于 TrustRank 的思路,即从白名单出发根据链接关系排除掉那些没有问题的网页。
两者显然有互补关系,通过两者搭配可以形成有效的通用反作弊屏障。这种通用方法的好处是具有预防性,哪怕是新出现的作弊方式,只要作弊网页需
总结
- 链接分析在搜索引擎搜索结果排序中起到非常重要的作用。
- 绝大部分链接分析算法建立在随机游走模型和子集传播模型基础之上。
- PageRank 和 HITS 算法是最重要且基础的两种链接分析算法,很多链接分析算法是对这两种方法的改进。
- SALSA 算法是目前效果最好的链接分析算法之一,其融合了 HITS 算法与查询相关的特点,以及 PageRank 算法的随机游走模型。
- 主题敏感 PageRank 是对 PageRank 算法的改进,可以应用于个性化搜索中。
- Hilltop 算法除了可以用来改善搜索系统的精确性,还可以用来当做网页反作弊的技术手段。
- 作弊与反作弊相生相克,只要作弊存在经济利益,两者斗争一定会持续。
- 常见的作弊方法包括:内容作弊、链接作弊、隐藏作弊和 Web 2.0 作弊。
- 通用反作弊手段大致划分为以下 3 种类型:信任传播模型、不信任传播模型和异常发现模型。
- 纯粹用技术手段目前无法彻底解决作弊问题,必须将人工手段和技术手段相互结合,才能取得较好的反作弊效果。