输入框搜索
输入框搜索主要应用于搜索内容非标准化的场景,如名称、正文、编号这些无法通过确定条件进行查找的内容。
其中涉及的细节问题有很多:
【PS:讲的比较全面细致的】
1)关键字搜索or语义搜索
(1)关键字搜索
关键字搜索是根据用户输入关键字进行检索,如用户输入“B端产品”,则系统会把搜索范围内所有包含“B端产品”这四个字的内容全部检索出来。关键字搜索是目前B端产品中最主要的检索方式。
(2)语义搜索
语义搜索是更为复杂的搜索方式,需要语义识别、语义匹配、用户习惯分析、智能排序等人工智能领域的技术支持,这种搜索方式在C端产品中用得较多,在B端产品中用得很少。
2)聚合搜索or分字段搜索
(1)聚合搜索
聚合搜索是指一个输入框,可以同时搜索多个字段内容。输入关键词“人人都是产品经理”,可以对名称、描述等多个字段进行检索匹配。优劣都比较明显。
优势:
- 搜索方便,一次能搜索大量数据;
- 用户无须记忆自己要搜索的关键字是哪个字段,可以减少用户的记忆成本。
劣势:
- 同时检索字段数据多,后台可能需要跨表检索(指同时从多张数据库表中检索),当搜索数据量大时,会导致搜索时间过长,影响用户体验,实现起来也比较麻烦。
- 搜索结果不够精确,如果只提供聚合搜索,对于用户清楚地知道搜索关键词在哪个字段的场景不友好。
(2)分字段搜索
随着时间推移,系统中的数据越积越多,用户也越来越熟悉产品,这时聚合搜索的不足所造成的困扰已大于它的优势所带来的便利了,所以聚合搜索看似方便,实则在B端产品中应用得并不多,在B端产品中更多的还是采用分字段搜索,将搜索精确到具体字段。
(3)综合形式
用户输入关键词的同时给出“全部”和其他可能需要搜索字段选项,由用户自由选择。综合形式可以综合两种方式的优点,同时也继承了两种方式的不足,还增加了实现难度,所以这种方式用得更少。
3)模糊匹配or精确匹配
(1)模糊匹配
模糊匹配是系统只需根据几个关键词,就会把含这个关键词的数据都显示出来,即使输入不完全,也能完成搜索。一般来说,B端产品都会采用模糊搜索的方式,因为这种方式的体验更好,但对于部分特殊场景,则需要采用精确匹配的方式。
(2)精确匹配
精确匹配是只有用户把搜索内容完整输入时,系统才能正确检索出用户所需结果。例如,用户要搜索“B端产品经理”,则必须完整输入“B端产品经理”才可搜索想要结果,如果只是输入“B端”两个关键字,是无法搜索的。
这种方式会给用户带来较高的记忆成本,主要在三种特殊场景中会使用。
- 对接的第三方无法提供模糊搜索接口时。
- 搜索数据有保密性要求。在这种场景中,不能让用户随便输入一个关键词就进行匹配,会存在其他信息泄露的风险。例如,通过身份证号进行搜索时,用户必须输入完整身份证号信息才会进行匹配。
- 数据量非常大。这其实是一种“半精确匹配”,即当数据量非常大时,通过极少数的信息进行模糊匹配非常影响性能,检索起来非常慢,因为匹配的数据量很大,这时会要求用户输入较多内容才能进行搜索。
4)实时搜索or手动触发
(1)实时搜索
实时搜索是每输入一个字符就根据已输入内容进行搜索。这种方式很及时,能让用户及时看到结果,搜索体验会很好,但这种方式意味着用户会实时请求搜索接口,对接口造成一定压力,当使用人数较多时,容易出现系统报错,所以即使这种方式体验比较好,我们也很少采用。
(2)手动触发
手动触发则需要用户在输入完成后点击“搜索”按钮或“回车键”后进行搜索,这种方式虽然慢一点,但从实现成本角度来说性价比是更高的,对用户体验影响也不大,所以这种方式应用更普遍。5)加历史记录or不加历史记录
搜索的历史记录主要是方便我们间隔一段时间再次搜索同一条数据。在C端产品中比较常见,如电商产品的“历史搜索”。B端产品是否需要增加历史记录,逻辑与C端一样,就是看用户是否有在较短时间段内对同一内容搜索的需求。另外,当产品既有移动端又有PC端时,还需要考虑是否需要做到多端共通,这会涉及实现方式的差异。
筛选
单选/复选筛选
单选/复选筛选主要应用于筛选数据是标准化的场景。
1)单选筛选
单选筛选是标准化数据筛选中最基本的筛选方式,当筛选选项互斥时,即可采用这种方式。当筛选选项较多时,就要在选项下拉框中增加“搜索选项”功能,避免用户从众多选项中来回翻找。
2)复选筛选
当我们需要同时查看多种选项条件下的数据时,就会使用复选筛选。因为复选筛选已经包含了单选筛选的能力,所以在B端产品中基本都采用复选筛选。
独立/联动筛选
1)独立筛选
独立筛选是指每个筛选项相互独立,不会因为已选择的筛选条件而改变,这种筛选方式与用户习惯认知不同,主要应用于无法进行联动筛选的场景。
例如,多个筛选条件对应的数据存在于不同的数据库中,或者两个筛选条件使用的是不同的技术体系,都会导致产品只能使用独立筛选。当不得不采用独立筛选时,为了避免用户困惑,在使用其中某个筛选条件时,最好将其他筛选条件隐藏或置灰,待用户清空这个条件后再展示出来。
【PS:“隐藏或置灰”具体怎么做?】
2)联动筛选
联动筛选是指会因已有筛选条件,而改变现有筛选范围,多个筛选条件是“且”的关系。例如,省市区的联动筛选,在选择省份后,城市的选择范围就在这个省份内,而如果先选择了城市,那么省份就会默认选择这个城市所在省份,无法选择其他省份,或者要求用户只能从省份开始选择。
在筛选条件非常多的场景中,如果每次筛选都展示出所有的筛选项,那么筛选栏几乎会占满整个屏幕,而其中很多筛选项其实是用户当时不需要的,反而干扰了用户的视觉,影响用户体验。为了避免这种情况出现,我们可以采用如图所示的联动筛选方式,用户每次点开筛选框时,由用户自由选择此次筛选项的数量及具体条件。也可以让用户将常用的筛选场景保存为固定场景,从而不需要每次筛选时都要把那些条件重新设置一遍。
联动筛选是更符合用户习惯认知的筛选方式,作为产品经理,在需求描述中需要清楚地定义筛选条件间的相互影响方式、层级关系等。
其他
1)前端搜索or后端搜索
前端搜索,是后端把所有数据通过接口一次性返回给前端,每次搜索时前端根据已返回的数据进行搜索,这样可以避免前端每次搜索时都要请求后端,重新加载、渲染所有数据,这种方式主要应用于数据量大、变动频率低的场景中。
对于变动频率高的,都会采用后端搜索,即每次有搜索请求时,都通过接口让后端在数据库中检索。
2)自定义搜索项
当系统数据量很大、搜索项很多时,我们经常需要对大多数字段进行筛选搜索,但我们不可能把所有字段都作为筛选项放在搜索栏中,这样不仅会占据太多位置,也会影响可读性和页面美观。另外,不同用户对搜索字段的需求是不一样的,使用频次也不一样,这时我们可以针对搜索项提供自定义功能,让用户根据自己的使用习惯,选择需要哪些筛选条件及筛选条件的顺序。