├── 01.0.md ├── 01.1.md ├── 01.2.md ├── 01.3.md ├── 01.4.md ├── 01.5.md ├── README.md ├── images ├── se-architecture.png └── se-blueprint.png └── table-of-contents.md /01.0.md: -------------------------------------------------------------------------------- 1 | # 1 搜索引擎概述 2 | 内容简介TODO 3 | 4 | 5 | ## links 6 | * [回到目录]() 7 | * 下一节: [1.1 搜索引擎技术发展史](01.1.md) 8 | 9 | -------------------------------------------------------------------------------- /01.1.md: -------------------------------------------------------------------------------- 1 | ## 1.1 搜索引擎技术发展史 2 | 3 | ### 1.1.1 史前时代:分类目录的一代 4 | 5 | 这个时代也可以称为“导航时代”,Yahoo!和国内hao123是这个时代的代表。通过人工收集整理,把属于各个类别的高质量网站分类罗列,用户可以根据分级目录来查找高质量的网站。这种方式是纯人工的方式,并未采取什么高深的技术。 6 | 7 | 采用分了目录的方式,一般被收录的网站质量度较高,但是这种方式可扩展性不强,只能收录极少数的网站,绝大部分网站都无法收录。 8 | 9 | 10 | ### 1.1.2 第一代:文本检索的一代 11 | 12 | 文本检索的一代采用经典的信息检索模型,比如布尔模型、向量空间模型或概率模型,来计算用户输入的关键词和网页的匹配程度。至于网页之间有丰富的连接关系,这一代搜索引擎并未使用这些信息。早期的搜索引擎比如AltaVista、Excite等大都采用这种模式。 13 | 14 | 相比分类目录,这种方式可以收录大量网页,并能够按用户查询的关键词和网页内容的匹配程度进行排序。但是总体而言,搜索结果质量不是很好。 15 | 16 | 17 | ### 1.1.3 第二代:链接分析的一代 18 | 19 | 这一代的搜索引擎充分利用了网页之间的连接关系,通常而言,网页链接代表了一种推荐关系,所以通过链接分析可以在海量内容中找出重要的网页。 20 | 21 | Google率先提出并使用PageRank链接分析技术,并大获成功。目前几乎所有的商业搜索引擎都采取了链接分析技术。 22 | 采用链接分析能够有效改善搜索结果质量,但是这种搜索引擎并未考虑用户的个性化需求,只要输入的查询关键词相同,所有用户都会获得相同的搜索结果。 23 | 24 | 25 | ### 1.1.4 第三代:用户中心的一代 26 | 27 | 目前的搜索引擎大度可以归入第三代,即都以理解用户的需求为核心,不同用户即使输入相同的关键词,但其目的也有可能不一样。比如同样输入“苹果”,一个追捧iPhone的青年和一个果农的目的完全不一样。 28 | 29 | 为了能够获取用户的真实需求,目前搜索引擎大度做了很多技术方面的尝试。比如利用用户发送查询词时的时间和地理位置信息,利用用户过去发出的查询词和点击历史记录等信息,来试图理解用户此时此地的真正需求。 30 | 31 | 32 | ## links 33 | * [回到目录](table-of-contents.md) 34 | * 本章开始: [搜索引擎概述](01.0.md) 35 | * 下一节: [1.2 搜索引擎的4个评价指标](01.2.md) 36 | 37 | -------------------------------------------------------------------------------- /01.2.md: -------------------------------------------------------------------------------- 1 | # 1.2 搜索引擎的4个目标 2 | 3 | ### 1.2.1 快 4 | 5 | 商用搜索引擎的查询速度达到毫秒级。 6 | 7 | 影响速度的原因有很多:索引库的效率,分布查询的处理能力和查询缓存的命中率 8 | 9 | ### 1.2.2 准 10 | 11 | 对于搜索引擎,查全率往往不是最重要的,衡量的意义也不大,因为没有一个用户会把所有查询到的网页都浏览一遍。一般情况下,用户最为关注的仅仅为搜索结果中的前几条。因而查准率很大程度上决定了搜索的质量,在前10条搜索结果中满足用户的查询目的的数目是查准率的主要体现。 12 | 13 | 是否查得准,主要取决于网页排序。 14 | 15 | ### 1.2.3 全 16 | 17 | 索引的网页越多,查全率越高。 18 | 19 | ### 1.2.4 稳 20 | 21 | 商用搜索引擎,对稳定性有很高的要求,必须能够提供持续的信息检索服务。 22 | 23 | 24 | ## links 25 | * [回到目录]() 26 | * 上一节: [1.1 搜索引擎技术发展史](01.1.md) 27 | * 下一节: [1.3 搜索引擎的3个核心问题](01.3.md) 28 | -------------------------------------------------------------------------------- /01.3.md: -------------------------------------------------------------------------------- 1 | ## 1.3 搜索引擎的3个核心问题 2 | 3 | 1. 用户真正的需求是什么 4 | 5 | 2. 哪些信息是和用户需求真正相关的 6 | 7 | 3. 哪些信息是用户可以信赖的 8 | 9 | 10 | ## links 11 | * [回到目录]() 12 | * 上一节: [1.2 搜索引擎的4个评价指标](01.2.md) 13 | * 下一节: [1.4 搜索引擎的4大系统](01.4.md) 14 | -------------------------------------------------------------------------------- /01.4.md: -------------------------------------------------------------------------------- 1 | ## 1.4 搜索引擎的4大系统 2 | 3 | 无论是工业界还是学术界,搜索引擎一致地被认为分为**下载,分析,索引,查询**四大系统。这4大系统互相配合,共同实现了搜索引擎的快、全、准、稳的4大需求。 4 | 5 | 6 | ## links 7 | * [回到目录]() 8 | * 上一节: [1.3 搜索引擎的3个核心问题](01.3.md) 9 | * 下一节: [1.5 搜索引擎的体系结构](01.5.md) 10 | -------------------------------------------------------------------------------- /01.5.md: -------------------------------------------------------------------------------- 1 | ## 1.5 搜索引擎的体系结构 2 | 搜索引擎的结构清晰,分工明确。按照各自的功能划分为以下4大系统: 3 | 4 | 1. 下载系统。 5 | 2. 分析系统。 6 | 3. 索引系统。 7 | 4. 查询系统。 8 | 9 | 其中下载系统负责从万维网上下载网页,并且保持对万维网变化的同步。 10 | 11 | 分析系统负责抽取下载系统得到的网页数据,并进行PageRank和分词计算。 12 | 13 | 索引系统负责将分析系统处理后的网页对象索引入库。 14 | 15 | 查询系统负责分析用户提交的查询请求,然后从索引库中检索出相关网页并将网页排序后,将查询结果返回给用户。 16 | 搜索引擎的简要结构图如图2-2所示。 17 | 18 | ![](images/se-blueprint.png?raw=true) 19 | 20 |
图2-1 搜索引擎的简要结构图
21 | 22 | 23 | ![](images/se-architecture.png?raw=true) 24 | 25 |
图2-2 搜索引擎架构
26 | 27 | 从整体上,下载、分析和索引系统组成了搜索引擎的数据制作部分,被称为是“离线部分”(offline part);查询系统为搜苏偶引擎的数据服务部分,要求快速响应,因此被称为“在线系统”(online part)。按照离线和在线划分,搜索引擎又可以分为在线系统和离线系统。其中在线系统需要毫秒级的访问速度,而离线系统中有些需要长达几周的时间才能计算完毕。 28 | 29 | 30 | ## links 31 | * [回到目录]() 32 | * 上一节: [1.3 搜索引擎的3个核心问题](01.3.md) 33 | * 下一章: [2 搜索引擎的体系结构](02.0.md) 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 《搜索引擎原理详解》 2 | 这本书是我关于搜索引擎的读书笔记和工作经验的系统总结。 3 | 4 | 5 | ## [开始阅读](table-of-contents.md) 6 | 7 | 8 | # 通过捐款支持本书 9 | 如果你喜欢这本《搜索引擎原理详解》的话, 可以通过捐款的方式, 支持作者继续更新本书,比如为本书修补漏洞、添加更多有趣的章节, 或者发行有更多更棒内容的下一版,等等。 10 | 11 | 捐款地址: [https://me.alipay.com/iloveu](https://me.alipay.com/iloveu) 12 | 13 | 14 | ## 交流 15 | 我的新浪微博:[@灵魂机器](http://weibo.com/soulmachine) 16 | 17 | 18 | ## 授权许可 19 | 除特别声明外,本书中的内容使用[CC BY-SA 3.0 License](http://creativecommons.org/licenses/by-sa/3.0/)(创作共用 署名-相同方式共享3.0许可协议)授权,代码遵循[BSD 3-Clause License]()(3项条款的BSD许可协议)。 20 | 21 | 22 | [![githalytics.com alpha](https://cruel-carlota.pagodabox.com/686e7d06998fac2c886a30fd40893ae1 "githalytics.com")](http://githalytics.com/soulmachine/search-engine-principle) 23 | 24 | -------------------------------------------------------------------------------- /images/se-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soulmachine/search-engine-principle/2e89fa8f533e830a5363dcd4aa9b8609c929b6df/images/se-architecture.png -------------------------------------------------------------------------------- /images/se-blueprint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/soulmachine/search-engine-principle/2e89fa8f533e830a5363dcd4aa9b8609c929b6df/images/se-blueprint.png -------------------------------------------------------------------------------- /table-of-contents.md: -------------------------------------------------------------------------------- 1 | ##目录 2 | 3 | * 1.[搜索引擎概述](01.0.md) 4 | - 1.1. [搜索引擎技术发展史](01.1.md) 5 | - 1.2. [搜索引擎的4个评价指标](01.2.md) 6 | - 1.3. [搜索引擎的3个核心问题](01.3.md) 7 | - 1.4. [搜索引擎的4大系统](01.4.md) 8 | - 1.5. [搜索引擎的体系结构](01.5.md) 9 | * 2.[搜索引擎的下载系统](02.0.md) 10 | - 2.1. [爬虫的发展历史](02.1.md) 11 | - 2.2. [万维网及其网页分析](02.2.md) 12 | - 2.3. [有关爬虫的基本概念](02.3.md) 13 | - 2.4. [通用爬虫框架](02.4.md) 14 | - 2.5. [网页抓取原理](02.5.md) 15 | - 2.6. [网页抓取优先策略](02.6.md) 16 | - 2.7. [网页更新策略](02.7.md) 17 | - 2.8. [分布式爬虫](02.8.md) 18 | - 2.9. [暗网抓取(Deep Web Crawling)](02.9.md) 19 | - 2.10. [网页库](02.10.md) 20 | - 2.11. [下载系统回顾及未来发展](02.11.md) 21 | - 2.12. [参考文献](02.12.md) 22 | * 3.[搜索引擎的索引系统](03.0.md) 23 | - 3.1 [索引基础](03.1.md) 24 | - 3.2 [单词词典](03.2.md) 25 | - 3.3 [倒排列表](03.3.md) 26 | - 3.4 [倒排索引](03.4.md) 27 | - 3.5 [建立索引](03.5.md) 28 | - 3.6. [动态索引](03.6.md) 29 | - 3.7. [索引更新策略](03.7.md) 30 | - 3.8. [查询处理](03.8.md) 31 | - 3.9. [多字段索引](03.9.md) 32 | - 3.10. [短语查询](03.10.md) 33 | - 3.11. [分布式索引](03.11.md) 34 | - 3.12. [数据规模的估计](03.12.md) 35 | - 3.13. [涉及存储规模的一些计算](03.13.md) 36 | - 3.14. [参考文献](03.14.md) 37 | * 4.[索引压缩](04.0.md) 38 | - 4.1 [词典压缩](04.1.md) 39 | - 4.2 [倒排列表压缩](04.2.md) 40 | - 4.3 [文档编号重排序(DocID Reordering)](04.3.md) 41 | - 4.4 [静态索引剪裁(Static Index Pruning)](04.4.md) 42 | - 4.5 [参考文献](04.5.md) 43 | --------------------------------------------------------------------------------