搜索的进行主要分为3 个阶段,分别为搜索前、搜索中、搜索后。这 3 个阶段分别对应搜索功能的静止状态、点击触发状态、确认搜索状态。对功能状态再进行细化,可以得到一个框架清晰的搜索流程。如下图所示,展示了一个完整的搜索流程。
一、激活搜索
1. 光标聚焦
用户进入激活搜索状态,表明用户需要通过搜索来获取想要的内容。搜索功能设计的第一个目标就是聚焦。
用户在点击搜索框的时候会唤起底部键盘,输入框内闪烁蓝色光标。这个设计会让视觉更聚焦于搜索框,而不受其他内容的干扰,底部唤起的键盘也有助于减少屏幕内的干扰要素。
2. 衍生能力
基于搜索这一需求,搜索功能衍生出了搜索记录、搜索发现和搜索榜单的能力。从产品视角上看,我们需要提供更多的途径和选择让用户快速触达目标。
一般的互联网产品在点击搜索框进入搜索功能页时,页面会展示搜索记录、搜索发现和搜索榜单三个栏目。除了搜索记录,大部分的榜单和推荐主要是为了商业运营的目的而存在。比如外卖、电商平台,其推荐和榜单功能并不意味要展示“好” 的产品。
二、输入关键字
1. 反馈方式
用户在输入关键字的时候一般会有两种反馈方式。
第一种方式是实时匹配输入结果,这种方式对搜索的精确度较高,同时也考验着产品的响应速度。第二种方式是关键词联想,对精确度要求较低,讲求一个模糊,搜索大致相近的内容。
为什么会出现两种反馈方式的差异?我认为原因更多地可能与业务场景有关。
类似小红书、知乎、百度贴吧等资讯、社区类产品,会有许多内容击中一个关键词,属于一对多的关系。相反,类似饿了么、飞书等产品,对精确搜索有着更高的要求,目的性会更强。
2. 搜索目的
除了业务场景,导致搜索场景差异的原因来自用户的不同诉求,每个用户的搜索目的都是不一样的。
举两个明确的例子:
模糊搜索(一对多):通过小红书搜索牛肉该怎么做,会出来非常多的帖子。因为牛肉的做法不唯一,这不是一个精确的目的。
精确搜索(一对一):通过外卖平台搜索LeeLin 柠檬茶(非安利,但是是真的好喝),搜索结果会出来唯一结果,这是一个精确的目的。
对于这两种搜索目的,可以给出明确的定义:
精确搜索:用户搜索时有明确的目标,想在已知内容中快速定位所需信息。输入的关键词反映的是用户想获取的信息主题。
模糊搜索:用户搜索目标不太明确,想在未知内容中探索信息。用户对所需信息的主题和关键词未完全理清,希望去发现和探索,难以结构化地表达所要解决的问题。
结合上面的例子和定义,总结一下用户的搜索场景。
3 联想模式
1)提供关联结果
用户输入关键词的时候会触发展示关联结果,这种做法在内容平台被广泛使用,比如下图在小红书搜索citywalk 出现的关联内容。
这种关联结果展示能够有效地降低用户输入成本,提升搜索效率。从用户获取网络资讯和热点的流程上看,大部分用户对于寻求问题答案的途径都大致相似,比如某天在豆瓣发现了一个大瓜,会上微博或小红书搜索。从发现内容到搜索内容,这就是一种用户路径。
除了应用内搜索,部分应用还会针对关键词进行显示设计。比如在谷歌中搜索“今日天气” 会直接展示天气数据,甚至搜索一些特定关键词还会触发彩蛋。感兴趣的可以搜一搜这篇文章:谷歌,互联网界的 “彩蛋狂魔。
搜索“Super Mario Bros”(超级玛丽兄弟),搜索页面右侧就会出现超级玛丽的宝箱
2)商业化运营
联想模式在商业化的运用也十分常见。在外卖软件搜索“咖啡”,除了展示商品,产品运营还会在其中穿插营销内容和推荐产品,满足有营销诉求的商家。
总的来说,关键词联想主要用在两个地方:
一个是用户搜索时,可以给到提示的作用,方便找到想要的信息。另一个是用户输入的时候不用一个字一个字去敲,减少输入成本。对于平台来说,联想功能可以用来做一些营销推广的活动。
在设计这种包含输入词的交互的时候,最好结合产品本身的目的和目标用户的使用场景来思考,这样可以让用户体验更顺畅。
三、解析关键词
除了产品设计,在搜索功能中最重要的一环是搜索的逻辑。
用户会输入什么,会不会输错,一般会有哪些错误,对于错误应该如何解决?对这些疑问的解答构成了搜索功能中的核心环节。
产品经理不能希望用户的每次输入都是“正确” 的,符合自己要求的。更多情况下,用户在搜索时出现拼写错误、表达错误导致的搜索不准确、搜索无结果的情况经常发生,且难以避免。
为了更准确的理解用户想要搜什么,搜索系统通常会添加多种解析规则来增加系统对于用户输入内容的理解。比如预处理、分词、改写等方式。对关键词的解析越精确,搜索功能更能为用户带来价值和满足。
1. 预处理
预处理是对关键词进行字符转换、删除、截断等处理,将关键词进行标准化和简化,以更准确地理解用户搜索意图,提供更精准的搜索结果。
这个定义一听有些复杂,不妨将预处理这个流程放在日常生活中去理解。什么叫做预处理?预处理可以理解为把从市场买回来的菜洗净、分类处理,等待下锅前的这一过程。
预处理的通常有5 种方式,分别为:拼音转文字、大小写切换、繁简体转换、无意义字符移除、长度截断。
1)拼音转文字
示例:输入“chanpinjingli” 时会转化为 “产品经理”
场景:在B 端 CRM 系统中搜索用户姓名一直都是一件令人苦恼的事情,尤其是当用户的姓名较为生僻的时候。这个时候通过拼音搜索能够快速定位到用户。
2)大小写切换
示例:输入“B1-A156-t2” 时会转化为 “b1-A1-P510”(负1层 – A1区域 – 510号车位)
场景:在ERP 系统(企业资源计划)中通常会有数量众多企业物资信息。以商场为例,对于一些固定资产,如商铺、车位,甚至是卫生间的马桶都有各自的编号。通过大小写字母混排的方式来查找资产的方式较为复杂,而将输入的内容统一转换为小写字母就会更易查找。
3)繁简体转换
示例:输入“産品經理” 时会转为为 “产品经理”,反之亦然
场景:通常适用于涉及到繁体字书写的地区。
4)无意义字符移除
示例:忽略特殊字符,包括emoji、颜文字、空格、数字符号、语气词等
场景:在没有使用字符输入限制的情况下,输入无意义字符一般都会影响输出结果,导致结果为空。在一些文档搜索的场景中,作为特殊字符的空格也会导致搜索失败。目前许多社区都有开源的《停用词库》可供调用,结合实际的业务场景就可以梳理出一套较为适合的词库。
5)长度截断
示例:输入字符超过上限,截断上限字符后面输入的内容
场景:搜索引擎通常会常用分词的方式进行搜索。如果输入一个词组较多的长句,那么对于搜索匹配的压力会大大加强,长度截断更考虑搜索调用产生的负载。目前百度的输入上限为18 个汉字,Google 为 12 个词。
总体来看,“拼音转汉字”、“大小写转换”、“繁简体转换” 这三种方式是通过提高系统判断规则的复杂程度,来减小用户输入的复杂程度,降低用户的输入难度和成本。“无意义字符去除” 和 “长度限制” 则是合理筛选关键词,简化表达,以提高搜索结果的准确性。
2. 分词
当输入关键词和数据库匹配时,用户能够很轻松地得到想要的答案。但是也要注意到一个问题,加入用户输入的关键词无法与数据库完全匹配呢?
一般出现无法完全匹配的情况时会采用分词的形式,将一个句子或一个词组拆分为多个Term。Term 可以是单字或词组,Term 的作用在于它能和数据库形成匹配。
既然采取了分词的形式,就接下来就需要考虑如何进行分词。
在英文语句中,分词是一件很“自然” 的事情,组成句子的单词具有固定的结构,书写句子也习惯通过空格隔开。但中文的表达通常不会用空格,且无论采用哪种分词方式都会形成不同的表达。
四、召回
将用户的关键词经过解析,与数据库中的内容进行匹配的行为称之为召回。这个过程需要后端利用倒排索引技术,建立关键词和数据库内容之间的关联,以提高搜索查询效率。
简单来说,就是构建清晰的目录结构,便于快速查找目标内容。查询速度与召回环节的倒排索引建设质量直接相关。倒排索引建设得越合理。查询速度就越快。
这一部分属于我的知识盲区,感兴趣的同学可以搜索这篇文章:浅谈互联网搜索之召回
五、排序
当搜索结果不止一个的时候,通常需要进行排序。排序存在规则,合理的规则能够有效地展示关联结果,也能给企业带来不菲的营销利润,如搜索引擎的竞价排名功能。
一般来说搜索有两种排序思路。一种是根据匹配程度和参数进行排序。比方说在饿了么搜索我历史购买奶茶的记录,那么首先匹配的是关键词“茶”,其次会按照时间倒序(参数)进行排序。
六、展示结果
1. 搜索成功
在完成一系列的复杂流程之后,终于来到了搜索的最后一个环节,结果展示。这是用户唯一看到的内容(实际上没有用户会在意你的技术流程啊哈哈哈),所以搜索结果的展示需要力求清晰。
目前搜索引擎都会基于不同的关键字展示不同的结果。在算法和用户画像的加持下也就形成了过去互联网产品渴望实现的“千人千面” 能力。
如同上文中,搜索“华为 mate60 售价” 会展示华为商城的跳转链接一样。搜索商品、人物、风景、概念都会出现不一样的搜索结果。
其他产品的展示结果也在发挥着关键作用。比如一个男生或女生再淘宝搜索“男装”,在排除推广商品后,看到的结果是完全不一样的。
同时,也需要注意到搜索结果经常出现一种糟糕的情况:看菜下碟。不同用户在旅游软件上搜索同一家酒店,价格会出现不一致的情况。这种行为在几年前经常被报道,如今相关的新闻变得很少了。
在游戏资讯类产品来说,展示结果相当重要。比如Tap Tap 和网易大神。根据用户搜索的关键词不同,结果的呈现也各具特色。