主页 > 快速排名 > 常见问题 > 五分钟了解搜索原理

五分钟了解搜索原理

POST TIME:2018-12-03 21:46

 

本篇文章是对于搜索系统工作原理一个整体的介绍,对于原理的理解,是设计系统举重若轻的基础。

1. 信息和信息量

在介绍搜索之前,先介绍两个概念:信息和信息量。

(采用的均是自以为比较通俗易懂的解释,如果感兴趣可以读相关书籍)

1.1 信息是减少不确定性的东西,信息也是增加确定性的东西。

前半句是香农信息定义,后半句是逆香农信息定义。举个栗子,回想下,和一个异性交往的过程。在你遇到TA之前,你不知道这个世界上有这个人的存在,后来你看到了TA的样子,后来你了解了TA的性格、口头禅,往事。然后一步一步,你对TA从丝毫不了解,到逐渐熟识。这期间就是一个你不停获取TA信息的过程,正是这些信息,让你从完全不确定TA是怎样的人,到完全确定TA很适合你。

1.2 信息量是一个信息能减少不确定性的度量,信息量也是一个信息能增加确定性的度量。

关于信息量,有很多数学的描述,但是通俗来讲,可以这么简单理解。举个栗子,证人描述嫌疑犯。A证人的信息是“他是个男人”。B证人的信息是“TA是个高中男生”,C证人的信息是“TA是个长发170摆布的高中生。”D证人的信息是“我认识他,他是学校的扛把子陈浩南”。我们直觉能感受到信息量的大小关系为:A

翻译为计算机可以理解的数学逻辑:本地男人的比例是50%,本地高中男生的比例为8%,本地长发170摆布的高中男生的比例是4%,本地叫陈浩南的扛把子的比例是0.0001%。因为P(A)>P(B)>P(C)>P(D),所以信息量的大小关系为:A

2. 搜索的产品逻辑

搜索满足了用户迅速找到本身感兴趣内容的需求。用户输入一个query,搜索系统按照用户的输入的信息,筛选出系统认为用户感兴趣的内容,同时根据系统认定的重要性进行排序展示。请注意这个表述,简单而言,搜索可以分为三步。

Step1:对用户输入信息的解读Step2:按照用户输入信息对内容进行筛选Step3:对筛选后的结果进行排序

而要了解这三步怎么在搜索系统中完成,就需要先了解搜索的办事器怎么存储信息。

3. 搜索数据的存储原理

上一张图,假设我们做了一个新闻网站,那么它的结构就是下图。内容进行了简化,假设一个新闻,文本只有标题,导语,正文。数据只有阅读量,评论数,分享数。

图1-1

差不久不多就是上图右边的这种结构。右边标识的是新闻内容的存储:就像图书馆的书一样,整整齐齐按挨次排好,便利查找(这个存储结构的名字叫做索引,就是来自于图书馆的用语)。左边是词库:只要一次搜索的输入词能匹配到词库,就可以快速的查找词库到对应的内容。

每个搜索系统都有本身的词库,无法对应到分词的搜索行为就会没有结果。每个搜索系统都会按照目标用户的差别,有对应的一套词库,就像字典一样,《冶金专业词典》和《生物学大辞典》收录的词条是差别的,知乎的词库和淘宝的词库也差别。搜索的很多优化都是集中在词库的优化上。

简单总结下,搜索的存储原理就是:一个系统词库,一个摆列整齐的内容索引库,同时系统词库和内容索引库之间可以快速关联。

在这个搜索系统的储存结构的基础上,我们提到的搜索三步骤将依次展开。

4. Step1:对用户输入信息的解读

前面提到,搜索的词库是有限的,但是用户的输入却是没有限制的。那么怎么把无限制的搜索转化为有限的词库,而且匹配到对应的结果呢?这里需要介绍一个新的概念:分词,简单来说就是对输入字符串进行分拆。

同样以【图1-1】中的新闻搜索系统为例。如果用户输入的query为“中国的转基因食物”,系统中其实没有这个词。如果没有分词功能,这个搜索就会立即结束,,即使系统里确实有对应的内容。分词的工作原理是在无法精确匹配的情况下,会对用户的输入进行进一步的拆分。于是我们得到了下面的结果。

“中国的转基因食物”——“中国”、“的”、“转基因”、“食物”。

并不是所有的词都有信息量,如果召回“的‘’的结果,那么几乎所有的新闻内容里面都会有这个字,召回这么多结果显然是分歧错误的。好比这个query里的“的”,这个词实际上在分词系统中会被直接忽略掉。正是因为出现在内容中的概率差别,一个词出现的新闻越多,这个词的信息量就越小,信息量太小的词会被忽略,也就是停用词。同时包罗信息量越大的词的新闻内容,会更更要。那么去掉停用词之后,结果就进一步简化。

“中国的转基因食物”——“中国”、“转基因”、“食物”。

经过处理,用户非尺度的query就被转化为尺度的词库,就可以快速找到对应的内容了。如【图1-1】所示。

5. Step2:按照用户输入信息对内容进行筛选

经过对用户的query解读之后,其实就得到了一些尺度化的词,而这些词就会对应一些搜索目标内容,接下来就是对于内容的筛选。

标签:九江 乌鲁木齐 盐城 东营 林芝



收缩
  • 微信客服
  • 微信二维码
  • 电话咨询

  • 400-1100-266