返回探索
指南VibeFix 编辑部更新于 2026年10月29日

搜得到还不够,筛得准才留得住:vibe 项目的搜索与筛选组合实战

用户搜出零结果后关掉页面,往往不是因为东西不存在,而是因为他不知道该改哪一个条件。本篇给 vibe 项目一套搜索筛选做法:关键词与筛选器的分工、组内或组间与的组合规则、带计数的筛选呈现、网址可分享的状态,以及空结果四级兜底。

一张真实照片:一人坐在桌前用笔记本电脑,屏幕上是一个搜索页面;不是文中虚构产品拾光书集的界面截图。
一张真实照片:一人坐在桌前用笔记本电脑,屏幕上是一个搜索页面;不是文中虚构产品拾光书集的界面截图。

一个用户在你的产品里输入关键词、点了三个筛选条件,最后看到“没有找到相关结果”,然后关掉了页面。这不是搜索技术失败了,而是筛选组合设计失败了:他明明知道自己要什么,产品却没有给他一条把条件放宽、换个说法、或者先看看相近东西的路。本文讲的,就是搜索框和筛选器怎么配合干活。

先说清楚本文的例子:文中出现的二手书平台“拾光书集”与买家“阿哲”均为虚构,只是为了把道理讲具体而编的例子,不是真实产品和真实用户。方法本身是通用的,放到任何一个带列表的产品里都能直接套用。

先看一个真实会发生的场景

阿哲想买一本《设计中的设计》,要求是 2019 年之后的版本、价格在 60 元以内、最好在同城、成色八成新以上。他在拾光书集里输入书名,得到 200 多条结果;勾上“同城”“八成新以上”,结果只剩 3 条;再把价格上限调到 60 元,结果直接归零。他盯着空白页想了想:到底是哪个条件卡住了?是价格,还是同城,还是成色?页面没有告诉他。他只能一个一个取消条件重筛,试了四次才发现:同城卖家一共只有两本,其中一本 68 元,另一本七成新。也就是说,他的要求里只要松开任意一个口子,就有东西可买。但产品没有帮他算这笔账,而是把“零结果”原样甩给了他。

这个场景里最伤人的不是零结果本身,而是零结果来得不明不白。用户不是被“没有”打败的,而是被“不知道该改哪里”打败的。很多 vibe 项目的搜索页都有这个问题:搜索框、筛选器、排序各干各的,组合起来没有一句话能解释现在的结果是怎么来的。于是用户只能靠反复试错猜规则,猜两次猜不中就走了。

还有一种更隐蔽的失败:结果不是零,而是太多。阿哲第一次搜书名得到 200 多条,页面按默认顺序排着,他翻了两页没找到想要的版本,也走了。搜得到和找得到是两回事。搜索负责把范围收小,筛选负责把范围收准,排序负责把最可能的那几条顶上来。三件事缺了任何一件,用户都会觉得“东西明明在,就是找不到”。

决策框架:先分工,再定组合规则,最后兜底

做搜索筛选设计,先别急着画筛选面板。先定三件事:关键词和筛选器各自管什么、多个条件组合时按什么逻辑算、结果为空时怎么办。这三件事定了,界面长什么样只是执行问题;这三件事没定,界面画得再好看,组合起来还是乱的。

第一,关键词和筛选器要分工。关键词回答“我要找什么东西”,筛选器回答“在这些东西里,我只要哪一类”。书名、作者、出版社这种指向具体对象的词,走关键词;价格区间、地区、成色、是否有货这种给结果划范围的条件,走筛选器。分工不清是最常见的毛病:有人把“八成新”也做成关键词,让用户自己在搜索框里拼“设计中的设计 八成新 同城”,拼对了才有结果,拼错一个字就全军覆没。用户不应该替产品做它本该用控件完成的事。

第二,组合规则要写成一句话,而且这句话要能在页面上被看出来。最常用、也最不容易错的规则是:同一组里的多个选项是“或”,不同组之间是“且”。比如成色勾了“九成新”和“八成新”,意思是九成新或者八成新都可以;同时又勾了“同城”,意思是在这个范围内还要同城。规则本身不难,难的是很多产品没有把规则告诉用户:用户勾了两个成色,看到结果变少了,还以为是“且”,于是越勾越少,最后怀疑产品出 bug 了。已选条件条就是干这个用的:把当前生效的条件原样列出来,用户一眼就知道页面现在是按什么筛的。

第三,默认状态要有主张。没有输入关键词、没有勾任何筛选的时候,页面不应该是一片空白,也不应把全量数据按上架时间一股脑倒出来。默认状态应该回答“第一次打开的人最可能想看什么”:可以是最近上架、可以是平台主推、可以是按用户所在城市先给同城结果,但必须有一个明确的选择,并且让用户看得出这不是全部,只是起点。没有主张的默认列表,看起来是“什么都有”,读起来是“不知道看什么”。

