零结果需说明原因而非仅陈述事实
别名: 零结果原因 · empty search explanation · 为何无匹配
概念解释
「找到 0 条」只陈述了一个计数。零结果需说明原因,是把这个计数翻译成用户能用来下一步的因果:是查询词在本集合里没有对上、是某个筛选把集合切空了、是当前范围太窄、还是根本没有权限看见。没有原因,0 会被读成「世界上没有这东西」,下一次动作就会乱——改一个无关的字、或离开。Hearst 把空结果页写成必须解释发生了什么,而不能只报告没有。
原因说明针对已经发生的空集。它不是在勾选前拦住空组合,也不是在应用筛选前预告还有几件。
机制
空集切断了「查询 → 结果 → 改写」的反馈。人用结果来诊断上一枪哪错了;零条时诊断材料只剩计数。计数没有指向:词错、范围错、过滤错、对象不存在,四种可能的修复完全不同。工作记忆会选用代价最低的解释,通常是「没有」,于是停止查找。把原因写成当前约束的清单(查询、已选筛选、范围),等于把诊断重新接上——用户能问「是哪一条约束在负责这 0」。
原因还要能被证伪。写「没有匹配」仍然是计数的同义反复。写「“发票作废”在本库标题和正文中未出现;筛选“今年”已打开」才给出两个可被拿掉的责任人。含糊的安慰(「试试其他关键词」)看起来像原因,其实把生成下一查询的成本还回去了。
怎么研究
测用户把 0 归因到哪一类,以及归因是否与真实原因一致。
- 范式:同一空集配不同文案(只报 0 / 列出当前约束 / 错误地暗示对象不存在);查询日志中零结果后的下一动作(改词、去筛选、离开)与真实空因对照。Hearst 对 empty results 的界面讨论。
- 自变量:是否点名负责的约束、是否区分「词未命中」与「过滤切空」、是否把权限不足说成「无结果」。
- 因变量:归因准确率、错误地认为对象不存在的比例、下一动作是否对准真实原因。
- 方法论注意点:实验室若任务书保证「目标一定在」,被试不会选「不存在」,归因分布被扭曲。要用有的空是真没有、有的空是过滤造成的混合材料。把「理解原因」和「愿意继续」分开记:有人看懂了仍离开,那是恢复动作的问题。
边界
引擎自己也不知道为什么空(超时、索引损坏)时,不要编一个查询侧的原因;应说系统失败,否则用户会去改一个无辜的词。真的没有该对象时,原因就是没有,不要硬找一条筛选来背锅。多原因叠加(词也偏、筛选也窄)要都列出来,只报其中一条会把修复引到错误的那一刀。原因说明的粒度止于用户能拿掉的约束,不要讲倒排索引或分词器。
怎么落地
- 零结果页用短句点名当前查询、已应用筛选和范围里,哪几项共同造成了空,而不是只写「无结果」。
- 「词未命中」和「过滤切空」用不同句子;后者应能让人看见是哪一枚筛选在负责。
- 权限造成的不可见不要写成「没有匹配」,以免用户以为对象不存在。
- 验证:制造三种空——错词、过窄筛选、无权。文案若三种一样,原因没有被说明。问未参与设计的人「你接下来会改什么」,改的那一项应与真实空因一致。