本篇文章是对于搜索系统工作原理一个整体的介绍,对于原理的理解,是设计系统举重若轻的基础。
1.信息和信息量
在介绍搜索之前,先介绍两个概念:信息和信息量。
(采用的均是自以为比较通俗易懂的解释,如果感兴趣可以读相关书籍)
信息是减少不确定性的东西,信息也是增加确定性的东西。
前半句是香农信息定义,后半句是逆香农信息定义。举个栗子,回想下,和一个异性交往的过程。在你遇到ta之前,你不知道这个世界上有这个人的存在,后来你看到了ta的样子,后来你了解了ta的性格、口头禅,往事。然后一步一步,你对ta从丝毫不了解,到逐渐熟识。这期间就是一个你不停获取ta信息的过程,正是这些信息,让你从完全不确定ta是怎样的人,到完全确定ta很适合你。
信息量是一个信息能减少不确定性的度量,信息
量也是一个信息能
增加确定性的度量。
关于信息量,有很多数学的描述,但是通俗来讲,可以这么简单理解。举个栗子,证人描述嫌疑犯。a证人的信息是“他是个男人”。b证人的信息是“ta是个高中男生”,c证人的信息是“ta是个长发170摆布的高中生。”d证人的信息是“我认识他,他是学校的扛把子陈浩南”。我们直觉能感受到信息量的大小关系为:a
翻译为计算机可以理解的数学逻辑:本地男人的比例是50%,本地高中男生的比例为8%,本地长发170摆布的高中男生的比例是4%,本地叫陈浩南的扛把子的比例是%。因为p(a)>p(b)>p(c)>p(d),所以信息量的大小关系为:a
2.搜索的产品逻辑
搜索满足了用户迅速找到本身感兴趣内容的需求。用户输入一个query,搜索系统按照用户的输入的信息,筛选出系统认为用户感兴趣的内容,同时根据系统认定的重要性进行排序展示。请注意这个表述,简单而言,搜索可以分为三步。
step1:对用户输入信息的解读step2:按照用户输入信息对内容进行筛选step3:对筛选后的结果进行排序
而要了解这三步怎么在搜索系统中完成,就需要先了解搜索的办事器怎么存储信息。
3.搜索数据的存储原理
上一张图,假设我们做了一个新闻网站,那么它的结构就是下图。内容进行了简化,假设一个新闻,文本只有标题,导语,正文。数据只有阅读量,评论数,分享数。
图1-1
差不久不多就是上图右边的这种结构。右边标识的是新闻内容的存储:就像图书馆的书一样,整整齐齐按挨次排好,便利查找(这个存储结构的名字叫做索引,就是来自于图书馆的用语)。左边是词库:只要一次搜索的输入词能匹配到词库,就可以快速的查找词库到对应的内容。
每个搜索系统都有本身的词库,无法对应到分词的搜索行为就会没有结果。每个搜索系统都会按照目标用户的差别,有对应的一套词库,就像字典一样,《冶金专业词典》和《生物学大辞典》收录的词条是差别的,知乎的词库和淘宝的词库也差别。搜索的很多优化都是集中在词库的优化上。
简单总结下,搜索的存储原理就是:
一个系统词库,一个摆列整齐的内容索引库,同时系统词库和内容索引库之间可以快速关联。
在这个搜索系统的储存结构的基础上,我们提到的搜索三步骤将依次展开。
:对用户输入信息的解读
前面提到,搜索的词库是有限的,但是用户的输入却是没有限制的。那么怎么把无限制的搜索转化为有限的词库,而且匹配到对应的结果呢?这里需要介绍一个新的概念:
分词,简单来说就是对输入字符串进行分拆。
同样以【图1-1】中的新闻搜索系统为例。如果用户输入的query为“中国的转基因食物”,系统中其实没有这个词。如果没有分词功能,这个搜索就会立即结束,,即使系统里确实有对应的内容。分词的工作原理是在无法精确匹配的情况下,会对用户的输入进行进一步的拆分。于是我们得到了下面的结果。
“中国的转基因食物”——“中国”、“的”、“转基因”、“食物”。
并不是所有的词都有信息量,如果召回“的‘’的结果,那么几乎所有的新闻内容里面都会有这个字,召回这么多结果显然是分歧错误的。好比这个query里的“的”,这个词实际上在分词系统中会被直接忽略掉。正是因为出现在内容中的概率差别,一个词出现的新闻越多,这个词的信息量就越小,信息量太小的词会被忽略,也就是
停用词
。同时包罗信息量越大的词的新闻内容,会更更要。那么去掉停用词之后,结果就进一步简化。
“中国的转基因食物”——“中国”、“转基因”、“食物”。
经过处理,用户非尺度的query就被转化为尺度的词库,就可以快速找到对应的内容了。如【图1-1】所示。
:按照用户输入信息对内容进行筛选
经过对用户的query解读之后,其实就得到了一些尺度化的词,而这些词就会对应一些搜索目标内容,接下来就是对于内容的筛选。
免责申明:问答内容为用户发布,不代表云媒派的立场,如果侵犯了您的权益,请联系我们,我们在核实后24小时内删除内容。