反例样本不是随机抽几条旧内容看一眼,而是主动挑出“如果替换规则是错的、它最可能先出问题”的页面。做法是先按页面角色分层,再从每层里各取两类样本:一类是替换后应当保持不变的,一类是替换后应当明显改变的。前者用来抓误伤,后者用来抓漏改。两类都通过,才值得把规则推到全量。
两种条件下的选择完全不同,先归类再动手。
条件一:旧对象整体退出,只保留少量仍有价值的部分。比如一批旧系统页面要下线,但其中若干篇内容仍被引用、仍有搜索需求。这时反例样本的重点是“边界页”:那些看起来属于旧体系、实际仍有独立价值的页面。你要构造的反例是——假如规则把它们也一并处理掉,损失是什么。样本里必须包含至少一个这样的页面,并明确它被保留的理由。
条件二:旧对象只是换一种表达,主体结构不动。比如把旧合作关系名称统一换成新名称,页面角色不变。这时反例的重点是“例外写法”:同一含义在旧文本里可能有多种表述,规则只覆盖了最常见的一种。你要构造的反例是——某个页面用了少见写法,替换后出现半新半旧的混杂状态,读者和后续维护者都无法判断哪个是当前版本。
判断依据很简单:问一句“替换后,这个页面还需不需要人再读一遍做决定”。需要,就按条件一处理;不需要,就按条件二处理。两者的样本构成不一样,混着做会两头都抓不住。
不管哪种条件,样本至少覆盖以下四类,每类一到三条即可,不必求多:
条件一下,第二类和第四类权重更高,因为退出决策的风险主要在误伤;条件二下,第一类和第三类权重更高,因为表达统一的风险主要在漏改和结构破坏。
不要凭记忆挑样本,按下面顺序做:
这里有一个实际动作及其影响:如果第一轮跑完发现“不应改变”的页面也被改了,说明规则匹配过宽,下一步不是继续加样本,而是先收窄匹配条件,再重新构造反例集。反过来,如果“应当改变”的页面完全没动,先检查是不是页面正文与模板分离、替换工具只处理了模板部分,这时加样本没有意义,要先确认处理范围。
假设某站要把旧版块名称“资料库”统一改为“文档中心”,其中一部分旧页面计划保留但不再更新。反例集可以这样设:一条典型页用于确认“资料库”被正确替换;一条含“资料来源”字样的页面用于确认不会被误改;一条列表页用于确认替换后条目链接仍指向原目标;一条仍被导航引用的保留页用于确认它没有被顺带下线。
跑完后若列表页出现条目文字更新但链接未变,这不算错误,但需要记录,因为后续若有人按新名称搜索,可能对不上。若保留页的正文被改而标题未改,说明处理范围不完整,下一步应把标题纳入同一批处理,而不是单独补一次。
以下情况不适合用反例样本直接放行:页面含用户生成内容,替换可能改变他人原话;页面是法律、价格或承诺类文本,改词会改变含义;旧对象退出涉及外部合作方署名,替换前需要对方确认。这些页面应单独列出,不进入批量流程。
另外,替换前后做比较时,不要把某几天的流量或抓取变化直接归因于这次替换。季节、搜索需求本身的变化、数据采集口径差异都会影响数字。反例样本能证明的是“规则在选定页面上按预期工作”,不能证明排名会怎样变化。若反例集全部通过而全量后出现异常,优先回查是否漏掉了某一层页面,而不是先否定规则本身。