G1.05.2missing metadata breaks advanced search设计研究
元数据缺失时高级检索失效
别名: 元数据缺失 · advanced search failure · 字段空洞
概念解释
按作者、日期范围、状态、文件类型去收窄,依赖的是字段里真有值。字段空着,高级检索的条件是在对空集做运算:界面还在,结果却是全无或乱收。元数据缺失则高级检索失效,不是搜索引擎坏了,是查询写在了不存在的数据上。全文检索还能从标题和正文里碰运气;字段检索没有「碰运气」这一档。
把高级检索入口做得很完整,却不保证对应字段被填过,是在展示一种系统并不拥有的能力。
机制
字段查询是精确匹配或范围匹配。空值既不等于「未知」、也不等于「任意」,多数实现会把空值排除在「作者 = 张三」之外,也可能把空值错误地放进「作者不为张三」。无论哪一种,用户都无法从结果反推「到底有没有这份东西」。缺失还呈系统性:某类内容从来没被要求填日期,于是所有按日期的高级检索对那一类静默失效,看起来像「最近没有」,其实是「最近不可知」。
全文检索的召回能掩盖一部分缺失,所以只测关键词搜索会得出「检索是好的」的假象。一旦任务指定字段条件,假象破裂。
怎么研究
把「字段填充率」当作检索质量的前置变量,而不是事后解释。
- 范式:构造已知目标的字段查询(作者、日期、状态),在填充完整与故意挖空的语料上对比;再分析真实库的空值分布与查询失败的对应。
- 自变量:目标字段的空值率、空值是结构化「未知」还是真的没存、界面是否暴露「仅含已填写」的范围。
- 因变量:已知项能否被字段查询找回、假阴性里有多少是空值造成、用户把失败归因于「没有」还是「搜错」。
- 方法论注意点:实验室语料往往字段齐全,会高估高级检索。要从生产库抽空值样本。不要用全文检索的成功率替字段检索辩护。
边界
关键词搜索、拼音首字母、拼写容错都不走字段,缺元数据时它们仍可工作,不能据此宣称高级检索也工作。自动抽取(从正文猜日期、猜作者)能降低空值,但抽错比空着更危险,因为结果看起来很确定。权限过滤造成的「对你不可见」不是元数据缺失,应与空值分开计量,否则会把授权问题当成编目问题。
怎么落地
- 每个高级检索条件上线前,先报对应字段的非空率。低于可用阈值就不要放出这个条件,或明确写「仅对已填写日期的条目有效」。
- 空值要有结构化表示,并在结果里可被解释(「日期未知」),禁止把空值悄悄当成很久以前或刚刚。
- 对空值率高的类型,优先补字段或收回该条件,而不是把高级检索面板做得更长。
- 验证:挑十条字段为空的已知目标,用高级检索按用户会用的条件去找。找不到,就是失效,不要用全文搜索把它们「找回来」当作通过。