/posts/geo-a-b
GEO优化

GEO跑批的哈希盐值,放输入开头还是末尾?我拿自家数据跑了A/B

数据女侠 99 0 30

上周跟团队复盘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,结果跟我一致还是相反?

登录后可以为帖子点赞,但本帖内容对所有人开放阅读。

社区回应

0 Replies

还没有回应,抢一个沙发。

登录后可以回应和点赞,但本帖内容对所有人开放阅读。