「这本我是不是买过」——站在书店里想不起来,是几乎所有买书的人都遇到过的事。
但在讨论怎么防之前,得先承认一件事:「重复」不是一种情况,是四种,而且它们的代价完全不同。 把它们混为一谈,就会做出一个要么拦太多、要么拦不住的方案。
四种重复
| 类型 | 书号 | 内容 | 该不该拦 |
|---|---|---|---|
| 同版重购 | 相同 | 完全一致 | 必须拦 |
| 不同译本 / 校订本 | 不同 | 有实质差异 | 不该拦 |
| 精平装换版 / 再版重排 | 不同 | 基本一致 | 给提示,人来定 |
| 套装与单行本重叠 | 不同 | 部分重叠 | 拦不住,只能靠记 |
同版重购是唯一的纯亏损。书号、出版社、译者、装帧全一样,买两本没有任何理由。
不同译本不算重复。 收三个版本《百年孤独》的人不是记性差,是有意为之。任何把这种情况判成「你重复了」的方案,用两周就会被关掉。
精平装换版是最需要人判断的一档。 为了送人、为了替换翻烂的旧书、为了新版补的注释——都是合理的重买。机器能做的只是把「你已有 XX 社 XX 年版」摆出来。
套装与单行本重叠最隐蔽。 买了全集又买单本,或者买了几本单行本再买套装,书号对不上、书名也不完全一样,所有自动化方案都抓不住。这一类只能靠买套装前多想一步。
为什么只按书号判会漏
书号会变的情形比大多数人以为的多:
- 换出版社
- 换译者
- 精装改平装
- 再版重排、修订版、纪念版
- 不同开本
- 引进版与原版
结果就是:你在书店扫一本新版,系统说「没买过」,而旧版正躺在你家书架上。
而且越是经典书越容易中招——经典书版本最多,也最容易每隔几年出个新版。
那为什么还要以书号为主键?因为它是整份书目里唯一没有写法歧义的字段。它在「判定相同」时百分之百可靠,只是在「判定不同」时不可靠。
用法应该是:
- 书号相同 → 直接判重,不需要人看。
- 书号不同 → 不下结论,进入第二层比对。
按书名加作者判,会怎样
第二层能补上换版本的漏,但它同时会漏报和误报。
漏报来源:
- 书名写法差异:副标题带不带、繁简、书名号、空格全半角
- 译名差异——同一个外国作者在不同出版社译名不同,这是中文书目的老大难
- 换译者时书名常跟着改
误报来源:
- 同名不同书,通俗书名尤其多
- 上下册、系列里的不同卷,书名高度相似
- 作者的选集与单行本
所以第二层的正确形态是提示,不是判定:
书号不同,但书名作者一致。你已有:XX 出版社,2019 年版。
把决定权交回给人。任何试图把第二层也自动判死的方案,都会在你有意收多译本时变成骚扰,然后被关掉。
一个被普遍忽略的点:送人和卖掉的书要留在书单里
多数人的书单只记「现在还在家的书」。这恰恰是重复购买的高发区。
道理很直接:你送人的那本书,下次在书店看到时的心理反应和没买过一模一样。 卖掉的书往往是你判断过「不值得留」的,重买等于把同一个错误犯两遍。
正确做法是给每册书一个状态——在架、借出、在读、已送人、已售出、已丢失——终态保留记录,不删行,查重时全量参与,统计藏书量时按状态过滤。
删行是最省事的操作,也是让防重方案缺一大块的操作。
决定成败的不是精度,是查询发生在哪里
这是本文最想说的一句:衡量防重方案的标准,不是查得准不准,是能不能在书店里三秒内查完。
对照一下常见方案:
| 方案 | 查得准 | 书店里能用 |
|---|---|---|
| 电脑上的表格 | 准 | 不能 |
| 手机笔记里的清单 | 一般 | 理论上能,实际上没人翻 |
| 拍书架照片 | — | 没有检索能力 |
| 靠记忆 | 两百本以内 | 能,但会错 |
| 扫码查询 | 准 | 能 |
一份设计精良、字段齐全、公式完备的 Excel 藏书表,防不住任何一次在书店发生的重复购买——因为你不会在书店打开电脑。
真正决定成败的是三个属性:手机上、三秒内、一只手。任何需要坐下来、需要打字超过几个字、需要在长列表里滚动的方案,在结账队伍里都会被跳过。
扫码之所以关键,不是因为它判得准(它只解决第一层),而是因为它把查询动作压缩成了「举起手机对一下」。
买之前查,还是买回来登记
两件事都要做,但优先级不同:先保证买之前能查,再谈登记完整度。
登记做得再全,如果查询不方便,也只是攒了一份漂亮的档案;反过来,只要能在书店查,哪怕字段不全,收益已经拿到大半。
节奏上:
- 买之前:扫一下,看有没有命中;书号没命中,再用书名搜一次。
- 买回来:当场登记,不要攒。攒到周末统一录入这件事,没有人能坚持三个月。
- 登记的最低限度:书号、书名、位置。评分和读后感想写再写。
最后一个反向提醒:不要为了书目完整而在录入上做加法。 录入越重,登记越容易断;一旦断了,查重就失效了。
这才是绝大多数藏书管理方案真正的死因——不是设计不好,是太好了。