先给结论:对象格式一变,不要急着批量重跑,而要先判断变化属于“换壳”还是“换语义”。换壳——比如同样的网址从一行一个变成CSV一列——只需改分隔与字段映射,原有关键词和地区参数照用;换语义——比如原来输入的是单个页面URL,现在要输入整站域名或关键词词组——就必须重建输入规范,包括去重规则、匹配方式和结果归属。判断依据只有一个:新格式里的一个条目,是否仍对应旧规范里的一个查询对象。是,就改解析;不是,就改规范。
这种情况下,变化通常来自文件形态:TXT换成CSV、逗号换成制表符、多了一列备注、编码从GBK变成UTF-8。查询对象的数量、含义都没变,所以不必动关键词、地区、设备这些业务参数。
需要做的动作很具体:先取变化后文件的前20行做字段映射,明确哪一列是查询对象、哪一列是辅助标识;然后在导入时声明分隔符与编码,而不是依赖工具自动猜测。假设一个场景:原来每行是example.com/page-a,现在CSV是id,url,tag三列。如果直接整行导入,第二列和第三列会被当成URL的一部分,查询对象就脏了。
动作的结果会直接决定下一步:如果映射后前20行的解析结果与旧规范逐条一致,就可以按原参数放量;如果出现空值、截断或重复,说明解析层还没对齐,此时放量只会把错误放大,应先回到字段映射修正。
更麻烦的变化是语义层面的:一个条目不再等于一个查询对象。例如原来一行一个URL,现在一行是一个域名加一批关键词;或者原来输入的是关键词,现在输入的是“关键词+落地页”的组合。这时旧规范里的去重、计数和结果归属全部失效。
重建规范要回答三个问题:拆分粒度是什么、重复项按什么规则合并、结果挂到哪个对象上。拆分粒度决定查询量——一个域名配十个关键词,是拆成十条查询还是当成一条组合查询,两种做法得到的结果结构完全不同。去重规则要区分“完全相同的对象”和“看起来相同但参数不同”的对象,后者不能简单合并。结果归属则决定你后续能不能把数据对回业务,如果一条记录拆出多个对象,就必须保留原始记录的标识列。
可区分的证据是:如果拆分后查询量突然成倍增加,而结果里出现大量重复条目,多半是拆分粒度和去重规则没定好,而不是工具本身异常。这时应先固定一套拆分与合并规则,再小批量验证,而不是边跑边改。
无论属于哪种条件,都建议保留一份旧格式的输入样本和对应结果,作为对照基线。改动输入规范后,用同一批对象分别跑旧口径和新口径,比较差异来自格式解析还是查询语义。如果差异只出现在解析层,修正映射即可;如果差异出现在结果归属,说明规范本身需要重新定义。
这一步的作用是避免把“格式变化”误判为“排名波动”,也避免把“语义变化”当成简单的编码问题处理。
还有一种容易被忽略的情况:文件格式完全没动,但业务前提变了。比如原来查询的是品牌词,现在同一批位置填的是竞品词;或者原来查的是移动端,现在默认变成了PC端。这种情况下输入规范看似没变,实际查询对象的含义已经不同,继续沿用旧参数会得到无法解释的结果。
处理方式是先确认业务前提的变化点,再决定是新增一套参数还是替换原有参数。如果新旧对象需要长期并存,就应分成两套输入规范,而不是混在同一批文件里。具体工具对参数并存的支持方式,需要以实际界面和文档为准,不能凭旧印象推断。
规范改完后,不要直接全量提交。先选一小批同时覆盖新旧格式的对象,按新规范跑一次,检查三件事:解析是否完整、去重是否符合预期、结果能否对回原始记录。三件都通过,再扩大范围;任何一件不通过,就回到对应环节修正,而不是靠调整查询参数掩盖问题。
这个动作的价值在于:它把“格式变化”这个模糊问题,拆成了可以逐项确认的具体环节,也让后续每一次输入规范的调整都有据可查。真正需要改的往往不是工具,而是你定义查询对象的那套规则。