苏雨桐没有先运行马飞准备好的九个样例。
她从书包里拿出两页纸,上面写着四十七组查询词。
“这些从哪儿来的?”马飞问。
“图书馆借阅台。我问了十二个人,想找某类资料时会怎么说。”
十二个人里有本科生、实验室助教,也有一位替儿子找无线电维修资料的食堂师傅。苏雨桐没有告诉他们应该怎么问,只把原话记下来。有人把“字库”说成“电脑里的汉字表”,有人把“热失稳”说成“机器越转越烫,最后卡住”。
“他们知道你在测试程序吗?”
“跑完以后才说。先说,他们会故意用像论文的词。”
马飞点了一下头。仅这一条,已经比他准备的九个漂亮样例值钱。
纸上没有标准主题词。
“火箭抖得厉害。”
“机器转太快会不会坏。”
“中文电脑怎么认词。”
“美国那个可重复用的航天飞机为什么贵。”
还有人只记得一句残缺的话,连作者和年份都不知道。
马飞把纸放在键盘旁:“开始吧。”
第一组查询用了两点八秒,九条结果里只有两条相关。
第二组返回空白。
第三组把“重复使用”拆成“重复”和“使用”,结果被大量无关文档淹没。
第七组出现乱码。
第九组却意外把那篇转子碰摩摘要排到了第一。查询者只写了“机器转快了蹭到外壳”,程序碰巧在一段摘要里同时找到了“转速”“接触”和“壳体”。马飞刚想记一个对勾,苏雨桐让他点开全文。
页面里的“接触”说的是电气接触,“壳体”属于另一个段落。答案看似正确,只是三次错误碰在了一起。
“结果蒙对,也算失败。”她说。
马飞把对勾划掉,改成问号,又在旁边注明:词距过远。
到第十五组时,程序因为临时文件超过预设大小直接退出。
机房里很安静,只剩硬盘反复寻道的声音。
马飞重新启动程序,没有为任何一次失败解释。苏雨桐在表格里记录查询时间、结果数量和首条相关位置。她的字迹很快,却始终清楚。
四十七组全部跑完,已经过去三十五分钟。
首条结果正确的只有十一组。
完全找不到相关文档的有十九组。
苏雨桐把最后一个数字圈起来:“你现在的系统,只能找到你已经知道该怎么描述的东西。”
“语料太少。”
“语料扩大十倍,错误也会扩大十倍。”
“可以加词典。”
“新词永远比词典快。”
“用字粒度索引。”
“相关性会更差,磁盘读取也会上升。”
两个人像在会议上互相审查方案,没有谁因为语气直接而退让。
管理员来收过一次费用,苏雨桐把每次程序崩溃后的重启时间单列出来。马飞提出由他承担全部机时,她没有客气,只把收据编号写进测试表。谁付了多少钱,也是一种不该靠记忆维持的记录。
剩下五分钟,苏雨桐调出索引文件。马飞采用定长记录,便于直接定位,却为大量短词浪费了空间。她算了算平均长度。
“如果词项表改成前缀压缩,能省接近三分之一。省下的内存可以保留常用词的文档列表。”
“解码会增加查询时间。”
“顺序读取时不会太多。真正慢的是你每查一个词都重新开文件。”
她在纸上画出缓存区域。
马飞看着那几条线,想起未来成熟系统里的词典压缩和热点缓存。原理不陌生,但具体怎样适应这台486,是苏雨桐从当前数据里推出来的,不是他从未来搬来的。
“还剩两分钟。”管理员提醒。
马飞没有改代码,只把她的方案完整抄下。
“你为什么不争?”苏雨桐问。
“争什么?”
“这是你的程序。”
“程序不是领土。能证明你对,就按你的来。”
苏雨桐合上测试表:“那也可能证明我错。”
“更好。我们少走一条错路。”
苏雨桐没有因为这两句话就松口。她让马飞当场在方案图旁写下提出者和日期,又要求保留原版索引,以便下次做同语料对照。
马飞照做,在“前缀压缩”和“热点缓存”后写上苏雨桐三个字。字落下以后,她才把那张图递回去。
机时结束,屏幕被管理员锁定。
两人抱着软盘和记录纸走到楼下。夜里刚下过雨,路灯映在积水里。苏雨桐在台阶上停住。
“你准备把它做成什么?”
“先做成能用的中文资料检索。”
“以后呢?”
“公开网页搜索。”
“谁付钱?”
“现在不知道。”
“你打算什么时候辞职?”
马飞看向她。
苏雨桐说:“你每天的修改时间都在凌晨,文件时间戳很明显。一个全职做发动机的人,不可能一直这样。”
“明年。”
“你有钱撑到明年吗?”
“没有。所以还要接能收费的数据库工作。”
“你有团队吗?”
“没有。”
“那你现在不是在创业。”她说,“你是在一个人验证自己有没有资格创业。”
这句话很准确。
马飞点头:“所以我想请你继续测试。”
“测试可以。加入不行。”
“为什么?”
“因为你现在只有方向,没有边界。你想做搜索,想做公司,眼睛里还像藏着更大的东西。可我不知道我的研究会不会哪天被你一句‘时间不够’拿去垫路。”
马飞一时没有说话。
他墙上的七年计划,确实把每个人都简化成了所需能力。算法人才、控制人才、材料人才——像设备清单。
“你需要什么边界?”他问。
“先别问我。”苏雨桐把测试表递给他,“把这四十七组失败保存下来。下一版不能只给我看成功了多少,还要告诉我为什么失败、改动影响了什么。”
“下一次什么时候?”
“你把日志做出来再说。”
她走出几步,又回头。
“还有,别把我的缓存方案直接写成你的。记录上注明是谁提出的。”
“当然。”
“不是当然。”苏雨桐说,“很多合作就是从一句‘都是为了项目’开始把边界弄丢的。”
夜风把她额前的碎发吹起。她转身走向宿舍区。
马飞留在台阶上,低头看那张失败表。
四十七次查询,三十六次没有给出好答案。纸上满是叉、问号和苏雨桐写下的短句,其中有一栏专门记录“看起来对,实际错”的结果。
回研究所的末班车已经没有了。马飞把测试表塞进衬衫里面防潮,推着自行车走到校门口,花六毛钱买了两个包子。摊主找不开一块钱,他便多拿一个,用旧报纸包好放进车筐,准备带给还在值班的管理员。
宿舍熄灯后,他把486的显示器亮度调到最低。苏雨桐画的缓存区域被贴在机箱侧面,原来的索引文件复制成只读备份,文件名后加了日期。
他先改失败日志,没有急着改排序。每一次空结果、乱码和程序退出都得到一个编号;那个蒙对的第九组被单独标成误命中。凌晨一点十七分,屏幕上多出一行注释:前缀压缩方案,苏雨桐提出,待对照验证。
窗外有人骑夜班车回来,车铃响了一声。马飞保存文件,拿起已经凉掉的第三个包子,继续处理第一个乱码样本。