前半生和后半生的分界线是在哪里?
此时此刻。
----------------------------
那网页搜索结果的分界线又在哪里?
前面讨论了google的搜索引擎技术,今天来聊聊google的网页排名方法。
总的来说,一个搜索的排名依赖于两个信息:
1,是网页的质量信息;
2,查询与之的相关性。
google的“PageRank”算法就是要解决如何判断网页质量信息的问题。此算法的出现直接导致了搜索技术质的飞跃。
“PageRank”原理是通过民主表决的方式,如果一个网页被很多其他网页所链接,说明它价值就越高。同时,因为被那些排名更高的网站所链接更说明其价值,所以还要考虑网页排名越高的网站贡献的链接权重越大。
这个计算问题可以转换为二维矩阵相乘的问题,并可以用迭代的方式解决。
初始化时,可以假定所有网站的排名都是相同的,算出第一次迭代排名,再往下继续算出几次的迭代排名。
可以从理论上证明,排名值能够收敛到真实值。而且这迭代次数大概是10次,就能达到收敛的效果。
使用二维矩阵相乘计算还有个问题,其元素数量是网页的2次方个。这么大的矩阵相乘,其计算量是非常大的。
从而引出了稀疏矩阵计算和并行计算工具MapReduce。
MapReduce!
MapReduce!
MapReduce!
注意到了没有,大名鼎鼎的大数据计算框架MapReduce就来源于此。
因为是矩阵相乘,很容易分解成许多小任务,就可以在多台计算机上并行处理。
MapReduce不是本章的重点,后面会再进行介绍。
在计算网页的网页排名的时候,网页之间的链接非常稀疏,因此,还需要对零概率或者小概率事件进行平滑处理。有一个平滑公式,不关键,就不在这里阐述了。
至此google搜索算法成熟后,其他搜索新技术带来的提升空间都非常有限,用户难以体察到差别。这也是后来的公司在搜索领域上很难继续有所作为的原因。