从输入到输出,带你快速了解搜索全流程

3 评论 8478 浏览 48 收藏 16 分钟

搜索功能作为产品设计中的基础且重要的功能,已经伴随着产品的发展历经了数十年。笔者向我们分析了整个搜索的流程,并做了一个简单的概述。

第一部分:搜索功能是什么?

通过用户的输入,从海量的数据中能够找到与之匹配的信息的功能,称之为搜索。

搜索出生的原因是信息过载,只有大量的数据情况下,搜索才能发挥出应有的价值。假设整个世界只有10条新闻,你想知道标题中含有“中国”的新闻,扫一眼就知道结果了,搜索的功能反而鸡肋。

搜索功能是筛选+Ranking,根据用户的输入确定筛选条件,再根据一定的策略进行Ranking。随着信息的爆炸性以及用户人群的细分,随之诞生了搜索千人千面,结果列表的来源不仅仅跟你的输入相关,还会考虑用户画像,比如你最近的行为带来的一些标签。

为什么需要千人千面?

因为搜索所得的数据量实在是太大了,如果不同人群看到的结果都是一样的,是极其没有效率的。想象一下,一个输入条件有10W 条结果,大多数人看到前三页就极其困难了。

这个时候,用户要么选择放弃搜索;要么选择更精准条件的搜索。第二种方法对用户不是很友好,原因在于用户如何确定真实的搜索意图,不知道该输入什么,无法表述等等。倘若机器可以根据用户的历史进行预测推荐,那么用户的体验会有极大的提升。

第二部分:搜索流程

下图是搜索的流程图,虚线框中的主要是偏后台的工作,需要产品经理有适当的技术积累;剩余部分是会和产品、前端有交互的部分,需要产品经理进行产品设计。

接下来我们就一个个地讲:

第一节:功能确认

第一步:需要确认是否需要该功能【做不做?】

请大家回头看下搜索之所以产生的原因——信息过载,在这里其实就已经隐含了哪些产品需要有搜索功能。划重点:信息。

因此,但凡涉及到有信息度的,数据量较大的,则可以有搜索功能。比如看视频,视频有发布者、视频名称、参演人等等;比如商品,有风格、有品牌、有类型等等;再比如新闻网站,信息量更直观些,也是可以有搜索功能的。

那么哪些产品不需要有呢?常见的是工具属性偏强,主操作信息量较少的产品,比如闹钟、拍照类的产品。

第二步:确认重要性【入口确定、资源确定等】

非常重要: 数据量过大,用户目的相对明确,有某一主题或者更具体的要求,搜索可以极大的提高用户体验,比如:搜索引擎、电商网站。

次级重要: 用户随意性较高,并无较强的目的性,比如:新闻资讯类网站,该部分实效性的要求远高于搜索。

第三步:确认目的【搜索形式、搜索算法】

分析用户使用搜索的目的是什么,对结果的定义是什么。

总结出这几点:决定,搜索的输入(类型)、形式以及输出(主准确?主召回?)。

在这里,再简单给大家介绍一下准确和召回的含义:

下图中的0,1分别代表否、是:Actual是实际情况中的数据,Predict是机器预测的数据。

准确率=在所有的数据中,机器预测正确的占比;换句话说,对所有数据来说,机器对了多少?

召回率=在所有准确的数据中,机器预测正确的占比;换句话说,对应该对的数据来说,机器找到了多少个对的?

第二节:输入

输入的类型:文本、语音、图片、二维码等等,由于不同的输入内容,我们对信息的解析,以及后续检索排序都有不同的方法,本文主要讲基于文本(自然语言处理NLP)相关的内容。

其他的我们这边简单讲讲:

如果用户输入是语音的话,那么第一步需要将语音转化为文本语言,然后继续走NLP相关的路径。

如果用户输入时图片,那么需要对图片提取特征,理解并进行搜索。如果是二维码的话,直接跳转到页面,或者直接给结果即可。

输入优化

在用户进行输入的时候,为了方便用户的收入,或者明确用户的搜索意图,我们可以采用以下方法,这些方法可根据实际的产品形态,选择适合自己的。每个方法带来的效果,相信大家都能自己领悟,我们这里不做详细说明。

  • 搜索框内展示搜索格式内容的帮助;
  • 提供搜索建议(自动填充可能搜索的内容);
  • 将部分详情展示出来(多用于电商类产品);
  • 自动纠错;
  • 有搜索结果的相似词;
  • 热门搜索词语;
  • 基于该用户推荐的词语。

第三节:意图识别

判断类型

  • 结果型,搜索的内容有明确的结果的,比如:爱因斯坦出生于什么时候?
  • 段落型,搜索的结果需要用大段文字来表述,比如:人工智能是什么?
  • 展示型,搜索的结果是一些信息的展示,比如商品,职位……

判断意图

意图通常与知识图谱,或者说字典交相辉映。

字典一般包含:词干化,停用词,同义词,一词多义,上下位词语,这些内容。

其中,词干化常常出现在英文的信息中,中文中不太常见;停用词是指词语没有明确含义,比如:了,呢;同义词,比如:自然语言处理与NLP;一词多义,比如:苹果【公司/一种水果】;上下位词,比如互联网是互联网游戏的上位词。

那么字典是用来干嘛的呢,用最通俗的理解就是撞词,如果这个词出现在词表中的,那么这个词所代表的意义就被我们所知道(更厉害一点的就是知识图谱了,这个词的属性,与其他词的关系都可以知道,知识图谱我们之后再讲)。

通过对词语的理解,我们可以去进行信息检索和排序。当然实际应用中,它不仅仅是撞词那么简单,有更多更深的算法来提高对意图识别的准确度。

第四节:检索和排序

