结论先说:对象格式一变,输入规范不能只改一个字段,而要同时改三件事——允许的取值形态、去重口径、以及记录里保留哪一级对象。否则同一个页面会被当成多个对象,或者同一个站点被拆成多行,后续核对时谁也说不清哪条对应哪条。下面用一个假设情境把决策过程走一遍。
假设一个小组原来只用主域名做查询对象,输入规范写的是“去掉协议、去掉 www、只留注册域”。后来因为要按栏目看表现,对象改成具体 URL。这时对象是变窄了:从站点级缩到页面级。变窄会带来一个直接后果——原来一条记录能覆盖的多个页面,现在必须各占一条。
反过来,如果原来按 URL 逐条录入,现在改成按目录前缀汇总,对象就是变宽。变宽时真正要改的不是输入框,而是去重规则:哪些 URL 归入同一个前缀、前缀末尾要不要带斜杠、带参数的 URL 算不算同一对象。
判断方法很朴素:先写下一句“一个查询对象等于什么”,再检查旧规范里有没有和它冲突的写法。冲突的地方就是必须改的地方。
与其写一段描述性说明,不如把规范拆成能逐条打勾的字段。假设情境里,改后的规范可以这样定:
四个字段里,最容易出事的是“取值形态”和“去重口径”不一致。比如形态上保留查询参数,去重却按去掉参数后的 URL 判定,那么两个不同参数的页面会被合并成一条,按栏目看数据时就会失真。
假设某站点有这三个地址:https://example.com/a、https://example.com/a/、https://example.com/a?from=nav。旧规范只收主域名,这三个都不在录入范围内,问题被掩盖了。改成页面级后,必须先决定它们是不是同一个对象。
如果目标是看页面内容表现,通常把带末尾斜杠和不带的视为同一页,把带来源参数的视为同一页的不同入口,去重时去掉参数。如果目标是看不同入口带来的差异,就不能去掉参数,而要保留。两种选择都成立,取决于你要回答的问题,但必须选一个并写进规范。
实际动作可以这样落地:先按选定的去重口径把这三个地址归并,得到一条或两条记录;再拿归并结果去核对,如果发现同一栏目下的页面数明显少于预期,说明去重口径收得过紧,需要放宽;如果同一页面反复出现,说明收得过松,需要收紧。这个结果直接决定下一步是改去重字段还是改取值形态,而不是继续往输入框里补数据。
多个角色对同一事实有不同理解,往往不是谁记错了,而是各自默认的对象层级不同。做内容的人说“这个页面”,可能指栏目首页;做技术的人说“这个页面”,可能指带参数的完整地址。把分歧转成可以核对的项目,做法是让每个角色在提交前回答同一组问题:对象层级是什么、取值形态保留了什么、按什么去重。
如果三方答案不一致,不要靠口头统一,而是把不一致的那一条单独拎出来,用上面那三个地址做一次试归并,看谁的口径能解释实际看到的现象。能解释的一方,其口径就作为本轮规范;解释不了的一方,改的是自己的默认假设,而不是别人的输入。
第一,对象格式变化后,旧记录的层级可能和新规范不兼容。这时不要直接把旧记录按新口径改写,而应标注旧记录属于哪个层级,避免新旧混在一张表里比较。第二,具体工具对协议、参数、大小写的处理方式属于工具自身行为,不同工具可能不同,也可能随版本调整,需要以你实际使用的版本为准去核对,不要照搬别处的写法。
把这两点写进规范后,输入对象再变时,改动范围就限定在四个字段内,而不是整份规范推倒重来。