本网站(662p.com)打包出售,且带程序代码数据,662p.com域名,程序内核采用TP框架开发,需要联系扣扣:2360248666 /wx:lianweikj
精品域名一口价出售:1y1m.com(350元) ,6b7b.com(400元) , 5k5j.com(380元) , yayj.com(1800元), jiongzhun.com(1000元) , niuzen.com(2800元) , zennei.com(5000元)
需要联系扣扣:2360248666 /wx:lianweikj
一文带你了解搜索功能设计
奔跑的男人 · 639浏览 · 发布于2020-05-20 +关注

大纲如下:

  1. 搜索是为了解决什么

  2. 如何设计站内搜索

  3. 理解用户搜索意图

  4. 召回内容

  5. 排序内容

  6. query分析

  7. 写在最后

一、搜索是为了解决什么

搜索引擎在PC时代崛起,谷歌、百度通过输入框和网页搜索结果来满足网民的信息消费,帮助网民打破各种信息不对称。谷歌、百度的搜索信息是相对开放的,用户能在上面搜到大部分的内容。

随着移动互联网的普及,许多APP开始构建自己的内容生态,搭建自身的站内搜索。谷歌、百度等搜索引擎时从搜索到内容,这些站内搜索是从内容到搜索,基于自家的内容生态来搭建搜索功能。

对于用户来说,用户搜索内容可分为几种场景:

  • 有明确想搜的内容并记得所有关键词

  • 有明确想搜的内容但记不清所有关键词

  • 无明确想搜的内容

所以对于用户来说,搜索是为了解决用户明确或者不明确的搜索需求,让用户能够搜到想搜的内容。从更深一层来说,搜索提高了用户获取信息、内容的效率。

二、如何设计站内搜索

一文带你了解搜索功能设计

站内搜索对于搜索系统来说,整个流程可以分为三步,分别是:

  • 理解用户搜索意图

  • 召回内容

  • 排序内容

整个流程里,第一步理解用户搜索意图会涉及到query预处理、分词技术等技术,第二步召回相关内容一般用到的是索引倒序的技术,召回有相关性的内容,这里会涉及到倒排索引和匹配度问题。第三步排序内容目前常见的有排序策略、机器学习。

产品经理需要做的主要是画搜索原型图和制定召回相关性策略和排序策略,其他的主要是靠技术或者第三方去实现。

三、理解用户搜索意图

用户搜索是整个搜索系统的上游,只有理解了用户的搜索意图,搜索展现的结果才会是用户想要的。如果对搜索意图理解错了,不论我们的召回率和排序策略多么牛,对用户来说这次的搜索其实是失败的。

那么怎么理解用户的搜索意图呢?用户输入的是关键词,所以我们来分析下怎么理解关键词。(ps:这篇文章只讨论搜索方式为输入文字的方式,不讨论语音输入、图片、视频输入等方式)

3.1 query预处理

3.1.1 拼音转文字

当用户在搜索框中输入拼音时,可以识别出文字。这种搜索场景还是蛮常见的,比如用户想在微信读书中搜索“俞军产品方法论”,那么当用户在搜索框中输入”yujunchnapinfangfalun”时能理解出“俞军产品方法论”,并给出搜索结果。

3.1.2 繁体转简体

对于一些有繁体输入习惯的用户,需要对用户输入的繁体字进行转化,可以识别出其简体。具体方案是通过词表将繁体query转化为简体query,后续系统在将简体query进行召回。

3.1.3 自动纠错

当用户在搜索框中输入“于军”,其实用户想搜的是“俞军”。系统可以对这个query进行判断,判断有没有在索引库命中文档,如果没有,则需要对其进行预处理的自动纠错。

自动纠错可以通过维护纠错表的方式实现。在纠错表里通过映射原词给纠错后的词,从而实现query改写。

目前自动纠错在客户端显示上也有几种不同的形式:

  • 强纠错:直接改写query,给用户的提示一般为“已显示XXX的搜索结果”

  • 中纠错:直接改写query,给用户的提示一般为“已显示XXX的搜索结果,仍然搜索:X原词XX”

  • 弱纠错:不改写query,只是给用户提示“你是不是要搜索:XXX”

3.1.4 同义词转换

同义词转换从字面上理解就是能够对query进行同义词的理解。比如当用户输入“首都机场”,可以理解为“北京机场”,用户输入“国宝”,可以理解为“大熊猫”。

