GEO跑批的哈希盐值,放输入开头还是末尾?我拿自家数据跑了A/B
上周跟团队复盘GEO效果,有人提了一嘴“盐值加在输入开头还是末尾,会不会影响哈希分布,进而影响引用匹配”。
我当时就坐不住了——这玩意儿要是没影响,我们之前为了对齐盐版本号做的那些口径治理,不全白干了?
于是我把自家品牌过去30天的跑批数据捞出来,分了两组:
- A组:盐值拼在原始URL前面
- B组:盐值拼在原始URL后面
其他变量全锁死——同一天跑、同一个采样源、同一批模型版本、同一台机器、NTP源一致。
结果第一天跑完我就懵了:A组引用率3.8%,B组4.1%。差0.3个百分点。
按我平时较真的脾气,这点差异我肯定先怀疑是噪声。但样本量够(每天12万+请求),我顺手用Bootstrap算了置信区间——A组[3.72%, 3.88%],B组[4.02%, 4.18%],完全不重叠。
也就是说,盐值放末尾,引用率确实比放开头高。
我第一反应是“哈希分布变了”。但仔细一想不对:盐值放哪儿,最终哈希值的分布理论上都是均匀的。那差异从哪来?
我又去扒了落盘日志,发现一个细节:放末尾的时候,哈希输入的长度比放开头多了2个字节——因为我们的盐值刚好是两位数字“07”。就这2个字节,导致采样戳和落盘戳的毫秒差从0.7秒缩到了0.3秒。
采样快了,落盘早了,整个批次的数据新鲜度上去了,引用匹配的时效窗口刚好卡进去。
所以真正影响的不是哈希本身,而是采样链路里那几十毫秒的差异。
这事让我更确信:GEO的效果必须用数据衡量,不能凭感觉。你以为是个哈希分布问题,其实是个时间窗口问题。
顺便说一句,我把这个结论同步给工程侧之后,他们看了一眼说“那我们把盐值固定放末尾就行”。我当场反问:你确定换一批数据、换一个采样源,这结论还成立吗?
所以想问问各位:你们跑批的时候,盐值是拼在输入开头还是末尾?有没有人做过类似的A/B,结果跟我一致还是相反?
