后端技术面试 38 讲
李智慧
同程艺龙交通首席架构师,前 Intel& 阿里架构师,《大型网站技术架构》作者
37373 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
不定期加餐 (1讲)
后端技术面试 38 讲
15
15
1.0x
00:00/00:00
登录|注册

26 | 搜索引擎架构:如何瞬间完成海量数据检索?

搜索引擎在平台型应用中的应用
搜索引擎在互联网应用中的应用
词频TF排序
点赞数排序
PageRank算法
搜索词的快速检索
倒排索引构建
网页编号和内容提取
网页爬取
思考题
搜索引擎技术应用
搜索引擎结果排序
搜索引擎倒排索引
搜索引擎架构

该思维导图由 AI 生成,仅供参考

我们在使用搜索引擎的时候,搜索结果页面会展示搜索到的结果数目以及花费时间。比如用 Google 搜索中文“后端技术”这个词,会显示找到约 6.7 亿条结果,用时 0.45 秒。
我们知道 Google 收录了全世界几乎所有的公开网页,这是一个非常庞大的数目,那么 Google 是如何做到在如此短的时间内完成了如此庞大的数据搜索呢?

搜索引擎倒排索引

数据的搜索与查找技术是计算机软件的核心算法,这方面已有非常多的技术和实践。而对于搜索引擎来说,要对海量文档进行快速内容检索,主要使用的是倒排索引技术。
像 Google 这样一个互联网搜索引擎,首先需要通过网络爬虫获取全球的公开网页。那么搜索引擎如何知道全世界的网页都在哪里呢?
事实上,互联网一方面是将全世界的人和网络应用联系起来,另一方面,也将全世界的网页通过超链接联系起来,几乎每个网页都包含了一些其他网页的超链接,这些超链接互相链接,就让全世界的互联网构成了一个大的网络。所以,搜索引擎只需要解析这些网页,得到里面的超链接,然后继续下载这些超链接的网页,继续解析,这样就可以得到全世界的网页了。
这个过程具体是这样的。首先选择一些种子 URL,然后通过爬虫将这些 URL 对应的页面爬下来。其实,所谓的爬虫,就是发送 URL 请求,下载相应的 HTML 页面,然后将这些 Web 页面存储在自己的服务器上,并解析这些页面的 HTML 内容,当解析到网页里超链接 URL 的时候,再检查这个超链接是否已经在前面爬取过了,如果没有,就把这个超链接放到一个队列中,后面会请求这个 URL,得到对应的 HTML 页面并解析其包含的超链接……如此不断重复,就可以将全世界的 Web 页面存储到自己的服务器中。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

搜索引擎架构及其应用技术 搜索引擎架构是如何实现海量数据检索的?本文介绍了搜索引擎倒排索引技术的应用,以及搜索结果排序的算法。搜索引擎通过网络爬虫获取全球的公开网页,并使用倒排索引技术对海量文档进行快速内容检索。倒排索引通过单词→文档列表的方式组织起来,实现了海量数据的快速检索。此外,文章还介绍了搜索引擎结果排序的算法,包括PageRank算法和词频TF算法。PageRank算法根据网页的权重对搜索结果进行排序,而词频TF算法则根据词频和相关性进行排序。文章还提到了对UGC网站内部搜索结果排序的挑战,以及利用点赞数和集体智慧编程进行排序的方法。总的来说,搜索引擎架构通过倒排索引和排序算法实现了海量数据的快速检索和排序,为用户提供了高效的搜索体验。 搜索引擎技术不仅适用于互联网搜索引擎,对于大多数应用而言,如果想要对稍具规模的数据进行快速检索,都需要使用搜索引擎技术。而对于平台型应用,搜索引擎技术更是驱动其核心商业模式。淘宝作为一个例子,其海量的商品需要通过搜索引擎完成查找,而主要盈利也来自于搜索引擎排名。因此,搜索引擎技术在不同领域都发挥着重要作用。 思考题则提出了一个有趣的问题,即如何在处理万亿级网页的情况下,较快地计算出所有网页的PageRank值。这个问题挑战着技术人员在处理大规模数据时所面临的挑战,也值得进一步探讨和研究。 总的来说,本文深入浅出地介绍了搜索引擎架构及其应用技术,对于想要了解搜索引擎工作原理和应用场景的读者来说,是一篇值得阅读的文章。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《后端技术面试 38 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(11)

  • 最新
  • 精选
  • 非同凡想
    Google发明并行计算工具MapReduce,减少PageRank的计算时间,使网页排名的更新周期缩短
    2020-03-28
    4
    8
  • 虢國技醬
    pagerank和点赞都属于认可类型的推荐属于集体智慧 词频应该是另一种相关度的类型
    2020-01-30
    4
  • escray
    这篇应该算是搜索引擎的概述,估计还有很多黑魔法没有展开。 忘记在哪里看到过的,说是搜索引擎更多的是工程实现上的挑战,毕竟算法和步骤都是公开的。 其实我有点好奇,除了超链接比较少的那些页面,类似于微信这样的 APP,其实是不允许或者说不鼓励通用搜索引擎的爬虫来爬取公众号数据的,而且这种相对“封闭”的 APP 越来越多,那么搜索引擎就没有办法依赖 PageRank 算法了,搜索质量应该是会下降的,如何解决? 而另一方面,微信自己的搜索,一方面要索引公众号中的内容,另一方面还要从网络上爬取数据,这样岂不是“负重前行”?而且也同样无法保证搜索质量,或者微信搜索的质量定义不太一样。至少现在,微信内的搜索还没有办法取代搜索引擎。 如果是企业系统内部的搜索,一般是部署 ElasticSearch、Lucene、solr,好像同样依赖中文分词 、倒排索引、词频统计,PageRank 有没有就不知道,如果还希望实现推荐引擎之类的,就不知道要如何去处理了。 淘宝、百度的竞价排名似乎就更复杂了,在搜索结果排序的过程中,还要添加很多“竞价”相关的参数。 关于思考题,较快的计算出 PageRank,我估计 PageRank 的数据其实不需要实时计算,可以提前算好,存储在那里;并且链接跳转次数过多的话,就不用再计算了。 看了一下留言,计算 PageRank 的主要方式是 MapReduce。
    2020-10-11
    1
    3
  • liudu_ec
    数据检索的例子我觉得用es可能比较合适,毕竟es我们工作中都有使用,而pageRank算法基本上用不到
    2020-11-03
    2
    2
  • 旅梦开发团
    如果有一些延展就好了 给一些实例的github 链接。 比如 简单PageRank 实现 点赞数排序....
    2020-01-29
    2
  • seg-上海
    大数据量时还是得并行分块
    2020-02-11
    1
  • Citizen Z
    这个课后题有点难,肯定要把整个过程并行化,预感拆解任务是个有技术含量的事,还是等标准答案吧 Orz
    2020-01-26
    1
  • java小霸王
    用mapreduce的思想,堆机器离线计算
    2022-07-01
  • 好好先生
    刚看见标题的时候,还以为是BitMap的应用
    2020-03-29
  • 不记年
    思考题 :可以采用一些图计算框架 SparkGraphX,pregel 进行分布式图计算。
    2020-02-22
收起评论
显示
设置
留言
11
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部