具体做法:从输入框到结果列表的每一步

先说搜索框。用户输入时,给联想,但联想只给“能直接点进去的东西”:完整的书名、作者名、分类名,点一下就进入对应结果。不要给联想一堆句子,也不要把联想词做成只能再搜一次的摆设。输入错别字时,别急着判死刑:先按纠错后的词出结果,并在结果顶部用一句话说明“你是不是要找某某”,同时保留按原词搜索的入口。用户打错字是常事,产品替他纠错一次,比让他自己重打一遍体贴得多。

搜索历史和热门搜索可以有,但要克制。历史只保留用户自己搜过的三到五条,热门只放真正被搜过的词,不要为了填满输入框下面的空白而编热门词。用户点开搜索框是想快点找到东西,不是想看产品自夸“大家都在搜”。

再说筛选器。筛选器分三种,做法各不相同。第一种是硬性条件:价格、地区、是否有货。这类条件非黑即白,适合做成勾选、区间输入或者开关,选了就要立刻生效。第二种是软性条件:成色、版本、新旧程度。这类条件本身带模糊性,一定要把定义写出来:八成新到底指什么,有没有划痕算不算,页面上写一句,比让用户凭感觉猜要强。第三种是排序:价格从低到高、最新上架、离我最近。排序不是筛选,但它和筛选共用一块结果,所以筛选面板里要把“当前排序是什么”也亮出来,否则用户会把排序变化误读成筛选结果变了。

每个筛选选项后面最好带上计数,告诉用户勾上它之后大概还剩多少条。计数有两个作用:一是帮用户预判,二是防止用户勾出一个零结果还不知道。计数可以是近似值,但不能是假的:如果勾“同城”后面写着 128 条,点进去只有 3 条,用户对整个筛选器的信任就没了。数据量小、算不出实时计数的产品,宁可不写计数,也不要写一个编出来的数字。

已选条件要集中放在结果顶部,每个条件带一个叉,可以单独取消,旁边再放一个“清除全部”。这是筛选页上最重要的一行字,比筛选面板本身还重要。用户改主意的时候,改的是某一个条件,不是整套条件。没有单独取消入口的产品,等于逼用户把所有条件推倒重来,试两次就烦了。

筛选状态要能分享、能返回。把筛选条件写进网址里,用户把链接发给朋友,朋友打开看到的是同一组结果;用户点进详情页再返回,筛选条件还在。很多 vibe 项目图省事,把筛选状态只存在页面内存里,一刷新、一返回就全丢了。用户刚花两分钟调好的条件,刷新一下就没了,这种体验比没有筛选还糟糕,因为它先给了希望再收回去。

移动端要单独处理。手机屏幕上,筛选面板不能照搬桌面端的左侧栏。常见做法是底部抽屉加“查看结果”按钮,按钮上直接写结果条数,比如“查看 24 个结果”。用户在抽屉里勾条件时心里有数,点一下就知道会看到多少东西。最忌讳的是抽屉里勾完条件,关掉抽屉才发现结果是零,还得重新打开抽屉一个一个试。

空结果不是终点,是四级兜底的起点

空结果页要按顺序给四样东西,缺了哪样都不完整。第一样,告诉用户现在生效的条件是什么。不是一句“没有找到相关结果”,而是“书名某某、价格 60 元以内、同城、八成新以上,共 0 条”。用户先看懂自己筛了什么,才谈得上改什么。

第二样,一次只放宽一个条件,并且告诉用户放宽后有多少条。比如“去掉同城限制,还有 14 条”“把价格放宽到 80 元,还有 9 条”。一次只动一个条件,用户才能判断哪个条件是瓶颈;一次全放宽,用户只会看到一堆不相关的结果,仍然不知道问题出在哪。

第三样,去掉关键词、只按筛选条件给相近结果。阿哲搜的那本书同城没有,但同作者的其他书、同主题的其他书可能有。相近结果要标注清楚“这是按你的筛选条件找的相近内容,不是书名匹配的结果”,不要假装它们就是用户要找的东西。诚实标注的相近推荐是帮忙,假装匹配的相近推荐是添乱。

第四样,给用户一个不用反复回来刷的办法:到货提醒、求购登记、或者保存这组筛选条件。用户今天没买到,不代表他不想买了;给他一个“有货时通知我”的出口,零结果就从一次失败变成了一次预约。很多小产品缺的就是这一步:用户走了,产品连他想要什么都不知道,下次上架了新书,也没法把他找回来。

还有一种空结果容易被忽视:不是筛出来的空,而是本来就没有。刚上线的平台、冷门分类、新开的城市站,数据本身就是少的。这时候页面不应该假装自己很大,而应该诚实地说“这个分类目前只有 12 本书”,同时给出相邻分类或者全站新书。用户能接受一个小平台,但不能接受一个假装很大的小平台。

