编辑导语:在很多产品中,搜索是一个基本而重要的功能。很多时候我们需要搜索才能找到自己需要的东西,搜索的设计、逻辑、交互也需要特别注意。本文作者分享了他对搜索功能设计的理解。让我们一起来看看吧。
搜索功能是很多产品的核心,比如电商搜索、内容搜索等等;如何设计搜索功能,真的是一个看似简单实则深刻的问题。
不管怎样,然后画一个条形框和立方体,就是搜索框和搜索图标来表示一个搜索模块;如果要细细磨,各种用户交互问题,各种逻辑,那么它们也是一个搜索系统;这完全取决于你这个产品设计师如何设计。
设计一个搜索功能,需要从用户体验和功能实现两个方面入手:
用户体验包括风格UI设计和交互设计。总结一下,就是用户在搜索前、搜索中、搜索后对我们功能的感知;功能实现是着眼于用户对问题的输入和我们结果的输出(结果匹配度)。所以我会分成两部分:搜索的设计和搜索的逻辑。
首先,搜索的设计从可感知的风格开始。我们按照用户路径图来理解用户使用功能时的具体步骤:
用户使用产品——如果有任何问题,需要搜索解决——查看搜索功能——点击搜索功能(展开输入框)——输入问题——点击确定等待结果反馈——浏览搜索结果——选择要咨询的结果。
根据以上路径,我们可以将用户使用搜索功能的场景分为三个部分:搜索前、搜索中、搜索后。同时,根据不同的应用场景,需要区分移动端和PC端。
1.在搜索之前,首先我需要陈述一下我对搜索核心的定义,即搜索功能的核心在于解决用户的问题,给用户满意的答案;因此,当我们设计时,我们需要将我们是用户的假设带入场景。当我们迫切需要解决问题的时候,会有怎样的焦虑和烦躁?欲望?还是兴奋?功能的设计是在共情建立之后才进行的。
所以在设计搜索功能时,针对对面用户的迫切心情,合理设计搜索功能。当用户对使用产品有疑问时,要根据当前场景选择放大和缩小对用户的搜索感;在更容易出现问题的地方选择使用输入框搜索作为设计方案,在不允许出现问题的地方选择搜索图标作为解决方案。
这两种解决方案都很常见,但我们需要注意的是,除了风格上的差异,在选择使用输入框作为搜索风格时,大多数人更喜欢在输入框上做文字引导。这种文字指导有两种:指导文案使用和推荐搜索文案。
这个没必要,因为我真的没有准确的数据告诉你,做与不做在数据层面的效果是怎样的。所以由你来选择。
2.在搜索过程中,当用户点击搜索功能输入问题时,我们将其视为搜索。这里有两种设计方法:直接搜索当前页面和进入搜索独立页面。
其中,直接搜索当前页面在pc端较为常见,因为pc页面使用面积较大,可以尽可能展示内容。
另一种独立搜索页面常见于手机中,因为受到手机屏幕大小的限制,我们能显示的内容太有限而没有跳转到页面直接搜索;通过一个新的页面来进行搜索,它可以提供更多的功能和内容。
这里我们可以通过后台管理功能增加热门搜索的内容。同时,在用户输入内容后,我们将输入的内容进行关联展示,方便用户选择自己想要搜索的实际内容,提高了搜索的易用性和便捷性。
但产品设计师需要注意的是,联想的展示内容不容易太多,控制在7个条目左右即可,条目太多会干扰用户阅读;显示内容需要一套独立的逻辑支持,并且R & ampd需要明确告知。为什么会显示这些内容?这些内容排序的依据是什么等等。(这里后面会介绍解释)
同理,为了提高搜索的易用性和便捷性,我们可以收录用户最近的历史搜索,以便用户再次搜索同样的问题;至于一次显示多少条历史记录,可以参考7 -2法则控制数量。(一般人的短时记忆容量大概是72,也就是5到9之间,可以理解为72个组块。)
3.搜索后的搜索结果在移动终端上的显示一般是双排单排显示。双排可以显示更多的搜索结果。单行可以向搜索结果显示更多信息。
这里搜索功能的原型基本没有问题。先说搜索功能的逻辑部分。
第二,搜索的逻辑。先说结论:看似简单的搜索,其实不仅仅是简单的sql(数据操作语言)对整个数据库的搜索,还涉及到对用户搜索问题的分词、纠错、预测、召回、排序。
1.分词很好理解,就是当用户输入一个问题时,将输入的文本进行拆分,称为分词。分词的核心在于分词和特征词词典库。
同时,分词也叫NLP(自然语言处理分析),是AI人工智能的一个分支。毕竟你需要让人工智能明白你在说什么,你在学什么,不然就变成人工智障了。那么搜索是如何细分的呢?其实分词的方式很像小时候查字典。
1)逐字匹配
我们理解为一个人给你一句话,这时你需要将他们分成两两相对或三三相对的词条,但是你并不知道如何那几个相邻的字能够组成字条。那么索性你直接拿着这句话去翻新欢词典,从头到尾翻一次,发现没有符合的时候,就删除最后一个字,在去翻词典。以至于将词典中的所有词按由长到短的顺序在文章中逐字搜索,直至文章结束。这种方式你可以想象下,如果是人是不是很崩溃。就算是电脑在进行,因为需要重复的查询,也会造成效率低下,等半天才分词成功。
2)正向最大匹配法
最大正向匹配会按照我们的阅读习惯,从左到右进行匹配,而其中的最大的含义就是当出现多个匹配词条时,以字数最多的词条为准;比如匹配野生动物园这个词条有两个匹配,一个是野生动物图案,另一个是动物园,那我们以野生动物园为最终匹配,按照这个思路我们再说明。
有个用户搜索:“成都动物园在哪里”。
这个时候进行第一次词典查询,按在最大的词“成都动物园在哪里”进行查询,发现没有匹配。进行第二次查询,这次查询“成都动物园在哪”,同样没发现匹配。进行第三次查询,这次是“成都动物园在”,还是发现没有匹配的。第四匹配的时候,这次匹配“成都动物园”,结果在词条里面检索到了。我们保留结果是“成都动物园”,随后便去除“成都动物园”变成“在哪里”重新开始检索;这样根据我们的词典进行分词,我们可以得到结果:“成都动物园”“在”“哪里”,这就是正向最大匹配
3)逆向最大匹配法
大致逻辑和正向匹配相同,唯一的区别在于它是从右到左,每次减去开头的字。还是以“成都动物园在哪里”为例。
第一次词典查询,按在最大的词“成都动物园在哪里”进行查询,发现没有匹配。进行第二次查询,这次查询“都动物园在哪里”,同样没发现匹配。进行第三次查询,这次是“动物园在哪里”,还是发现没有匹配的。…….最后在第七次查询我们得到“哪里”,随后便去除“哪里”对““都动物园在”进行检索。当同样的逻辑缩减到“在”后,还是没有相对应的词典,那么将“在”也单独剔出,开始检索“成都动物园”。这样第一次检索就成功检索出来,得到结果“哪里”“在”“成都动物园”这样的分词。因为是反向其实结果和正向结果相同。
4)双向匹配
这种匹配法是为了更加准确的分词出现,把正向和反向两种算法都切一遍,然后根据词条颗粒度来进行选择。分词的词条越长越好,非词典词和单字词越少越好的原则,选出这里面最合适的进行匹配。例如:
非词典内的词:正向匹配(1)>反向匹配(0)选择反向词典内的单字:正向匹配(2)=反向匹配(2)持平不做选择总分词数量:正向匹配(3)<反向匹配(2)选择反向词意纠错也是搜索里重要的一环节,在搜索的时候,打错字说错话是很常见场景(语言搜索);并且因为文字和语言是情感交流的渠道,中文汉字会因为声调的不同有着不同的含义,同时一词多义,通假字等也是十分头疼的事情。
这词意纠错也可以按照查字典来理解,只是查询的字典是特殊字典里面的内容包含了情感,拼音还有声调相关的内容。抽象点的描述,我们在看见“康帅傅”的时候大脑会把“康帅傅”自动纠错成“康师傅”,这就有点自动纠错的味道。
1)拼音纠错
当输入的汉字存在错误时,系统需要及时联系上下文进行解析,可以将汉字转换成拼音,通过同拼音进行识别,比如“如何吧大象放入病象”,把他们未能分词成功单独留下的汉字转化成拼音“如何”“ba”“大象”“放入”“bing”“xiang”在查询字典进行处理。
2)模型算法
这部分高于繁琐,想了解的可自行搜索:SVM、Maxent等。
用户使用搜索功能在于得到解答,所以我们需要理解用户搜索内容的含义;比如用户搜索苹果的时候,她搜索的是吃的苹果还是苹果手机了;一个吃一个用这两个答案是风马牛不相及的,所以预测类目会对用户搜索结果影响很大。
做类目预测有几个方法:
1)人工配置
通过后端埋点日志搜集最近热门的搜索词,对这些搜索词进行指定配置,这样就可以保证当用户搜索苹果的时候出来的是苹果手机,而不是真的苹果;这样也是最简单有效的方法,但麻烦在需要安排人长期维护。
2)类目相关性
通过对搜索词进行算法计算,从搜索词的重要性、类目数、类目出现次数、搜索词出现次数等进行计算。
代表性tf-dc算法。
搜索结果的排序也是十分头疼的事情,比如搜索苹果手机,出现的结果是10万+条商品信息,那么谁排第一这就成了一个问题,因此我们要从权重出发进行权重排序。(商品少也可以按照最新更新时间排序,哈哈看个人)。
词频:对搜索对query进行分词处理,在进行预测类目后对高词频内容优先展示;用户标签:符合用户标签喜好的商品进行加权,优先排序;时间段:对当前时段营业(客服在线)进行加权;销量、好评率:同理这就不说了;商品时效:对新更新商品进行加权,可用于互冲旧商品销量、好评的加;付费:竞价广告、付费升权等。作者:wcof,在努力做产品不做产品经理的人;微信公众号:Wcof(ID:wcofPM)
本文由@Wcof原创发布于人人都是产品经理,未经作者许可,禁止转载
题图来自Unsplash,基于CC0协议。