• 精选
  • 会员

搜索引擎知多少——搜索结果排序

2019年4月13日  来源:人人都是产品经理 作者: 提供人:luzhao31......
摘要:“搜索”在这个数据信息冗杂的时代里,充当着人们信息的筛选器,人们通过使用搜索功能,可以获得自己想要的内容,屏蔽掉无用的信息。对于商家来说,理论上,搜索功能在一定程度上可以增加长尾信息的曝光度。但是,总所周知,搜索引擎的排序规则实际上饱含水分,竞价排名的规则下,长尾信息的曝光可能就打水漂了。所以,无论是C端还是B端的产品经理,深谙搜索引擎规则,并学会利用好搜索引擎都非常重要。

四、搜索结果排序

至此,我们通过爬虫实现了信息获取、通过倒排索引实现了信息处理,接下来就是如何把这些信息展示给用户,其中最关键的是如何排序。

对电商而言,用户可以选择按照销量、信用、价格甚至综合排序,当然, 排序中也会穿插一些推广。

PM技术课|搜索引擎知多少?

对通用的搜索引擎而言,比如:百度,没有销量、评分这些选项,主要根据网页与搜索关键词的相关性、网页质量等排序。

TF-IDF模型

如何确定网页与关键词的到底有多大的相关性?

如果一个网页中关键词的出现很多次的话,我们通常会认为这个网页与搜索的关键词更匹配,搜索结果应该更靠前。

我们用词频(Term Frequency, TF)表示关键词在一篇文章中出现的频率,代表网页和关键词的匹配程度。

比如:我们在百度等搜索引擎上搜索“产品经理的工作”,关键词为“产品经理”,“工作”,“的”作为停用词,不出现在关键词中。

在某一个网页上,总共有1000个词,其中“产品经理”出现了5次,“工作”出现了10次,“产品经理”的词频就是0.005,“工作”的词频就是0.01,两者相加,0.015就是这个网页和“产品经理的工作”的词频。

这里有一个问题,相较“产品经理”,“工作” 这个词用的更多,在所有的网页中出现的概率也很高。搜索者可能希望查找产品经理相关的信息,按照TF排序,一些出现很多次“工作”这个关键字的网站,就可能排在前面,比如:《程序员的工作》、《老板的工作》等等,逆文本频率 (Inverse Document Frequency,IDF)应运而生。

文件频率(Document Frequency)可以理解为关键词在所有网页中出现的频率,如果一个关键词在很多网页中都出现过,那么它的文件频率就很高。反之亦然,比如:“工作”的DF就高于“产品经理”。

文件频率越高,这个词就越通用,有效的信息就越少,重要性应该更低。于是,我们把文件频率取个倒数,就形成了逆文本频率。

二八定律在这里同样适用,20%的常用词占用了80%的篇幅,大多数关键词出现的频率都很低,这就造成了文件频率很小,而逆文本频率很大,不便于处理。于是我们取对数,便于计算(当然,这里也有其他数学和信息论上的考虑)。

把词频(TF)、逆文档频率 (IDF)相乘,就是大名鼎鼎的TF-IDF模型了。

一个关键词在一个网页中出现的频率越高,这个关键词越重要,排名越靠前;在所有网页中出现的频率越高,这个关键词告诉我们的信息越少,排名应该更靠后。

TF-IDF模型帮助我们解决了关键词与网页相关性的计算,仅仅使用TF-IDF模型,也可以搭建出效果不错的搜索引擎。

当然,商用搜索引擎在TF-IDF的基础上,进行的一定的改进,比如:出现在文章开头和结尾的关键词更加重要,会根据词出现的位置调整相关度。但还是基于TF-IDF模型的调整。

大名鼎鼎的PageRank

搜索结果排序,仅仅考虑相关性,搜索的结果并不是很好。总有某些网页来回地倒腾某些关键词,使自己的搜索排名靠前(当然,部分原因也来自某些搜索引擎更加喜欢推荐自家的东西,这个就不属于技术问题了)。

引入网页质量,可以解决这个问题。排序的时候,不仅仅考虑相关性,还要考虑网页质量的高低,把质量高的网页放在前面,质量低的放在后面。

那么,如何判断网页质量呢?

解决这个问题的是两位Google的创始人。搜索引擎诞生之初,还是美国斯坦福大学研究生的佩奇 (Larry Page) 和布林 (Sergey Brin) 开始了对网页排序问题的研究。