六个反模式,照着检查就能避开大半坑

第一个反模式是筛选器越多越好。有人觉得筛选面板越长越专业,恨不得把数据库每个字段都做成筛选项。结果用户面对二十个筛选项,先花五分钟研究每个是什么意思,最后只用了一两个。筛选器的数量应该按用户真实会用的条件来定,上线前找五个人实际筛一次,没人用的筛选项就砍掉或者收进“更多”里。

第二个反模式是排序偷偷变。用户按价格从低到高排着,勾了一个筛选条件,页面悄悄切回默认排序,用户还以为便宜的都没了。规则是:用户明确选过的排序,筛选条件变化时不许擅自改;只有用户自己换排序,或者清空了全部条件,才可以回到默认排序。

第三个反模式是筛完不告诉用户筛了什么。页面顶部没有已选条件条,用户翻了两页之后已经忘了自己勾过什么,看到奇怪的结果只能怀疑人生。已选条件条不是装饰,是筛选功能的说明书,必须一直可见。

第四个反模式是价格区间只给固定档位。只给“50 元以下、50 到 100 元”这种档位,用户的预算是 60 元,就永远筛不准。价格这种连续条件,一定要给自定义输入框,档位可以作为快捷入口放在旁边,但不能代替输入框。

第五个反模式是重置按钮藏起来,或者点重置连关键词一起清掉。重置应该只清筛选条件,关键词是用户自己打出来的,不应该被顺手清掉。更糟的是有些产品根本没有重置入口,用户只能手动一个一个取消,取消到第三个就放弃了。

第六个反模式是把筛选做成“提交后才生效”。用户每勾一个条件都要点一次“确定”才能看到结果,调三个条件要点三次确定。桌面端尚且烦人,移动端更是灾难。默认应该是勾选即生效,实在需要批量确认的场景(比如多选几十个标签),也要在按钮上写清结果条数,让用户点之前就知道会发生什么。

检查清单:上线前照着测一遍

验收搜索筛选功能,不要只测“能搜出东西”。按下面这张清单逐项过一遍,全部通过再上线。第一,空查询、错别字、单字查询、超长查询四种输入,页面都不崩、不出空白页,错别字有纠错提示。第二,同一组多选是“或”、不同组是“且”,已选条件条和实际结果一致,逐项取消和清除全部都好用。第三,筛选条件写进网址,复制链接给另一个人打开,结果一致;从详情页返回,条件还在。第四,价格自定义输入框能用,输入不合理区间(比如最低价高于最高价)有提示而不是直接出零结果。第五,刻意构造零结果,页面依次出现当前条件、单条件放宽建议、相近结果、到货提醒四样东西,缺一样都不算过关。第六,移动端抽屉按钮上带结果条数,抽屉关闭后条件不丢。第七,排序在筛选变化时不擅自改变,用户自己换排序后立即生效。第八,找三个没见过产品的人,分别完成“找一本指定版本 60 元以内的同城旧书”“先逛逛再收窄范围”“筛出零结果后找到替代品”三个任务,全程不需要你开口解释规则。

上线之后,搜索日志比用户反馈更诚实。每周看一次三个数字:搜出零结果的查询占多少、用户平均改几次条件才找到东西、空结果页上放宽建议的点击率。零结果占比长期居高不下,说明不是用户不会筛,而是数据本身缺口子,或者某个筛选条件的定义和用户理解的不一样;改条件次数多,说明组合规则没有被看出来;放宽建议没人点,说明建议放宽的不是真正的瓶颈。这些数字不用天天盯,但每个月至少要据此调一次筛选器:砍掉没人用的选项,修正定义含糊的条件,给最常被放宽的那个条件换一个更合理的默认值。

最后一句话总结:搜索筛选做得好不好,不看筛选项有多少,而看用户从“我要找东西”到“我找到了,或者知道下一步该改哪里”要花几步。步数越少,产品越像个明白人;步数越多,筛选项再多也只是把找东西的活儿推回给了用户。

阅读 0评论 0

评论 (0)

ME
0/1000
评论加载中...
浏览项目广场发布你的项目

相关文章

一张真实照片:一人手持笔记本电脑,屏幕上是数据分析仪表盘;不是文中虚构产品山风民宿的后台截图。
指南
看一眼就知道先干什么:vibe 项目的仪表盘设计实战

仪表盘的问题从来不是数据不够,而是数据没有排成一句能指导行动的话。本篇给 vibe 项目一套仪表盘做法:三个问题、指标三层、总览拆解清单三段布局,以及空数据、缺数据、时间对比和权限四处容易翻车的地方。

开发工作流项目创作设计体验