# 巴别图书馆计划（八）：精确全文检索书库

> 本文开放前 70% 正文，剩余内容会员可见。

原文：https://utgd.net/article/20811

以数据库（或文件夹）为单位的、跨文件的、全文的搜索，是专业级工具区别于寻常之物的标志之一。区别于出版商自己的客户端，MDict 等民间软件通常可以一次性查询多本词典，因而备受外语学习者追捧；BBEdit 和 CotEditor 等轻代码编辑器一次性搜索整个文件，给那些主打小而美的编辑器以垂直打击；自 macOS High Sierra 砍掉预览工具的多文件搜索功能后，DEVONthink 和 FoxTrot Professional Search 终于巩固了其专业级文件搜索工具的地位——尽管是以一种最讽刺的方式。

在书籍管理领域，Calibre 自 6\.0 大版本后也引入了数据库级别的全文检索（Full text search），在微观意义上完成了 Google 的图书扫描计划（Project Ocean）：读者终于可以精确检索书中的每一个字，而不仅仅是通过索引卡检索一本书。

然而，Calibre 的搜索之网却撒得太广。如上图所示，当我仅仅想找个食谱时，Calibre 却翻出了所有匹配了关键词的书籍，若单单是掺入了营养学参考书倒也罢，但搜索结果中不少是虚构类作品，对做菜毫无帮助。简言之，书籍搜索之网应可宽可窄，既能覆盖整个书库，又可聚焦一簇图书，而非只能在一本书或整个图书馆之间二选一。几番尝试后，遂有本文。

究其原理，一句话即可概括：在书籍检索的基础上加以全文检索，即可精确、全文查找一小簇书籍的内容。然而，若不愿每次检索时都调整半天，或希望常备书籍信手拈来，仍有种种技术细节可究。在初次检索与日后操作之间的纽带，便是已保存的搜索条件（相当于 Finder 中的智能文件夹或任务管理工具中的过滤组）。

Calibre 的全文检索范围其实有两种，如果不勾选“Restrict searched books”，那么就是搜索当前整个图书馆——包括手动创立的虚拟图书馆（virtual library）——反之，则是搜索当前搜索结果中的全部书籍。

鉴于 Calibre 并无层级文件夹的概念，似乎让习惯文件夹式整理的读者无所适从：难道只有撒大网和搜索两条路吗？这就引出了另一个工具：标签。数字世界中标签可以作为搜索条件，考虑一下 Finder 中的文件夹和以标签为条件的智能文件夹，在一个不介意背后技术的读者看来，这两者看上去完全等价——如果不是后者更加强大的话——不过都是一个“文件夹”。

Hum 早在七八年前就宣布，“计算机世界的标签，却拥有了容器的特性……所以在计算机中的很多情境下，理论上，标签是完全可以代替文件夹的”。彼时也有极佳的例子：Pocket，一个稍后读服务，完全没有文件夹设计，但其中的标签足以充当文章的容器。

现在，让我们把视线转回 Calibre。Calibre 中也有标签，当我想要一个“食谱类书籍”的文件夹而不得时，只需给相关书籍打上相应的标签——我用的是自创编码 F000，缺省为 F，F 表示 Food——再配合搜索，即可过滤出一扎图书。后续在这一范围内全文检索，便不必担心混入无关内容。不同于文件夹，标签不具备排他性，一本书上可以拥有多个标签，这意味着一本书可以隶属于多个虚拟文件夹——或许，将

---

[前往标准阅读页](https://utgd.net/article/20811?audience=web)
