小机灵鬼|42 张图带你揭秘后端技术都要学啥?( 六 )


小机灵鬼|42 张图带你揭秘后端技术都要学啥?搜索引擎我们使用谷歌浏览器的时候 , 输入搜索关键字 , 就会出现搜索到多少条结果 , 用时多少 , 它是如何做到在如此短的时间完成这么大数据量的搜索 。
先来想第一个问题 , 全世界这么多网页在哪里?
互联网的存在让你和我隔着屏幕都知道你多帅 。 当然 , 每个网页中都会存在很多其他网页的超链接 , 这样构成了庞大的网络 。
对于搜索引擎而言 , 目标为解析这些网页获取超链接 , 下载链接内容(过滤) , 具体一些说 。
将URL存放于池子中 , 从池子中取出URL模拟请求 , 下载对应的HTML , 并存放于服务器上 , 解析HTML内容时如果有超链接URL , 检测是否已经爬取过 , 如果没有暂存队列 , 后面再依次爬取 。 架构图如下:
小机灵鬼|42 张图带你揭秘后端技术都要学啥?爬虫常规方法
将获取的所有网页进行编号并得到网页集合 。 然后通过分词技术获得每一个单词 , 组成矩阵如下所示:
小机灵鬼|42 张图带你揭秘后端技术都要学啥?分词
就这样按照单词-文档的方式组织起来就叫做倒排索引了 。
小机灵鬼|42 张图带你揭秘后端技术都要学啥?倒排索引
Google通过建立<单词 , 地址>这样的文档 , 主要搜索到单词就能定位到文档的地址列表 , 然后根据列表中文档的编号就展现文档信息从而实现快速的检索 。
如果搜索出来结果很多 , Google是如何能更精准的将我们需要的信息呈现给我们呢 。 它很明显有个排序功能 , 那是如何排序的?
Google使用了一种叫做"PageRank"的算法 , 通过计算每个网页的权重 , 并按照权重排序 , 权重高的自然就在显示在前面 , 那问题来了 , 为啥权重高的 , 排在前面的通常就是用户所需要的呢?这就得了解下pagerank算法了 。
在pagerank中 , 如果网页A包含网页B说明A认可B , 即投一票 。 如下图ABCD四个网页所示 , 箭头代表超链接的方向 , 比如A->B代表A网页包含B的超链接
小机灵鬼|42 张图带你揭秘后端技术都要学啥?pagerank
怎么计算的?
ABCD 初始值都为1 , 然后根据关系计算权重 。 比如此时B包含了AD两个网页 , 那么权重1被分为两个1/2分别给A和D , 此时A包含BCD , 那么此时A页面新的权重为1/2 + 1/3 + 1 = 11/6 。
pagerank 值越受推荐 , 代表用户越想看到 。 基于每个网页的 pagerank 值对倒排索引中的文档列表排序 , 靠前者则是用户想看到的文档 。
这种是因为超链接 , 引入权值的方式排序 。 还有其他诸如对于商品售卖次数排序或者电影点赞或评价分数排序 。
还有通过关键字查找 , 希望找到和搜索词相关 , 这个时候可能就会采用词频TF进行排序 , 词频代表所查词和文档的相关程度 。
小机灵鬼|42 张图带你揭秘后端技术都要学啥?词频TF
比如我们搜索"Java后端"出现的结果以"后端"的相关技术 。
在大部分的应用中都会涉及到搜索引擎技术 , 技术庞大且复杂 , 希望各位老铁根据自身情况搜索相关所需学习 , 校招面试中不出现盲点即可 。


推荐阅读