先给结论:报告页数多于实际对象数量,通常不是“多抓了页面”,而是同一对象被多条记录重复表达。去重的正确单位是对象,不是行或页;判断依据应落在对象标识上,而不是行数、页数或导出次数。先定义什么算同一个对象,再决定按行合并还是按对象合并,这一步选错,后面越处理越乱。
报告页数虚高一般来自两类原因,处理方式完全不同。
两者的证据不同:前者看对象标识是否完全一致,后者看是否存在稳定的子项字段。若字段里只有标题和链接,没有对象编号,那么标题相近的两行既可能是重复,也可能是两个真实对象,不能凭感觉删。
假设某站点用网站自动推广工具从三个入口分别导出记录:栏目页、站内搜索页、外链登记页。三次导出合计 480 行,人工核对后确认实际对象只有 300 个。此时有两种做法。
做法一:按行去重。把链接完全相同的行合并,保留一行。代价是同一对象若在不同入口生成了不同链接(带参数、带锚点、带跳转),仍会被当成两个对象。结果是 480 行可能只降到 420 行,虚高没解决。
做法二:按对象标识去重。先确定一个能唯一代表对象的字段,例如对象编号或规范化后的主链接,再按该字段合并,其余字段取并集或最新值。代价是需要先补一个稳定标识,前期多一步整理。结果是 480 行能收敛到接近 300 行,且不会误删子项。
两种做法的分界条件是:能否为每个对象找到一个稳定且唯一的标识。能找到,就按对象去重;找不到,只能先按行去重,再人工抽样核对,不能直接宣称对象数已准确。
在合并之前,先对链接做规范化,并记录规范化规则。常见规则包括:去掉跟踪参数、统一大小写、去掉末尾斜杠差异、把跳转链接还原为目标链接。这一步的结果直接决定下一步:如果规范化后重复率明显上升,说明原报告的虚高主要来自链接写法差异;如果规范化后重复率几乎不变,说明重复来自对象本身被多次登记,需要回到数据来源排查。
规范化规则要写下来,不能只存在于某次操作里。否则下次导出时同样的虚高会再次出现,而且没人能解释为什么两次结果不同。
合并同一对象的多个行时,每个字段的处理方式不同,不能一律取第一条。
这里的关键判断是:合并后对象数下降但子项数不变,说明去重成功;对象数和子项数同时下降,说明合并过度。 出现后者时,应回退到按行去重,而不是继续合并。
去重完成后,不要只看总数。抽三类样本核对:一是被合并掉的行,确认它们确实指向同一对象;二是保留下来但标题相近的行,确认它们是不同对象;三是来源字段被合并的行,确认来源信息没有丢失。若抽样中发现被删行其实是独立对象,说明对象标识选错了,需要更换标识字段重新处理,而不是手工补回几行。
报告页数与实际对象数量不一致,本质是标识问题,不是数量问题。先把“什么算同一个对象”定义清楚,再决定合并粒度,去重结果才可复核、可复用。具体工具支持哪些字段、能否自定义标识,需要以你实际使用的工具说明为准,不同工具差异较大。