五分钟了解搜索原理
本篇文章是对于搜索系统工作原理一个整体的介绍,对于原理的理解,是设计系统举重若轻的基础。
1. 信息和信息量
在介绍搜索之前,先介绍两个概念:信息和信息量。
(采用的均是自以为比较通俗易懂的解释,如果感兴趣可以读相关书籍)
1.1 信息是减少不确定性的东西,信息也是增加确定性的东西。
前半句是香农信息定义,后半句是逆香农信息定义。举个栗子,回想下,和一个异性交往的过程。在你遇到TA之前,你不知道这个世界上有这个人的存在,后来你看到了TA的样子,后来你了解了TA的性格、口头禅,往事。然后一步一步,你对TA从丝毫不了解,到逐渐熟识。这期间就是一个你不断获取TA信息的过程,正是这些信息,让你从完全不确定TA是怎样的人,到完全确定TA很适合你。
1.2 信息量是一个信息能减少不确定性的度量,信息 量也是一个信息能 增加确定性的度量。
关于信息量,有很多数学的描述,但是通俗来讲,可以这么简单理解。举个栗子,证人描述嫌疑犯。A证人的信息是“他是个男人”。B证人的信息是“TA是个高中男生”,C证人的信息是“TA是个长发170左右的高中生。”D证人的信息是“我认识他,他是学校的扛把子陈浩南”。我们直觉能感受到信息量的大小关系为:AP(B)>P(C)>P(D),所以信息量的大小关系为:A和标签中只需要几行代码就能完成。
- 中是对于业务数据赋予权重。
- 中是对于文本数据赋予权重。
在研究过Solr系统这个机制之后,对Solr核心公式进行变形,就得到了一个公式:
- 代表针对文本,我们给出的文本分数权重。比如这个系统中有三种文本,标题,导语,正文。根据重要性,标题权重为10,导语权重为5,正文权重为1。
- 代表针对文本,Lucene算法给出的文本相关性分数,这个会综合考虑文本的字数,这个搜索词在所有文本中出现的概率等等因素(想进一步了原理的同学,可以看下 TF-IDF 与 余弦相似性 的介绍)。
- 代表针对数据,我们给出的数据权重。比如这个系统中有三种数据,评论量,分享数,阅读量。根据重要性,标题评论数权重为100,分享数权重为200,阅读量权重为1。(一般而言会引入时间衰减性,这里暂不讨论)
- 代表针对数据,具体的值。比如这个系统得三种数据,评论量,分享数,阅读量。
- 代表归一化系数,意味着权重可以给的非常大,最后总的分值也会在一个合理的范围内。
- 是本次根据算法索引判断出的。代表本次打分,用户输入query提供信息的信息量大小。如果输入query提供了越多的信息,则S越大。
- 增加,不变,之前的系数不变,之前的系数增加。而代表文本数据的对整体分数的贡献,则 越大,就说明文本数据相比于业务数据就占有更大的权重。比如:输入“北京国庆交通拥堵”,和输入“交通拥堵”相比,“北京国庆交通拥堵”提供给了系统更多的信息,S值更大,文本的打分在总分数汇总占比越大。
所以我们可以看到,其实最终影响排序的,是我们对于文本数据和业务数据的赋予的权重,即: 代表针对文本的权重,和 代表针对数据的权重。
这两组数据,影响了搜索最终的排序,而这组数据的赋值,正是搜索系统的对业务的理解。
7. 小结
本篇文章是对于搜索系统工作原理一个整体的介绍,对于原理的理解,是设计系统举重若轻的基础。
在这些基础原理之上,搜索系统还有很多标准功能。那么一个比较完备的搜索系统应该具备怎样的标准功能?这些功能又有着怎么的原理?移动时代,搜索前端设计应该如何规划?欢迎关注专栏,继续收看下期。
作者:潘一鸣,知乎专栏:产品逻辑之美
关键字:产品经理
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!