搜索引擎学习之旅3 - 搜索引擎工作流程

搜索引擎之旅系列往期文章:

中文搜索引擎原理分析与实现(1)基本理论

搜索引擎学习之旅1 - SEO的概念

搜索引擎学习之旅2 - 搜索引擎分类


前面的文章只是介绍了一些搜索引擎相关的概念,本文就介绍一下搜索引擎的完整工作流程。搜索页面的输入框是用户和搜索引擎进行交互的接口,其实这个搜索框仅仅是搜索引擎的冰山一角,可以思考一下几个问题:

  1. 搜索引擎返回的数据怎么来的?
  2. 搜索引擎如何准确地返回用户想要检索的信息?
  3. 搜索引擎如何能在极短的时间内返回信息?
  4. 搜索引擎返回的信息是如何排序的?

如果弄清楚了上面的几个问题,就对搜索引擎的工作原理有了简单的认识,本文将从以上几个问题出发介绍搜索引擎。

 

1 搜索引擎整体工作流程

搜索引擎本身包含网页抓取、网页评价、反作弊、建库、倒排索引、索引压缩、在线检索、ranking排序策略等等流程,下图是用户访问谷歌浏览器后其后台的工作流程:

下图是更加详细的搜索引擎工作流程:

这里写图片描述

本文只是简单地梳理一下搜索引擎的各个流程,每个模块的详细流程后面我会结合开源的一些文档具体总结。

 

这里先简单地以网页爬虫为引,简单说明一下:搜索引擎的各个模块都有非常多的问题需要解决。

2 搜索引擎基础:网页抓取 

这是搜索引擎的第一步,毕竟搜索是建立在数据的基础之上的~,在之前我也写过一篇博客介绍使用Scrapy框架爬取网站数据,有兴趣的可以移步了解一下。网页抓取需要用到Spider,之所以称之为Spider是因为在抓取网页的过程中,Spider需要从当前爬取的网页中提取到子链(该网站中指向的其他网页的链接)。

名词解释:

作弊网站是指在网页设计中,为了提升网页在搜索引擎中的排序,设计者采用的一系列欺骗搜索引擎的做法,主要表现是普通用户看到的页面与搜索引擎抓取到的内容不一致。

robots.txt是网站放在服务器根目录下的一份文档,可以将其理解为网站和爬虫之间的一份协议,该文件会指出本网站允许哪些爬虫爬取哪些目录下的网页。

对于爬虫而言至少有如下问题需要解决:

  1. 由于互联网太大了,爬虫是很难抓取到所有的网页的
  2. 网页中存在垃圾网页和作弊网页,如何准确识别这些网页,避免其污染数据影响搜索结果
  3. 应该如何指定爬取的优先级呢?
  4. 应该侧重于深度爬取(从当前页面一直往下爬)还是广度爬取(先爬取先发现的网页)呢?
  5. 如何去重(相同url,内容高度相似)呢?
  6. 如何增量更新呢?
  7. 网页的内容可能会发生改变,如何确保数据库中已经爬取的网页是最新的呢?
  8. 整个爬虫框架应该如何设计呢?
  9. 如何让整个爬虫框架更高效?
  10. 如何合理的估计爬虫负载?
  11. 如何网站禁止爬虫爬取怎么办?

我会认真学习部分爬虫框架,并在之后的文章中仔细地分析。

 

书籍推荐

《这就是搜索引擎-核心技术详解》

 

References

1. https://blog.csdn.net/u013527419/article/details/76851809

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章