先把“被发现”当成一个可观测事件,而不是一个页面属性。若一批URL中只有部分进入抓取或索引,划分对照组的目的不是证明某个改动有效,而是把“哪些页面本来就更容易被发现”和“改动本身带来的差异”分开。最稳的做法是先按URL层级、入链来源、内容类型或上线时间做分层,再在层内随机选处理组和对照组;如果这批URL数量很少或彼此高度同质,则改用时间切分或同模板配对,而不是硬做随机分组。
当待观察URL数量足够、且能按明显差异分层时,优先用层内随机。分层变量应选那些会直接影响发现概率的因素,例如:
具体动作是:先给每个URL打上分层标签,再在每一层内随机分配处理组和对照组。处理组执行你要验证的动作,例如增加内链入口、调整站点地图分组、或改变列表页的链接位置;对照组保持原状。随后只比较同一层内两组在“被发现”上的差异,而不是把全站所有URL混在一起算总数。
这样做的代价是需要维护分组记录,而且如果某层URL太少,随机结果会很不稳定。一个假设例子:某批1000个详情页中,有600个在站点地图中、400个不在。你可以分别在这两层内随机各取一半作为处理组,而不是直接随机抽500个。否则处理组可能恰好包含更多已在站点地图中的URL,后续差异就无法归因。
当URL总量不大、或者页面之间差异很小、随机分组容易失衡时,改用配对或时间切分更实际。配对的做法是:为每个处理URL找一个在模板、内容长度、入链数量、上线时间上最接近的对照URL,然后成对比较。时间切分的做法是:先记录当前这批URL的发现状态,再在统一时间点执行改动,之后观察新一批同类URL的发现情况,并和改动前同类URL作对照。
这两种做法成立的条件不同。配对要求你能找到足够相似的对照对象,否则配对本身会引入偏差;时间切分要求外部环境相对稳定,如果同期还改了站点结构或提交频率,时间切分就无法单独说明问题。实施动作上,配对要提前锁定对照URL并记录配对依据;时间切分要固定观察窗口,例如改动前后各观察相同天数,并记录每天新被发现的URL数量。
例外情况是:如果这批URL中有一部分被robots.txt限制抓取,不能把它们和可抓取URL放进同一对照组。robots.txt限制的是抓取,不等于可靠的索引移除;被限制抓取的URL可能仍以其他方式出现,也可能完全不出现。正确做法是把受限制的URL单独列为一层,先确认限制是否符合预期,再决定是否纳入观察。
批量页面只有一部分被发现,不一定说明处理动作有效或无效。以下三种解释需要在分组前先检查:
一个实际动作是:在分组前导出这批URL的入链数、是否在站点地图中、模板类型和上线日期,先做一次分布对比。如果处理组和对照组在这些字段上差异明显,就重新分层或改用配对。这个动作的结果会直接决定下一步:分布接近则按原分组继续观察;分布差异大则先修正分组,否则后续观察只是在重复已有偏差。
对照组划分完成后,观察指标应选“首次被抓取”“首次出现在索引中”这类可记录事件,而不是笼统的“收录率”。如果只能拿到抓取量或请求量,要注意请求量归零不能单独证明处理正确,它也可能是抓取调度变化、站点整体抓取下降或日志采集缺失造成的。判定时至少同时看两组在同一观察窗口内的变化方向,而不是只看处理组是否上升。
若处理组和对照组在多个分层内都出现同向差异,可以认为该动作与发现变化相关;若差异只出现在某一层,应优先检查该层的特殊条件,例如模板是否不同、是否有额外入口。若两组都没有明显变化,也不代表动作无效,可能只是观察窗口太短或该批URL本身发现概率就低。此时更合理的下一步是扩大样本或延长窗口,而不是立即换方法。
最后需要明确适用条件:这套分组方法适合你能控制处理动作、并能记录URL级发现状态的场景。如果改动是全站同时上线、没有保留未处理URL,就无法事后补出干净对照组,只能改用时间切分并接受其局限。不同搜索引擎对站点地图、抓取限制和索引处理的支持情况须分别核查,不能把一种环境下的观察结果直接套到另一种环境。