先给结论:如果报告页数大于实际对象数量,且差异集中在分页、来源变体或同一对象的多条记录上,应按“对象标识”而不是“报告行数”去重;如果差异来自抓取范围本身不同(例如只查了子域、只取了已索引页面),则先去重会掩盖漏检,应该先统一查询范围再谈去重。判断顺序是:先确认两边的计数口径是否一致,再决定去重规则,最后才把去重后的数量当作下一步核查的基数。
报告页数通常是工具按自身分页规则输出的行数,实际对象数量是你业务侧认定的被链接目标总数。两者不一致时,先问一个具体问题:报告里的每一行代表一个链接,还是一个来源页面,还是一个目标对象?
常见情况是:一个目标对象被多个来源页面链接,报告按来源逐行列出,于是行数远大于对象数;反过来,如果工具按目标聚合,一个目标只出一行,但同一目标出现在多个子域或带不同参数,行数又会小于你手工统计的对象数。这两种差异方向相反,去重方法也完全不同。
可操作动作:从报告里抽 5 到 10 行,逐行标注“来源页面、目标地址、链接类型”。如果同一目标地址重复出现而来源不同,说明报告是来源维度,去重键应设为目标地址;如果同一来源反复出现而目标不同,说明报告是目标维度,去重键应设为来源页面加目标地址的组合。这个标注结果直接决定下一步用哪个字段做去重,标注错了,后面所有数量都对不上。
确定去重键之后,真正影响结果的是键的写法是否统一。同一个目标对象在报告里可能以不同形式出现,直接按原始字符串去重会漏掉大量重复。
http 与 https、带 www 与不带,是否视为同一对象,需要你事先定死。/Page 与 /page、/a 与 /a/ 是否合并。?utm_source=... 这类参数是否剥离,剥离后可能把本应区分的两个落地页合并。blog.example.com 与 www.example.com 是否算同一对象,取决于你的业务边界。建议先写一条规范化规则,再对全量报告执行一次,然后比较去重前后的数量差。如果差值主要来自跟踪参数和结尾斜杠,说明是写法问题;如果差值主要来自子域,说明是范围问题,需要回到口径层面确认,而不是继续加去重条件。
假设你运营一个主站加一个独立博客子域,业务上把它们当作两个对象统计。报告把两个子域的目标地址都归到主域下,按主机名去重后数量从 400 降到 260。看起来干净了,但降掉的 140 里有一部分其实是博客子域的真实链接,去重把有效对象一起删了。
这个反例说明:当“实际对象数量”的边界本身包含多个子域或多个业务单元时,按主机名去重会误删。此时正确做法是先把子域还原成独立对象,再在各自范围内去重,最后相加。去重规则必须服从业务对“对象”的定义,而不是服从工具报告的字段结构。
另一个容易误判的点:报告页数下降或某项统计归零,不一定证明去重正确。它也可能是查询范围被缩小、抓取被限制或筛选条件被改动造成的。看到数量变化,先核对查询条件是否与上一次一致,再判断是去重生效还是范围变了。
去重后的对象数量是后续核查的基数,不是最终结论。拿到这个数字后,按下面顺序推进:
这样做的结果是:下一次运行外链检查工具时,你可以直接用同一套规范化规则和去重键,数量变化就能反映真实的对象增减,而不是每次都重新解释一遍口径差异。
如果报告页数与实际对象数量的差异不是重复造成的,而是覆盖范围不同,去重只会让问题更难发现。判断依据是:抽取的样本里,是否存在“实际对象在报告中完全找不到”的情况。只要存在漏检,就应先把查询范围对齐到同一批对象,再执行去重。
具体动作:把实际对象清单和报告清单做一次反向比对,列出报告里缺失的对象。如果缺失集中在某个子域、某种链接类型或某个时间之后新增的页面,说明是范围问题。此时去重是次要的,先补齐查询范围,否则去重后的数字仍然偏低,后续所有判断都会建立在残缺基数上。
把范围对齐、再去重、最后核实,这三步的顺序不能颠倒。顺序对了,报告页数和实际对象数量之间的差异就不再是噪声,而是可以解释、可以复用的口径信息。