7月的第一个星期,星辰搜索的有效文档突然少了四分之一。
发现问题时正是下午两点。半地下室被太阳晒过的人行道捂得发闷,风扇转到最大档,只把打印纸吹得到处跑。楼上五金店老板下来问库存程序怎么少了三个货名,随手在搜索框里输入“密封圈”,屏幕却吐出一串方块。
“你这公司连自己楼上的货都不认识了?”
马飞没有解释,先关掉当天的索引更新。新数据继续写进去,只会让能查的内容更少。
文档仍在硬盘里,索引也没有损坏。可用户输入中文后,大量页面再也匹配不到。日志显示它们的词项变成了一串看似随机的汉字和符号。
马飞先怀疑新加入的前缀压缩。
苏雨桐却把两份原始页面并排打印出来:“不是压缩。它们都声明Gb2312,其中一份实际是大五码,另一份中间夹了英文软件转出来的扩展字符。”
“按声明解码当然会错。”
“不能只信声明。”
当时的中文网络没有统一整洁的编码环境。简体、繁体、不同平台扩展字符甚至错误转换后的文本混在一起。浏览器尚且经常需要用户手动选择编码,抓取程序更无法指望每个站点都写对说明。
苏雨桐提出用字节分布判断编码:统计高位字节组合落入各字符集合法区间的比例,再结合常见中文词给出置信度。置信度不足时不强行转换,而是标记为待判。
第一版规则在普通文章上有效,遇到代码和英文资料便频繁误判。
两人把一百多张误判页面铺在地上,按来源和字节特征分堆。折叠床无法展开,晚饭只能蹲在门口吃。苏雨桐的凉面被风吹进一粒墙灰,她挑出来,继续给一份港台课程表画圈;马飞喝掉半缸温水,衬衫后背仍然湿透。
马飞建议加入页面语言比例。
第二版改善了英文页面,却把含大量公式的中文论文目录判成未知。
两人一直改到凌晨,基准集得分从七十二升到八十六,又因一次“优化”跌回七十九。
“恢复上一版。”马飞说。
苏雨桐没有动:“上一版在繁体页面上错得更多。总分高,是因为测试集里简体页面多。”
她把一百组基准查询按来源拆开。高校、研究机构、个人主页、港台站点分别评分后,问题暴露出来:系统所谓的整体进步,是牺牲小类样本换来的。
“不能只看一个平均数。”她说,“否则数据少的人永远被平均掉。”
两人重新规定验收标准:总分提升之外,任何来源类别不得下降超过既定阈值;未知编码可以暂不入索引,但必须保留原文和失败原因。
新标准落下以后,那版看似八十六分的规则当场降到六十八。马飞把墙上原先写好的“恢复完成”四个字擦掉,改成“简体可用,繁体未过线”。第二天陈维明来催产品资料库,他看见那行字,没有追问为何分数变低,只说客户交付的页面也有两种编码,愿意提供一百份脱敏样本。
样本没有白拿。星辰出具测试用途和删除日期,陈维明的技术员签字确认。新数据补上了基准集最薄的一块,也让那位技术员第一次看见自家页面在不同机器上为什么会变成乱码。
凌晨三点,楼上的水管轰然响起。
半地下室闷热,电风扇吹出来的风也是热的。苏雨桐趴在桌边打了十分钟盹,醒来后发现马飞仍在逐条核对误判。
“你可以明天再做。”
“早上要给客户改数据库。”
“那就后天。”
“抓取队列每天都在增加。”
苏雨桐伸手关掉显示器。
“我们协议里写了,连续通宵不能成为常态。”
“今天是异常。”
“上周你也说异常。”
黑掉的屏幕映出两个人疲惫的脸。
马飞想反驳时间窗口,却忽然发现自己正在把“只有七年”变成一张可以无限透支身体的支票。前一世的团队里,也有人用同样的理由工作到住院。他当时认为那是使命感。
“你说得对。”他保存日志,“睡四小时。”
折叠椅只有两把,拼起来仍不够一个人躺平。马飞把折叠床让给苏雨桐,自己去楼上五金店柜台后面的躺椅。老板被开门声吵醒,丢给他一把蒲扇,问公司现在欠了多少觉。
“账上没记。”
“那就是假账。”老板翻身继续睡。
第二天早上,马飞真在费用表旁添了一栏“连续工作时长”。它不折算成钱,只在超过十六小时时强制停止新增任务。
他们把折叠椅拼在一起,谁也睡不舒服。天亮后,马飞去买了豆浆和烧饼,回来时苏雨桐已经把夜间方案重新整理成三层流程:
先读页面声明。
再做字节合法性检查。
最后用小型常用词表验证;低置信度内容隔离,不污染主索引。
这套方法没有解决所有乱码,却让每一次失败有了去处。
一周后,有效文档恢复到原来的百分之九十三。繁体页面的可检索率首次超过六成,未知编码页面从“莫名消失”变成一份清晰的待处理清单。
苏雨桐把方法写成论文初稿,题目是《混合中文网络文本的轻量编码判别》。
作者第一位写她自己,第二位写马飞。
马飞看完,把第二作者划掉。
“核心方法是你的。我只参与了测试和工程实现,放致谢或项目说明。”
“你不怕以后投资人觉得公司技术不是你的?”
“技术本来就不该全是我的。”
苏雨桐没有立刻接受。她拿贡献记录逐项对照:字节合法区间由她整理,常用词验证由她提出;工程实现是马飞,分层评分则共同确定。最后她保留单独署名,在致谢里明确写出马飞的实现工作和星辰提供的样本环境。
“以后别替别人谦让署名。”她说,“这次是记录支持,不是你一句话支持。”
“同意。”
苏雨桐重新打印首页,只保留自己的名字,并在末尾注明星辰科技提供实验环境。
那天晚上,她把xq-001基准集封存为第二版。
马飞也在公司技术账上新增一项资产:
混合编码判别方法,负责人苏雨桐。
他写完把笔递给她,让她在负责人后面确认。苏雨桐签完,又补了授权范围:星辰搜索与客户检索项目永久使用,论文公开不受公司融资影响。
当晚,两人把恢复出的繁体页面重新抽查一遍。楼上五金店老板下楼关总闸前,照例搜了一次“密封圈”。这回屏幕返回十二条,第一条就是他的库存说明,货号、数量和货架位置都对。
“总算认识我了。”他说。
苏雨桐把这一条也记进测试表。半地下室的风扇吹着论文首页,第一行作者只有她一个人的名字。