收录范围
从 2014 赛季一路记到今天
刚开始的时候,我们只想把一件事做扎实:把赛季里每一场比赛原样留下来——比分、出场、进球,一样不落。范围是一年一年加上去的,到今天覆盖 42 个联赛,其中 12 个是各国顶级联赛,每个赛季的正式比赛都在 3,400 场以上。
联赛铺开之后,真正的麻烦不在收录,而在能不能放在一起看。不同来源的统计习惯并不一致,所以每一场比赛都按同一套字段进入记录:无论来自哪个联赛,你看到的项目名称和含义都是一样的。这样你在两个联赛的射手榜之间来回对照时,才不至于被名字相同、算法不同的数字绕进去。
流转链路
一场比赛的数据如何走到你眼前
终场哨响,我们的活儿才开始。从原始素材到你在页面上读到的那一行,中间要过四道固定环节,每一道都会留下处理痕迹。
采集是第一道。赛果、阵容、事件时间轴这些素材进来,先按赛季与轮次归位,再写进对应比赛的结构里——这一步决定了后面所有查询能不能按轮次直接落到点。
第二道是交叉比对。同一场比赛我们同时看几路来源,比分、进球时间、球员归属这些关键位置一旦出现分歧,就先把这条挂起来不发布,等分歧消掉再往下走。
第三道是异常标注。数值本身说得通、但和这个联赛以往习惯明显不一样的地方,会被标出来并跟着数据一起走,你打开的时候能直接看到——某轮红牌数忽然比平常高出一大截,这种信息不该被抹平。
最后一道是人工复核。专职校验人员逐轮过一遍,确认标出来的位置处理妥当,这一轮的数据才进入发布队列。常规轮次的全部比赛结束后 90 分钟内,更新就会出现在页面上。
挂起之后多久会重新出现?
取决于分歧的性质。来自同一赛区的两路来源互相打架,通常在同一次轮次处理里就能收敛;跨来源、跨语言记录的冲突要多花一轮。挂起期间该场比赛不会出现在榜单与走势里,避免你引用到一半又变数。
两级定位
先认赛季,再认轮次
一整个赛季的数据量很大,但如果只能在一季里从头翻到尾,再全的收录也是负担。所以我们把每一份记录都挂在两级结构上:先确定赛季,再定位到具体轮次。
好处在你找具体东西的时候最明显。想回看某支球队某一轮的排兵和结果,直接切到那一轮;想看一个阶段的走势,比如某队在赛季前段的进失球变化,就按轮次区间拉开。你不必在几十页结果里猜哪一条才是想要的。
这个结构也让分享变得简单。你在产品与分区、赛季日志或帮助中心点到任何一个数据入口,落地的位置都带着赛季和轮次两个坐标,把地址发给同事,对方打开看到的和你看到的是同一段。
轮次区间怎么取才不会断档?
按轮次起止取值时,区间包含首尾两轮;如果某一轮只有部分比赛在你要看的范围内,我们会把整轮放进结果并在条目上标出实际场次。跨赛季比较时,两段区间用同一套取值方式,落点的场次数是可对上的。
团队与分工
48 个人,四类活
支撑这套记录的是 48 人的数据团队,按做的事情分成采集、校验、产品与编辑四类。
采集岗在最前面,负责把原始素材第一时间归位;校验岗 22 人,全部为专职,只管后面两道环节——把分歧消掉,把标出来的位置处理干净;产品岗负责爱游戏面板的 28 项赛季指标与 12 组对照视图,也会把大家反复查看的组合沉淀成新的视图;编辑岗负责赛季回顾、差异点专题这类需要写清楚的东西。
四类人不靠交接单据沟通,看的是同一份记录。一条数据卡在哪一道、往下走还缺什么,相关的人顺手就能看到,不用开会同步。
合作生态
一个人做不成这件事
12 家数据供应方给我们提供不同联赛的原始记录,30 余家媒体与内容合作方则在用这些数据做赛前节目、赛季专栏和图文复盘。
长期协作让互相印证变成双向的。供应方给的记录,我们比对后会把分歧连同处理结果回传;合作方在引用中发现对不上的地方,也会直接反馈到我们的数据纠错通道。一轮一轮下来,双方对同一个联赛的理解会越来越贴近——这比任何一次性的对齐都管用。
如果你手上有稳定的记录来源,或者正在做需要长期引用赛季数据的栏目,可以通过联系我们聊聊合作方式。