【读书笔记】这就是搜索引擎

做者:LogMweb

本文原载于 https://segmentfault.com/u/logm/articles,不容许转载~segmentfault

本文是《这就是搜索引擎》的读书笔记服务器

1. 概述

1.2 搜索引擎技术发展史

  • 第一代:文本检索。关键词与网页内容的相关程度。
  • 第二代:连接分析。PageRank。
  • 第三代:用户中心。理解用户需求。

2. 爬虫

2.1 通用爬虫框架

2.3 爬虫质量的评价标准

  • 抓取网页覆盖率、抓取网页时新性、抓取网页重要性
  • 为了同时知足上述3个标准,google用了多套不一样的爬虫,一些关注时新性,一些关注覆盖率。

2.4 抓取策略

  • 宽度优先遍历:暴力但有效
  • 非彻底PageRank:由于PageRank须要拿到全部的页面计算才是准确的,爬虫抓取的时候没有看到全部页面,因此叫"非彻底"
  • OPIC:改进PageRank,实时计算
  • 大站优先

2.5 更新策略

  • 历史参考策略:历史上变更比较快的,抓取频繁一点,通常用泊松过程建模
  • 用户体验策略:保存网页的多个历史版本,查看不一样历史版本对用户点击的影响。因此用户点击不到的页面,即便更新快,也不用抓取。
  • 聚类抽样策略:更新快的页面有一些相似的特征

2.6 暗网抓取

  • 抓取常规网页连接不到的信息

2.7 分布式爬虫

  • 一致性哈希肯定每一个爬虫负责哪些url的抓取

3. 索引

3.1 倒排索引的结构

  • 单词字典 + 倒排列表

3.4 创建索引

  • 两遍文档遍历法:彻底在内存中构建
  • 排序法:内存满时,对中间文件排序后存到磁盘,最后再合并全部的中间文件。整个过程,整个字典都在内存里,字典有可能过大。
  • 归并法:每一个中间文件都是一套倒排索引(含各自的字典),最后再把全部的倒排索引合并。

3.6 动态索引与索引更新

  • 彻底重建策略:临时索引与老索引的文档所有取出从新建索引,重建的代价高,但主流搜索引擎都采用该方式
  • 再合并策略:临时索引与老索引进行索引合并(不是文档取出从新建索引,而是合并)
  • 原地更新策略:再合并策略的升级,临时索引追加到老索引

3.7 查询

  • 一次一文档:每一个文档对query中全部词计算类似度
  • 一次一单词:对query中每一个词计算文档类似度,每一个文档累加每一个query词的类似度
  • 跳跃指针:由于倒排索引通常是压缩保存的,跳跃指针帮助快速定位须要的文档

3.8 多字段索引

有时候须要区分不一样的字段来索引,好比"标题"、"正文"、"摘要"等字段。
  • 多索引方式:为每一个字段都创建一份倒排索引
  • 倒排列表方式:在每一个倒排列表的后面追加一个字段,表示该关键词是在哪一个字段出现
  • 扩展列表方式:用扩展列表标明每一个字段的开始和结尾位置,结合倒排列表中关键词的位置,能够知道关键词在哪一个字段。实际使用经常使用这个方法

3.9 短语查询

  • 位置信息索引:利用倒排列表中关键词的位置信息判断是否组成短语
  • 双词索引:"首词"的倒排索引中有指向"下词"的指针,"下词"又有指针指向倒排列表
  • 短语索引:会致使字典急剧膨胀,通常只用于热门短语

3.10 分布式索引

索引体积大,一台服务器存不下
  • 按文档划分:按文档对索引文件进行切分。扩展性、容错性、对查询方式的支持都较好
  • 按单词划分:按单词字典对索引文件进行切分

4. 索引压缩


5. 检索与排序

把与用户搜索词最相关的结果排在前面
  • 布尔模型
  • 向量空间模型:TF-IDF + cosine距离
  • 几率检索模型:BM25
  • 语言模型:从文档生成用户搜索的几率多大
  • 机器学习排序
  • 评价标准:准召、P@十、MAP

6. 连接分析

6.2 重要的概念模型

  • 随机游走模型:模拟用户的浏览行为,PageRank
  • 子集传播模型:从一个特殊子集出发,将权重传递到其余网页,HINTS

7. 云计算与云存储


8. 网页反做弊

8.1 内容做弊

  • 关键词堆砌、热门关键词、标题做弊、meta信息做弊……
  • 内容农场:雇人写垃圾文章,比机器做弊更难被断定

8.2 连接做弊

  • 连接农场、购买连接、购买域名……

8.3 页面隐藏做弊

  • IP Cloaking、User Agent Cloacking、页面重定向、页面隐藏……

8.4 web2.0 做弊

  • 博客做弊、点评做弊、Tag做弊、我的Profile做弊……

8.5 反做弊的通用思路

  • 子集传播模型:信任传播模型(如TrustRank)、不信任传播模型(如BadRank)
  • 异常发现模型(如SpamRank)

9. 查询意图分析


10. 网页去重


11. 搜索引擎的发展趋势

相关文章
相关标签/搜索