对象格式变化后,输入规范要按“保留、改写、退出”三种处置分别调整:仍然有价值的对象保留原字段但换标识,语义可迁移的对象改写成新格式并补校验,无法映射的对象从主输入中退出并转入隔离清单。先做一份字段映射表,再决定每种对象走哪条路,比直接全量重跑更可控。
同样是“格式变了”,输入规范要动的位置完全不同。常见有三类:
判断依据不是格式本身好不好看,而是旧对象在新格式下是否还能表达原来的查询意图。能表达就保留,表达方式要换就改写,表达不了就退出。
保留适用于旧对象的核心语义在新格式里仍然成立的情况。此时要做的是把标识和包装换成新格式,而不是重写内容。实际动作可以这样落地:
这个动作的结果会直接影响下一步:如果样本解析后语义一致,就可以把保留类对象批量迁移;如果出现截断、合并或歧义,说明新格式的某个字段承担了旧格式没有的约束,需要把这类对象转入改写流程,而不是硬塞进去。
改写适用于旧对象有价值,但新格式要求更细或更粗的粒度。比如旧输入是单个短词,新格式要求“主题+修饰词”两段式,那就要把短词拆成能对应两段的写法;反过来,新格式只收单层词,而旧对象是带层级的短语,就要决定合并还是截取。
改写的成立前提有两个:一是语义映射关系明确,不靠猜;二是新格式的字段能容纳改写后的长度和字符集。假设一个短例子:旧输入是“露营 灯 充电”,新格式只接受“主题/属性”两段,那么可以改写成“露营灯/充电”,前提是工具把“/”当作层级分隔而不是普通字符。这个假设是否成立,需要拿几条样本验证解析结果,不能只看文档描述。
改写后要记录映射规则,否则下一批对象还会遇到同样的问题。规则本身也是输入规范的一部分,应该和字段说明放在一起。
退出适用于旧对象在新格式下找不到对应位置,或者强行映射会产生错误语义的情况。退出的动作不是直接删掉,而是移入隔离清单,并记录退出原因:是字符集不支持、粒度不匹配,还是语义已经失效。
隔离清单的作用是让后续判断有依据。如果某类对象反复因为同一原因退出,说明输入规范本身需要调整,而不是对象有问题;如果只是个别对象退出,保留清单即可,不必为它改整个规范。
需要说明的是,退出不等于对象永远没用。当新格式再次变化,或者出现中间转换层时,隔离清单里的对象可以重新评估。把退出原因写清楚,比单纯标记“失败”更有复用价值。
输入规范调整后,不要立刻全量导入。先取保留、改写、退出三类各若干条,组成小样本,走一遍完整流程,检查三件事:解析后的对象数量是否与预期一致,改写类对象的语义是否偏移,退出类对象是否被正确隔离而不是混入主输入。
验证结果决定下一步:如果三类都符合预期,可以按映射规则批量处理;如果某一类偏差集中出现,先修规则再放量。请求量或抓取量归零并不能单独证明处理正确,也可能是样本太小、解析提前中断或对象被去重合并,需要结合解析日志一起看。
最后把本次的字段映射、改写规则和退出原因整理成一份简短的输入规范说明,下次对象格式再变时,可以直接在这份说明上做增量修改,而不是从头判断每个对象该留还是该走。