先给结论:报告页数大于实际对象数量时,不要急着按页去重,也不要直接按URL去重。先判断多出来的页是同一对象的重复表达,还是不同对象被错误合并。判断依据是对象标识是否稳定:如果每个对象都有唯一且稳定的标识(如独立域名、独立栏目路径、独立商品编号),按对象标识去重;如果对象标识本身会随查询条件变化,只能按“查询条件+对象标识”的组合去重,代价是同一对象在不同条件下仍会各占一行。
下面用一个假设情境把决策过程走完。假设你负责一个内容站,用某款seo综合查询工具跑全站报告,工具显示总页数1200,但你在后台数出的实际文章是900篇。差的300页不是小数,接下来要决定:是直接删掉重复行交差,还是先查清重复来源再改查询方式。
报告页数超过实际对象,通常只有三类原因,处理方式完全不同。
可区分的证据是:随机抽20行,看它们的对象标识是否指向同一份内容。若20行里出现多个不同标题却共用一个标识,属于第三类;若标题相同而标识不同,属于第一类或第二类。这个抽样动作的结果直接决定下一步用哪种去重键。
做法一:按对象标识去重。成立条件是每个对象有稳定唯一标识,且该标识不随查询条件改变。代价是可能误删同一对象下确实需要分开看的维度,比如同一商品的不同规格若共用编号,会被并成一行。
做法二:按“查询条件+对象标识”去重。成立条件是你要保留条件差异,比如想对比不同入口下同一对象的曝光差异。代价是报告行数仍会高于实际对象数,汇报时需要额外说明“这里的页数是记录数,不是对象数”,否则又会引起误解。
选择条件可以简化成一句话:如果下游只看对象总量,用做法一;如果下游要看条件差异,用做法二。两者不能同时满足,硬要兼顾就会得到一份既不能直接加总、也不能直接对比的中间表。
回到1200对900这个假设。抽样发现多出的行大多标题相同、路径只差一个查询参数,属于第一类。此时按规范化路径去重,得到约900行,与后台数量接近,这一步结果是可信的。
但如果抽样发现多出的行是同一批文章分别来自两个不同列表页,且你正需要比较这两个列表的覆盖差异,那就该用做法二,保留条件列。此时行数仍是1200,但每行含义明确,后续分析不会把同一篇文章重复计入总量。
关键动作是:先抽样确认重复类型,再决定去重键;去重后立刻用“去重后行数÷抽样中唯一对象比例”反推是否合理。如果反推结果仍明显偏离后台对象数,说明还有第二类重复没处理,需要回到条件列继续拆,而不是继续删行。
这四点里,第一点和第三点最常见。处理顺序建议是先改查询条件、再改去重规则,最后才动报告行。反过来做,容易把真实差异当成噪声删掉。
无论选哪种做法,交付时都应写明:去重键是什么、保留了哪些条件列、去重后行数与实际对象数的差异原因。这样接收方才能判断这份报告能不能直接用于总量决策。若工具的具体去重入口和字段命名未知,以工具当前实际界面为准,不要凭印象假设。
因此,报告页数与实际对象数量不一致时,正确的第一步不是去重,而是抽样确认重复属于哪一类;只有确认了重复类型,按对象标识还是按条件组合去重这个取舍才有依据,后续的总量判断也才站得住。