先给结论:不要直接对报告页数做除法,也不要默认每个对象只出现一次。正确顺序是先确认“对象”的定义,再判断重复是分页造成的还是对象粒度造成的。前者用分页合并处理,后者必须先合并同一对象的多个变体,否则去重会把不同对象误删。
报告页数多于实际对象数量,通常只有两类原因。第一类是分页重复:同一个对象因为翻页、排序或时间切片被多次列出。第二类是对象粒度重复:同一实际对象在报告里以多个标识出现,比如带和不带协议、带和不带结尾斜杠、带参数和不带参数、移动版和桌面版各占一行。
区分方法很直接:抽一小段报告,把每行的对象标识单独抄出来,按字符排序。如果重复行完全一致,是分页重复;如果重复行只是形式不同,是粒度重复。这个动作只花几分钟,却决定后面用哪种去重方式,选错方向会让后续统计整体偏移。
当重复行完全一致,说明报告只是把同一批对象拆到了多页。此时要做的不是删除行,而是按分页顺序合并成一个连续列表,再对完全相同的标识保留首次出现、丢弃后续出现。
这个动作的结果是得到一个行数等于唯一标识数的列表。下一步才能拿它和实际对象数量对比:如果仍然对不上,说明问题不在分页,而在对象定义本身,需要转到第二种条件处理。
当重复行只是形式不同,直接删重复会出错,因为两个形式可能指向同一对象,也可能指向不同对象。此时要先定义归一化规则,再合并。常见规则包括统一大小写、去掉默认端口、去掉跟踪参数、统一结尾斜杠。是否把带参数版本和无参数版本视为同一对象,取决于你的统计目的:统计页面数量时通常视为同一对象,统计可访问入口时则应分开。
假设一个短例子:报告里有三条记录,分别是 example.com/a、example.com/a/、example.com/a?ref=1。如果统计目的是站点页面数,归一化后应合并为一条;如果目的是检查入口可用性,则应保留三条分别验证。这里的假设是三条都指向同一内容,实际是否如此需要逐个核对,不能凭形式推断。
归一化之后再做合并,结果列表才是可用的对象清单。这一步的代价是可能丢失入口差异信息,所以建议保留一份归一化前的原始副本,供后续复核。
有两种例外需要单独处理。一是报告中的对象本身允许重复出现,比如同一页面因不同查询词各占一行,此时去重会抹掉查询词维度,应该改为按“对象+查询词”组合去重。二是对象标识缺失或为空,无法判断是否同一对象,此时任何自动去重都不可靠,只能先补全标识或人工抽样确认。
另外,报告页数、抓取量或某项统计归零,不能单独证明去重正确。它也可能是筛选条件过窄、时间窗口错位或数据尚未更新造成的。要确认去重结果,至少用两个独立来源交叉核对:一个来自报告自身的唯一标识计数,一个来自你手工抽样的对象清单。两者接近,才能进入下一步分析。
按这个顺序处理,报告页数与实际对象数量的差异会落到一个可解释的原因上,而不是靠反复删除凑数字。具体工具当前支持哪些去重选项、导出格式和字段名称,需要以你实际使用的版本为准,使用前先核对说明。