同义词转换技术对于query意图理解非常重要,很多时候用户不能很好地输出自己想搜索的内容,如果没有同义词转换技术进一步处理,那么召回的内容很有可能并不是用户想要的。

同义词转换技术一般是通过获取用户的session日志来分析相关的query。

举个例子,比如一个用户输入”国宝“后,查询出来的结果不是想要的,从而没有点击行为。该用户接着输入“大熊猫”,得到了想要的搜索结果并点击了内容。那么“国宝”和”大熊猫“之间就建立了联系。

当然,”国宝“也有可能和”国家宝藏”、“国家文物”等建立联系,基于统计后,可以计算出“国宝”与别的词的联系权重。在召回相关性内容时,对关键词和同义词进行召回,并赋予不同的权重,权重分值可以放在相关性分数上。

3.2 分词技术

以微信读书为例子,目前微信读书的搜索结果内容为书、公众号文章、公众号。比如用户在微信读书上输入“无限的游戏”,用户的意图是想查找一本名为“有限与无限的游戏”的书,不过记错为“无限的游戏”。

如果词典里没有“无限的游戏”这个词,那么就无法返回对应的内容,用户的搜索就到此结束。

词典的词是有限的,输入的关键词是无限的。为了解决这种情况,目前搜索系统主要是通过分词技术来实现。分词的意思是将关键词切分成多个词。

比如“无限的游戏“可以切分为“无限”“的”“游戏”,采用不同的分词技术出来的分词结果也不同。比如有了“无限”“的”“游戏”后,分词会对应到词典里的词,有对应的索引内容,召回了“有限与无限的游戏”这本书。

中文分词目前有三种分词方法,分别是:

  • 基于词典的分词

  • 基于语法的分词

  • 基于统计的分词

第一种基于词典的分词方法用的比较多,我简单地为大家介绍一下。

基于词典的分词指的就是系统有一个词典库,当query的分词与词典的词对应上了,就能召回词典对应的索引文档。

分词的粒度也是至关重要的,目前有许多这方面的规则和算法。比较经典的有正向最大匹配、逆向最大匹配的规则、MMSEG算法。

经过分词切割后,用户非标准的query就能被切分成标准的分词,并能在词典中匹配到词,从而能索引回相关的内容。

当然产品经理不需要精通这些技术,了解概念和实现的结果即可。产品经理提出来的需求有可能是技术部门不支持的,或者不是该功能的最优方案。所以了解这些最基本的技术原理,有助于我们更好地设计搜索功能和提合理的搜索需求。

四、召回内容

4.1 倒排索引技术

这一节,我们需要先说下搜索很核心的技术——倒排索引技术。

搜索系统有词典和内容索引库(数据库),词典里的词关联匹配内容索引库。当用户输入关键词后,如果词典里有这个词,线上会快速召回内容文档。如果词典里没有这个词,那这次的搜索行为就没有结果。

假设内容索引库一共只有3个内容文档,分别是:

  • doc1:站内搜索从0到1全流程设计

  • doc2:搜索应该怎么设计才是对的

  • doc3:产品小白怎么入门站内搜索设计

用户输入关键词“怎么设计站内的搜索”,经过分词后,词典里有这个词,系统会召回对应的索引文档。

索引库如下图所示:

一文带你了解搜索功能设计

以新闻搜索来说,一条新闻讯息一般会有标题、简介、关键词、来源、正文。

在召回内容的时候,会根据新闻的这几个属性分别构建倒排索引。当然需要召回的字段属性是需要考虑的,并非所有属性都得进行索引召回。

比如可以只对标题和简介这两个属性进行倒排索引召回。召回的时候,我们认为标题跟关键词匹配度高于简介跟关键词的匹配度,可以先以标题为维度倒排索引进行召回,接着再从简介进行召回。

这样的分级索引库有利于提高检索效率,同时能较快将优质和匹配度高的内容检索出来。

五、排序内容

召回相关的内容后,如何排序呢?排序的策略决定了用户最终看到怎样的搜索结果,所以这部分是相当重要的,同时也是比较复杂的。

我这里提供两种排序策略,一种粗排,一种精排(精排、粗排的叫法只是我为了区分两种排序策略而定义的)。产品经理要根据具体的搜索业务和需求来制定搜索排序策略。

