写点什么

架构师训练营第十三周作业

用户头像
李日盛
关注
发布于: 2021 年 01 月 15 日

1. Google 搜索引擎是如何对搜索结果进行排序的?(请用自己的语言描述 PageRank 算法。)


在说 pagerank 之前,先说一下我们平时开发中的搜索功能是怎么做的。下面是一条典型的搜索语句:


select * from page p where p.words like '%新冠%' order by time
复制代码


我们在做搜索的时候,其实是做了两件事情。第一件是找到符合条件的数据集,第二件是在这个数据集里面快速找到我们真正想要的。换句话来说,就是过滤和排序。搜索引擎其实做的也就是这两件事情。首先是过滤,通过倒排索引的方式,建立关键字和网页之间的映射,满足过滤的需求。剩下排序的问题,则通过所谓的 pagerank 算法来实现。


pagerank 需要解决的一个核心问题是,如何给一个网页进行打分,用来保证排序靠前的页面,包含用户想要找的信息。这样用户就只需要点击几个页面,就能完成搜索过程。那如何给页面打分呢?不同的页面的含金量哪个更高?pagerank 算法是基于这样两个判断:


  • 越是重要的页面,越是会被别的页面引用。

  • 重要的页面引用的页面,往往也是比较重要


这个判断其实不能说绝对正确,但是绝大部分的情况下面都是成立的。所谓物以类聚人以群分,如果页面不重要,也就很少外部的页面去引用它。除非是有人认为的做这些引用,来影响搜索引擎的计算。其实这就是前些年很火的 SEO 技术,通过有意识的行为,来保证自己的网页在搜索引擎的结果前面几条出现。当然现在国内的搜索引擎都是拿钱办事,这个 pagerank 算出来的权重往往就没那么重要了,比如某度,搜索结果出来往往最前面都是广告,🙈


回归到 pagerank 算法本身,它的算法计算公式如下:



其中,参数 d 表示一个页面的跳出概率,模拟用户在某个页面直接输入地址进行跳转的行为,也是为了解决页面内部引用自己链接的情况下面,导致 pagerank 会陷入死循环的问题,保证最终每个页面的打分最终是可以收敛于某一个值。


真实的搜索引擎,现在的页面评分算法是更加多样的,并不仅仅只有 pagerank 一种,还包括商业排名,个人偏好,国家地区法律限制等内容,但是从本质上面来说,还是通过某一种算法,来计算页面的评分,然后影响返回结果的排名。以上就是我对这个算法的分析和理解,谢谢围观。


发布于: 2021 年 01 月 15 日阅读数: 15
用户头像

李日盛

关注

好架构=低成本+可实现 2018.01.22 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第十三周作业