检索
基于向量的信息检索中,标准的做法:余弦相似度,通过计算两个向量的余弦来确定两个文本的相似度。

结果型

该这种类型的问题,一般是依靠知识图谱来查询相关的结果的,这部分的内容我们在知识图谱中再详细讲。

段落型

根据用户的输入,通过查找文档–>查找段落–>根据需求决定是否需要段落摘要

最简单的段落摘要,就是高亮,将命中的前后多少字作为段落摘要的内容,复杂点,可以通过AI来自动生成一些段落摘要。

展示型:确定搜索范围,进行搜索。

排序

排序在整个流程中,分为两种:一种是算法排序,在进行信息筛选的时候,算法已经给了每个结果的数值;第二种是人工干预排序,主要展示在页面中的排序。

算法的排序结果是机器给的,不同产品时期,算法功力都会对排序产生影响。作为PM,可以把希望的结果以及一些bad case给到,来进行算法的优化。

页面中的排序,主要是PM根据需求来定的,通过对业务的了解、用户需求的把握,筛选出合理的排序条件。

第五节:输出

有结果:

在有结果的情况下,作为PM,只需要定义好输出字段即可。目前展示的形式有3种类型:

(1)卡片展示:

  • 卡片适合每块信息量较少的情况;
  • 整体来看,卡片的展示数量较列表来说是多的。
  • 在卡片中,用户操作不宜过多。

(2)列表展示:

  • 由于列表占用空间较多,因此如果有更多的操作或者信息的展示,可以列表来展示;
  • 整体来看,展示数量少于卡片的展示。

(3)个性展示:比如地图找房

无结果:

最简单直观做法:展示没有任何结果页面,再加上提示“抱歉没有您要搜索的内容,请换个词语试试看”。

整个流程优化的做法:

1. 预防:防止无结果的情况发生

可采用的方法:

  • 搜索框内展示搜索格式内容的帮助;
  • 提供搜索建议(自动填充可能搜索的内容);
  • 更好的理解用户的输入,建立自己的字典(停用词、同义词等,详见意图识别部分);
  • 将部分详情展示出来(多用于电商类产品)。

2. 恢复:在无结果的情况下,帮助用户回到正轨。

可采用的方法:

  • 自动纠错;
  • 提示有搜索结果的相似词;
  • 帮助文档,应当如何搜索。

变通:将错误变成新的机会。

可采用的方法:

  • 展示类似的结果;
  • 热门搜索词语;
  • 基于该用户推荐的词语;
  • 提供用户反馈;
  • 允许用户贡献内容(常见UGC产品);
  • 当有内容时告知用户(常见于实效性不强且用户在某方面敏感型的产品,比如地产类、机票低价提醒)

第六节:结果优化【产品层】

我们讲,在搜索的时候,假如结果不如意,如何让用户继续留在页面上,并找到自己想要的结果。

筛选

筛选是一个有力的交互过程,意味着用户的需求明确,要求的结果更加精准。我们最怕的是用户不知道自己要什么,因此我们在设计的时,希望通过一系列的小功能,比如筛选比如提示,来让用户明确自己的需求。

通用办法:可以通过Tab键切换,或者筛选框来对结果进行一个初步筛选。

Pinterest的筛选:这个我是想单独讲讲的,这真的是我很喜欢的一个设计。当你输入查询条件后,会自动弹出你的输入+另外一个组合词,真的是比普通的筛选牛了很多。

  • 页面比其他页面就筛选而言,空间占用更少,更多的留给信息展示。
  • 组合词比结构化的筛选更多,有些词是用户更常用更多搜索的,但比较难归类到某个类别进行展示。
  • 组合词的更新可以在后台完成,不需要对页面做过多更改。

当然,你也可以说,在输入时直接自动出来让用户选择,这个当然也没啥问题。面对一些未知数量且模糊的搜索时,用户的输入会先从大到小,Pinterest的做法相当于结果——反馈——新的结果,不断循环,对用户的感知更顺畅更友好,且用户本身对事物的掌控也一直没有被削弱。

输入输出改进

详情参照上文第二节:输入;第四节:输出-无结果-整个流程优化的做法。

第七节:结果评估&优化【数据算法层】

我们讲,在搜索的时候,假如结果不如意,如何让用户继续留在页面上,并找到自己想要的结果。

分析输入,了解用户

我们可以通过分析入口,分析Query,并结合用户画像、用户分类,进行输入分析,了解用户在我们的产品上,输入较多的是哪些类别、哪些内容。接下来的算法策略就可以根据这部分进行一些参考。

评估输出,优化算法

常用评估输出的办法有3种:

  • 通过业务指标来评估,比如CTR、业务指标的转化率等。
  • 通过A/B testing来做不同算法间的比较。
  • 通过人工来评估。

由于A/B testing需要耗费的技术资源较多,大家可以根据自己公司的进度以及资源程度决定是否要做;剩下两个是建议一起做。业务指标来看总的效果,人工评估来发现一些明显的典型case。

结束语

由于时间关系,我们这次的文章中,主要对整个搜索的流程有了一个简单的概述,至于里面的细节,大家可以参考其他文档来做知识的补充。欢迎大家一起探讨。

备注:关于第四节:输出-无结果-整个流程优化的做法,我是参考woshipm上一位朋友写的。由于时间久远,没有找到链接,如果大家有谁知道的,可以把链接贴到评论中。

 

本文由 @杜佳琦Cathy 原创发布于人人都是产品经理。未经许可,禁止转载

题图来自 Unsplash,基于 CC0 协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 内容很丰富,我最近也在研究搜索,正好学习了,谢谢

    来自北京 回复
  2. 很有水平的一篇文章,表达搜索功能和运行机制足够完善……作者懂得算法。

    来自河南 回复
  3. 挺好

    来自江苏 回复