他们的借鉴了学术界评判学术论文重要性的通用方法,看论文的引用次数,引用的次数越高,论文的质量也就越高。他们想到网页的重要性也可以根据这种方法来评价。

佩奇和布林使用PageRank值表示每个网页的质量,其核心思想其实非常简单,只有两条:

  1. 如果一个网页有越多的链接指向它,说明这个网页质量越高,PageRank值越高,排名应该越靠前;
  2. 排名靠前的网页应该有更大的表决权,当一个网页被排名靠前的网页链接时,PageRank值也越高,排名也更靠前。

我们做一个类比:

  1. 有一个程序员,如果公司的人都夸他编程技术高,那么我们认为他编程技术高;
  2. 如果他被公司的CTO赏识,我们基本可以确定他的编程水平确实牛。

比如:下面这张图(专业术语叫做拓扑图),每一个节点都是一个网页,每条线都是两个网站之间的链接。

链接越多,说明网站质量越高,相应的PageRank值就越高。

PM技术课|搜索引擎知多少?

这里有个问题:“当一个网页被排名靠前的网页链接时,其排名也应靠前”,一个网页的排名的过程需要用到排名的结果,这就变成了“先有鸡还是先有蛋”的问题了。

Google的两位创始人用数学解决了这个问题:

最开始的时候,假设搜索的网页具有相同的PageRank值;根据初始值,开始第一轮的计算,按照链接数量和每个网页的PageRank值重新计算每一个网页的PageRank值;按照上一轮的结果,按照链接数量和每个网页的PageRank值重新计算每一个网页的PageRank值……

这样计算下去,直至每个网页的PageRank值基本稳定。

你可能会好奇,这样要计算多少次?

佩奇在论文中指出:对网络中的3.22亿个链接进行递归计算,发现进行52次计算后可获得收敛稳定的PageRank值。

当然,PageRank实际运行起来比这个更加复杂,上亿个网页的PageRank值计算量非常大,一个服务器根本无法完成,需要多台服务器实现分布式计算了。为此,Google甚至开发出了并行计算工具MapReduce来实现PageRank的计算!

除了巨大的计算量,PageRank同样要面对作弊的问题。

开头我们谈到TF-DIF的弊端的时候讲到:总有某些网页来回地倒腾某些关键词,使自己的搜索排名靠前。

同样的,针对PageRank,也总有些网页来回地倒腾链接,使自己的搜索排名靠前。这就需要更多的算法,来识别这些“作弊”行为,我们在搜索引擎反作弊一节再来细讲。

其他排序方式

至此,使用TF-IDF计算网页与搜索内容的相关性,使用PageRank计算网页质量,可以很好地实现网页排序,一个基本的搜索引擎就搭建完成了。

商用搜索引擎在此基础上,还衍生了出其他的排名方式。

竞价排名:

比较著名的是百度推出的竞价排名(其实最开始做竞价排名的不是百度,但百度做得太“成功”,也至于大家都认为是百度发明了竞价排名),竞价排名按照按网站出价高低决定排名先后。

这种排名方式最大的优点是:可以帮助搜索引擎公司盈利。

最大的弊端是:无法保证出价高的网页的质量高,在医疗等特殊领域,有时甚至相反。

随着用户数据的积累,关键词和对应用户点击网页的行为数据也被搜索引擎记录下来了,搜索引擎可以根据用户的操作,不断改进自己的引擎。

时至今日,商用搜索引擎的底层技术都差不了太多,用户数据记录成为了竞争的关键因素,这也是百度得以在国内的搜索引擎市场独占鳌头的重要原因——用户越多,搜索越准确,搜索越准确,用户越多!

站内搜索:

百度、Google等通用搜索引擎要做很多工作,相比之下,站内搜索就简单很多——数据量少、也基本都是整理过的结构化数据,比如:豆瓣读书,搜索的时候直接检索自己的数据库就可以了。

虽然站内搜索的技术与通用搜索引擎有很多不一样的地方,但构建索引、相关性计算、质量计算、排序等流程基本一致。对于站内搜索的需求,同样存在开源的解决方案。

业界两个最流行的开源搜索引擎——Solr和ElasticSearch,它们运行速度快、效果好、可靠性高、可扩展,最关键的是免费,足以满足一般的商业需求。

对大多数公司而言,直接使用开源搜索引擎就可以了,不用重新造轮子,甚至,这些开源的解决方案比自己从头搭建的还更加稳定可靠。

搜索引擎 / 结果排序

如涉及版权,请著作权人与本网站联系,删除或支付费用事宜。

0000