5.1 粗排策略

粗排主要是通过维度来将召回的内容进行排序。以某新闻app为例,搜索结果只是新闻(新闻内容包括图文、纯文本、视频)。召回的范围是新闻标题和摘要。

召回的内容匹配度分两个等级:

  1. 完全匹配

  2. 模糊匹配(前缀、后缀、分词等)

排序策略:

优先度:新闻标题>摘要,在优先度下按照下方的策略:

I.完全匹配>模糊匹配

II.时效性(以天为单位)

III.阅读量优先

以上的粗排策略只是为了讲解,具体的维度和排序指标不一定是我上面提及的。

5.2 精排策略

精排策略是根据doc分数倒序排序。用户输入query后,召回了doc(内容),这些doc怎么排序呈现给用户呢?答案是根据每个doc的分数倒序呈现给用户。

doc分数=文本相关性的值*重要度的值。

文本相关性的值用dscore表示、重要度的值用Iscore来表示,则doc分数=dscore*Iscore。

5.2.1 文本相关性

文本相关性的数值怎么计算呢?目前业界计算相关性的方法主要有三种,分别是tf-idf文本相关性、基于统计词频的BM25、空间向量模型。

我在这里给大家介绍下非常经典的tf-idf文本相关性方法。这个方法不仅简单,并且能解决80%以上的搜索结果相关性问题。

5.2.1.1 Tf-idf

Tf-idf中的tf全称为Term Frequence,指的是词频,是指该词在某文本的占比。Tf越高,说明该词在文本中越重要。

Idf全称为Inverse Document Frequence,指的是逆文档频率。在说idf前先介绍下df,df是文档频率,是将包含该Term的文档数除以总文档数。比如一个Term在10个文档出现,总共有50个文档,那么df值为10/50(1/5)。

讲完df后,我们再聊回idf,还是上面的例子,那么idf值为log(50/10)。由公式可以看出,idf越高,说明有该Term的文本越少,那么该文本越就能代表该Term。

同时用log来表示,还能处理掉一些高频词对文本相关性的干扰。比如“的”“了”,这种高频词的Tf可能很高,但Idf会很小,接近于0,两数值相乘后也会很小,能很好的排除这些高频词的噪音。

对于较为简单的文本相关性排序,相关性的分值可以用Tf*idf来表示,分值越高,说明文本相关性越高。

5.2.1.2 词距与词序

query被切割分词成多个term后,term之间的距离与顺序跟文本相关性有关。

举个例子,用户搜索“产品方法论”,在索引库里恰好有两个文档为“俞军产品方法论”和“做产品的10个方法”,很明显召回排序时,“俞军产品方法论”应该要比“做产品的10个方法”排在更前。

但可能这两个文档的Tf*idf值是一样的,因为“产品”和“方法”这两个term都有。所以我们需要关注term之间的距离和顺序,在计算相关性分值时考虑进来,从而保证紧密度更高的term在召回的文档中出现距离更近更相关。

5.2.1.3 term位置

不同位置相关性的重要程度会不同,以新闻搜索来说,标题与关键词的相关性是要重要于简介与关键词的相关性的。一般这种情况下,可以赋予一个系数到Tf*idf,最终dscore=a*Tf*idf(a是系数,比如标题可以赋予1,简介赋予0.8)

5.2 重要度

重要度指得是doc(内容)的重要程度(优质程度)。相关性得分差不多的内容里会存在优质内容和劣质内容,一般情况下,我们会将优质内容排在更前面。当然也会有商业、广告或者别的业务的考虑,这种情况下重要度得分就会更加复杂一些。

重要度得分(Tscore)由于跟query没有直接关系,是每一个doc的实时属性,所以这一部分的分数可以离线算好。

还是以新闻搜索为例,假设一条新闻最重要的三个指标是阅读量、评论率、时效性。那么

相关推荐

五个方面分析如何选择关键词

luenmicro · 936浏览 · 2019-04-26 11:28:14
如何让你广告 1 秒吸引用户注意力?

makebo · 3389浏览 · 2019-04-28 22:03:00
如何更好地提升网站优化四点技巧

makebo · 1221浏览 · 2019-04-29 14:21:19
如何创建有用的内容获得更好的排名?

makebo · 791浏览 · 2019-04-29 14:30:34
加载中

0评论

评论
分类专栏
小鸟云服务器