架构师训练营第十三周作业
1. Google 搜索引擎是如何对搜索结果进行排序的?(请用自己的语言描述 PageRank 算法。)
在说 pagerank 之前,先说一下我们平时开发中的搜索功能是怎么做的。下面是一条典型的搜索语句:
我们在做搜索的时候,其实是做了两件事情。第一件是找到符合条件的数据集,第二件是在这个数据集里面快速找到我们真正想要的。换句话来说,就是过滤和排序。搜索引擎其实做的也就是这两件事情。首先是过滤,通过倒排索引的方式,建立关键字和网页之间的映射,满足过滤的需求。剩下排序的问题,则通过所谓的 pagerank 算法来实现。
pagerank 需要解决的一个核心问题是,如何给一个网页进行打分,用来保证排序靠前的页面,包含用户想要找的信息。这样用户就只需要点击几个页面,就能完成搜索过程。那如何给页面打分呢?不同的页面的含金量哪个更高?pagerank 算法是基于这样两个判断:
越是重要的页面,越是会被别的页面引用。
重要的页面引用的页面,往往也是比较重要
这个判断其实不能说绝对正确,但是绝大部分的情况下面都是成立的。所谓物以类聚人以群分,如果页面不重要,也就很少外部的页面去引用它。除非是有人认为的做这些引用,来影响搜索引擎的计算。其实这就是前些年很火的 SEO 技术,通过有意识的行为,来保证自己的网页在搜索引擎的结果前面几条出现。当然现在国内的搜索引擎都是拿钱办事,这个 pagerank 算出来的权重往往就没那么重要了,比如某度,搜索结果出来往往最前面都是广告,🙈
回归到 pagerank 算法本身,它的算法计算公式如下:
其中,参数 d 表示一个页面的跳出概率,模拟用户在某个页面直接输入地址进行跳转的行为,也是为了解决页面内部引用自己链接的情况下面,导致 pagerank 会陷入死循环的问题,保证最终每个页面的打分最终是可以收敛于某一个值。
真实的搜索引擎,现在的页面评分算法是更加多样的,并不仅仅只有 pagerank 一种,还包括商业排名,个人偏好,国家地区法律限制等内容,但是从本质上面来说,还是通过某一种算法,来计算页面的评分,然后影响返回结果的排名。以上就是我对这个算法的分析和理解,谢谢围观。
版权声明: 本文为 InfoQ 作者【李日盛】的原创文章。
原文链接:【http://xie.infoq.cn/article/c8dae7544c3b75477efbabebb】。文章转载请联系作者。
评论