当前位置: 首页 > 科技观察

搜索引擎告诉你如何“排辈分”

时间:2023-03-17 01:03:14 科技观察

在上一篇《搜索引擎告诉你大海捞针》中,我们简单介绍了搜索引擎如何快速搜索千亿网站。我们正在寻找什么。但能够搜索结果只是搜索过程的一部分,还有另一个非常重要的组成部分——排序。现在我们随便搜索一些数据,可能会找到几十甚至上百万的结果,如果是比较热门的内容,甚至上千万的结果。那么如何从数以千万计的网页中找到最想要的网页,或者与用户搜索的关键词最相关的网页呢?这就是我们将在本章中探讨的内容。如何对相关结果进行排名“相关”一词并不是一个黑白分明的量化指标。比如你搜索“XXX车评”或者“XXX车怎么样”这样的关键词,假设你找到两篇文章:张三和李四对XXX车的评价,文章的内容是描述这辆车,但角度不同。那么这两篇文章就符合“相关”。接下来我们来思考一个问题:既然两个网页是相关的,那么谁应该排在第一位,谁应该排在后面呢?这个排序的判断标准是什么?我们可以通过“链接”来实现。比如现在还有另外四个用户A、B、C、D,他们在一些网页上发布了张三和李四的车评网页链接。通过他们的链接,其他用户可以跳转到张三和李四的汽车评论网页。3、李四的网页:用户A、B、C、D分别发布了张三和李四网页的链接。可以看到用户A链接到了张三的网页,而B、C、D链接到了李四的网页,张三和李四的链接比例是1:3。单从链接数的纬度来看,搜索引擎可以认为李四的网页应该有更高的排名。你觉得这合理吗?可能你还没有发现问题出在哪里。如果我把上图的内容改一下,你应该明白了:用户A、B、C、D的链接内容都是负面的。可以看到,虽然从链接数量上来说,李斯多了一些,但是这些内容都是负面的(我们善意假设这些负面内容可能是真的)。张三虽然只有1个链接,但是他的评价确实是正面的。这个时候,如果搜索引擎把李四的网页排在最前面,那肯定是不合适的。(当然这里不考虑张三网页的内容质量,也很垃圾,只求水军好评。)即便如此,上面的链接方式还是有效的,因为发链接是更多推荐。但是用户A、B、C、D并没有上图那么理想。因为在现实中,用户其实是有权重的。如何引入加权方法?比如,当一个普通用户在网上告诉你,有一款护肤品很好用,你内心的操作系统是:呵呵,我告诉你吧?但是如果XX奇直播我及时告诉你,这款护肤品很好用,你可能会说:买吧!这是体重影响我们决策的一个很好的例子。把这个例子放到上图中,假设用户A就像于XX奇直播间里一位非常有经验、口碑好、广受信任的车评人,他的建议权重肯定会比其他普通用户大。但是计算机无法判断某个用户是不是像人脑一样的大V,他的推荐应该排在第一位。毕竟还是需要一个量化的过程,那么具体应该怎么量化呢?底层逻辑实际上是联系在一起的。假设用户A是一个大V,他的主页被很多网页链接,我们假设这些“很多”网页都是一些普通的网页,没有其他链接指向它们,那么这些网页的权重值为1,那么如果有100个这样的网页用大V的首页发帖,那么大V首页的权重值为100,如下图:权重值加入链接数模型.第三页的排名优先级应该比李四高,因为权重值100>3。看到这里,你觉得这样能解决我们开头的问题吗?通过链接+权重的方式,可以将相关性高的网页排在前面。不幸的是,这个逻辑有一个非常大的问题。链接的循环引用实际的网页依赖并不像上图那样理想、清晰、层次分明。许多网页可能有循环依赖。例如,网页在实际环境中可能存在循环引用。循环我们都知道会发生什么。有些网页的权重值会一直循环增加,这显然是不合理的。RandomAccess要解决这个问题,我们需要用到“randomaccess”。简单的描述是:从互联网上的任意一个网页开始访问,然后随意点击一个链接,然后跳转到下一个网页,进行同样的操作。另外,“随机访问”还有一个机制:有15%的概率不会从当前网页随机点击链接,而是直接跳转到已经访问过的页面。麻瓜的描述是:类似于我们平时“上网冲浪”。就好像大家在手机上浏览B站,在首页点击一个推荐的视频,然后这个视频下面就有推荐,再次点击,然后继续看相关视频,然后当你打到“15%》的概率和无聊,就疯狂的向右滑动回到首页,继续点击其他视频,重复这个过程。然后该算法计算每个网页被访问的次数。因为是随机访问,一个网站被其他网站引用的越多,被访问的概率就越大。而访问次数就是它的权重。由于整套随机访问有总次数限制,即使网页之间存在链接依赖循环,也不会导致权重无限增加,因为有15%的概率重访。这样,上面的死循环问题就可以解决了。本质上,随机访问的底层逻辑仍然依赖于权重的思想,只是权重的计算方式略有变化。总结以上这套算法也叫PageRank,是Google的两位创始人LarryPage和SergeyBrin在1998年的一篇论文《The Anatomy of a Large-Scale Hypertextual Web Search Engine》中提出的。Page是一个双关语,它不仅是创始人的名字,也代表着网页的排名。只是实际情况肯定只会更复杂,所以实际的随机接入算法与上面的描述略有不同。比如我要宣传我的网页XX,那我可以自己再造一堆其他不相关的网页,把网页XX的地址链接在里面,增加权重值,这显然不符合预期。而且,对于几千亿的网页,如果真要运行随机访问算法,耗时可想而知,因此PageRank无法实际应用。而在实际的生产场景中,不可能仅仅通过这个纬度来判断网页的重要性。不过PageRank的核心思想——网页权重值的传递仍然有效。