一个看似简单的搜索功能,却包含许多“不为人知”的细节。本篇文章详细地介绍了后台产品搜索的相关细节。
魔鬼存在于细节。后台产品中,搜索是非常常用的功能,几乎每个数据列表上都会有一个搜索栏,但一个看似简单的搜索功能,却包含众多你想到或想不到的细节。
此篇文章,将详细介绍后台产品搜索的那些不为人知的那些事。
一、输入框搜索
针对数据格式非标准的字段,都会通过输入框进行搜索,如名称、概述、正文等。
对于输入框搜索,需要考虑以下几个要点:
1. 聚合搜索or分字段搜索
聚合搜索
聚合搜索是指一个输入框,可以同时搜索多个字段内容。例如下图中,输入关键词“人人都是产品经理”,可以对名称、描述等多个字段进行匹配。
优点
- 很方便,一次性能搜索大量数据;
- 用户不用记忆我要搜索的关键词到底在哪个字段
缺点
- 同时检索字段数据多,当数据量很大时,会导致搜索时间过长,影响体验;
- 搜索结果不够精确,如果只提供聚合搜索,对于用户清楚的知道搜索关键词在哪个字段的场景不友好
分字段搜索
由于我们的系统随着时间推移数据会越来越多,同时使用者多为对数据很熟悉的人,所以聚合搜索看似很方便,实则在系统产品中应用并不多。
也就是我们下图看到的,每个字段单独给一个输入框,将搜索精确到字段。
综合形式
有时候为了覆盖更全的场景,也可以使用综合的方式,输入关键词的同时给出“全部”和其他可能需要搜索字段选项,由用户自己选择。
这种方式适用于用户对数据熟悉程度有深有浅的产品,内部系统适用较少。
2. 模糊搜索or精确匹配
模糊搜索
模糊搜索是只要根据几个关键词,就会把含这个关键词的数据都显示出来,即使输入不完全,也能完成搜索,我们做系统搜索时,基本都是模糊搜索,这种方式体验更好。
精确匹配
精确匹配需要用户把搜索数据填写完整、准确,给用户带来较高的记忆成本,主要在两种特殊场景下会使用:
- 对接的第三方系统,第三方系统无法提供模糊搜索接口;
- 搜索数据有保密性要求。这种场景下,不能让用户随便输入一个关键词就进行匹配,会存在其他信息泄露的风险,例如通过身份证号进行搜索时,用户必须输入完整身份证号信息才会进行匹配;
3. 实时搜索or手动触发
实时搜索
实时搜索是每输入一个字符就根据已输入内容进行搜索。这种方式很及时,能让用户及时看到结果,搜索体验会很好,但这种方式意味着实时请求搜索接口,对接口造成一定压力,当使用人数较多时,容易出现系统报错,所以即使这种方式体验会好,我们也很少采用。
手动触发
手动触发则需要用户在输入完成后点击“搜索”按钮进行操作,有时候输入框页面上距离“搜索”按钮较远,体验会很差,所以一定要加入“回车键”搜索的功能,保留用户使用浏览器的习惯。
4. 历史记录加or不加
搜索的历史记录主要是方便我们间隔一段时间再次搜索同一条数据。
在很多To C的产品中,会经常使用历史记录功能,例如很多电商产品。但我们做后台搜索时,很少会增加搜索的历史记录,这是因为我们每次搜索出的结果是明确的,短间隔时间无需再次进行搜索,对于长时间间隔场景,我们一般会通过数据权限控制让搜索更方便,所以,后台产品的搜索一般不需要历史记录。
二、单选/复选搜索
单选/复选搜索在有的产品中也叫筛选,功能都一样。主要用于搜索数据标准化的字段。
1. 搜索样式
单选搜索
根据选项数量,我们选择下拉框中是否需要增加“搜索选项”功能,一般选项超过十个就要考虑增加“搜索选项”了,避免用户查找困难。
复选搜索
复选搜索也比较常见,当我们需要同时查看多种选项数据时,就要使用复选搜索
2. 独立搜索or联动搜索
所谓独立搜索,就是每个筛选项是独立的,不会因为已选择的搜索条件而改变,而联动搜索,则会因已有搜索条件,而改变现有搜索范围。
例如省市区的联动搜索,选择省份后,城市的选择范围就在这个省份内,而如果先选择了城市,那么省份就会默认选择这个城市所在省份,无法选择其他。
当多个搜索条件存在关联性时,我们就应采用联动搜索,作为产品经理,需要清楚的定义搜索条件间的相互影响、层级关系、数据对应关系。
3. 搜索所有or仅列表数据
有些筛选字段,我们有全部的数据,但列表中只有这个字段部分数据信息。例如用户通过测试管理系统提bug,我们在筛选哪些人提了bug时,到底是对公司所有人都能选择筛选还是只筛选提过bug的人呢?
这里一个重要的判断原则就是未提过bug的人是否以后有提bug的可能,如果以后也有可能,那么应搜索所有人。
三、整体
1. 前端搜索or后端搜索
对于没有开发经验的产品经理,是不会思考让后端搜还是前端自己搜这个问题的。
所谓前端搜索,是后端把所有数据通过接口一次性都返回给前端,每次搜索时前端自己根据已返回数据进行搜索,这种方式主要应用在数据变动频率低的场景中,而对于变动频率高的,都会采用后端搜索,即每次有搜索请求,都会通过接口让后端在数据库中匹配,以达到及时准确的目的。
2. 能否自定义搜索条件
当系统数据量很大,字段很多时,我们经常需要对大多数字段都要筛选搜索,但我们不可能把所有字段都作为筛选项放在搜索栏中,不仅会占据太多位置,也会影响可读性和美观。
另外,不同角色对搜索字段需求是不一样的,使用频次也不一样,所以这个时候我们需要针对筛选条件提供自定义功能,让用户根据自己的使用习惯,选择需要哪些筛选条件和顺序。
作者:周翔,起点学院深圳1609期产品经理实战训练营学员