# 从 FoxTrot 开始，重新认识本地文件搜索

> 本文公开全文。

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

> 望远镜发明之后，突然出现了天体物理学家和天文学，科学向前迈进了一步。——凯文·凯利

根据克拉克的说法，任何足够先进的技术都与魔法无异。若认可先进工具的魔法属性，则无怪乎它们会诱发扭曲的情感，要么让人将工具尊为机械神灵，似乎只要掌握——或者只是购买——你就能所向披靡，平步青云；在另一个极端，工具虚无主义者或无用论者揭竿而起。

经过十年左右的正版软件洗礼，中文互联网关于工具的讨论已趋于理性，至少多数工具已经得到了检验。惜乎，囿于价格或者观念，部分强大但昂贵的工具依然同时被贴上机械降神和商业怪物的双重标签，被人在主观上重视，但是客观上忽视。

我多次介绍过的 DEVONthink 就是矛盾文化环境的牺牲品，以至于吾辈这样名不见经传的家伙，信手写就的几篇杂文竟也可以排在中文搜索结果前列。与 DEVONthink 类似，另一款文件管理工具——其实只负责文件搜索——FoxTrot，就像这个名字（意为狐狸尾巴）所隐含的那样，同时有着神物和怪物的两面性。

事实上，这种图腾性质或者符号属性很大程度上是一种文化误会，一旦我们愿意踏踏实实沉淀到技术层面，在现实工作中考察工具，往往就会发现我们误会了这些神话中的工具；某种程度上，其实我们对于自己的工作也不甚了解。

例如说，多数人根本不知道何为文件搜索，而讽刺的是，我们居然需要一款价格近千元的工具来重塑认知，这背后一定出了什么问题。

## 被忽略的讨论前提：区分文件层面与亚文件层面

早在启蒙时代，笛卡尔就宣称：世界是一本大书。到了 Amazon 和 Google 各领风骚的时代，书籍（以及其他载体）逐渐电子化、数据化，Kindle 的主要缔造者 Jason Merkoski 甚至可以自豪地宣布：世界上只有一本书。

很不幸，这些思想遗产给文件搜索施以重负。“大书”忽视了在物质上或技术上，All in One 终归难以实现，或者永远不会实现，你只要看看网易云音乐和 QQ 音乐之间的狗咬狗就知道，有人就有江湖，有江湖就有勾心斗角，人人都想 All in One，恰恰最终会撕裂这个愿景。

既然本体论都只是空中楼阁，何况建立在其上的方法论。如果只是泛泛谈论搜索这个动词——或其名词化产物，取决于你对英文语法是否过敏——却忽略了搜索的对象，那么后续讨论显然只能是对着空气乱开枪。事实上，当我们谈论搜索时，往往混淆了两个层次：第一个层次是文件层面，旨在找到文件这一载体，颗粒度相对较粗；另一种搜索则是亚文件层面，聚焦于文章的具体段落、书籍的某一页乃至视频中的某一帧（端视搜索工具本身是否足够先进）。

在文件搜索和亚文件搜索之间，尚有一些中间地带，不过这条光谱总体上比较清晰，我们可以梳理出几种搜索类型：

- 单纯文件搜索，例如 Spotlight 或 Finder，只提供文件；

- 单纯亚文件搜索，例如 Word，一次只能搜索一个文件的内容；

- 专用的文件搜索加亚文件搜索，例如 BBEdit 或 CotEditor，可以批量搜索一扎文本文件并直达其内容；

- 通用的文件搜索加亚文件搜索，例如 DEVONthink 和 FoxTrot，当然，这里的“通用”只是相对而言，显然有不少 DEVONthink 或 FoxTrot 力有未逮的格式。

正是在文件与亚文件的分水岭上，绝大多数搜索工具脱钩了。假设你在寻找“无固定期限劳动合同”相关的法律法规（希望你用不上它！），你不难找到“可能相关”的一扎文件，不过具体有哪些段落符合目的，仍需一一排查。可是，当你有几十个“可能相关”的文件时，一一排查就是一场噩梦。例如，如果你的同事喜欢用 Word 文档充当“团队知识库”，你就只能诸项打开各个文件，天晓得要查到何时。

事实上，只有区分了文件层面的搜索和亚文件层面的搜索，才是对大书隐喻的现实回应。而诸如 Finder 或 Spotlight 等搜索方式，尽管也将文件内容作为搜索条件，却无法直达其内部，依然需要在其他工具中打开文件才能进一步翻找。

貌似用户友好的时髦工具，继承了千年的 All in One 幻梦，却有意无意中掩盖了工作之繁重与世界之复杂。

## 被掩盖的第一步：确定信息源

大书隐喻的背景下，就 macOS 而言，其文件搜索落到今天这步田地——或者说进化到现在的面貌，看你是积极还是消极——几乎可以全部归功于 Jobs。在早年间，计算机的存储空间并不宽裕，Jobs 提出了一个想法：搜索文件，只需要点开一个搜索框，就像你使用 Google 一样简单。

这就是 Spotlight 搜索，并且几乎主导了后来的 macOS 搜索范式，从 Alfred 到 Raycast。

在当时的环境下，Spotlight 无疑是一次人际交互界面领域的普罗米修斯盗火事件，就像文艺复兴时的人文主义者把健康饮食习惯从天主教仪式解放到日常环境中，确实功不可没。

然而在今天，文件数量、类型和体积均剧增，加之 macOS 在黑箱中操纵 Spotlight，结果就是 Spotlight 变得极其不可靠，基本上和薛定谔的 iCloud 一样，已经成了 macOS 上口碑最糟糕的难兄难弟。如果你在 Google 中搜索 Spotlight，推荐项中必然有关于如何修复或废止它的教程。

客观而言，Spotlight 的技术问题系日积月累，然而其方向恐怕从一开始就有巨大偏差，或许当时看起来仅是失之毫厘，但是如今足以谬以千里。这个偏差就是：无视信息源。

可能有读者会问，搜索难道还要先确定目的地吗？难道不是像 Google 那样，往空白搜索框里批哩啪啦一通输入关键词就好了？如果你有这种想法，请责怪 Jobs。他所设计的搜索工具承诺，你可以随时随地搜索电脑上任何角落的任何类型的文件，但我相信 Jobs 上台前一定没有咨询过律师（或者忽视了律师建议），因为 Spotlight 甚至无法处理美国的法律汇编。面对体量稍大的文件集合，Spotlight 的崩溃如厄舍府一般不可避免，而一旦崩溃，往往意味着一切都结束了，整个电脑上的索引都需要重建。

这就是 FoxTrot 的切入点。当你第一次打开软件时，必须手动选择想搜索的文件夹，如果你深受原生搜索方式的影响，可能会认为这简直就是多此一举，直接搜索整台电脑不就好了？！FoxTrot 重提、重申、重新强调信息源，迫使你考虑不同文件夹之间的差异，强迫你从一开始就为不同的信息源设置专用搜索渠道。

区分不同文件夹后，就不必担心出现单点故障而导致整台电脑无法搜索。设想一下，如果你刚刚下载了几份超大的压缩包 ，解压之后，电脑风扇疯狂旋转，接着你连自己的身份证扫描件都搜索不到，多么可笑？但这恰恰是原生搜索过度承诺的必然后果。在最基础的意义上，信息源起码是一种隔水舱。

独木舟确实不需要隔水舱，但是远洋舰船一定需要。

更重要的是，手动设置的信息源（目标文件夹）强化了使用者的来源意识，在他心中默默勾勒了一张搜索的地图，搜索从过去向电子上帝求得神谕的乞讨形式，转向了在赛博世界之中踏实前进的积极形态。

如果你是 Jobs 宣称中每天翻翻相册暗爽生活美满的成功白人男性，那么，FoxTrot 可能和你是两个世界的存在，但是只要你从事严肃工作，就能理解信息源何其重要，它甚至是搜索工作的第一步。正所谓正本清源，但是 Spotlight 搜索尝试打碎或至少掩盖这一真相，无视现实世界之复杂，而那一众萧规曹随的类 Spotlight 第三方搜索工具，自然也好不到哪里去。

通过本节与上一节的两次还原，我们发现，传统的本地文件搜索范式，其实是既不过问目的地，也不过问你想要什么，如果借用我在过往杂文中多次使用的狩猎隐喻，这种搜索范式撑死了只是“整点吃的”。或许傻瓜相机式的搜索是商业上的最佳考量，但代价是牺牲了专业工作。恰恰是因为这些软件存在得太久，以至于我们都忘了可靠的搜索应该是什么样子。

## 被误解的全格式搜索

如果时光回到二十多年前，当时 Apple 可能会采用这样的文案以推广 Spotlight：搜索所有位置，搜索任何文件。

但正如上一节所分析的，搜索任何地方是本地文件搜索的第一个方向性错误。至于搜索任何文件，同样值得反思。

Finder（或 Spotlight）虽说也区分文件类型，可最多只是粗略划分了图片、文档、音乐等几个大类，分类很粗糙，既不包含所有类型的文件，彼此之间也有重叠。例如，文档和演示文稿是什么关系？WPS 算文件算文档吗？新兴的 PDF 替代品 OFD 可以被索引吗？和你的直觉相反，存在已久的 WPS 几乎无法正常检索，反倒是后者，别说 Mac，连手机都能正常浏览。

其实，如果文件搜索工具从一开始就能诚实披露，列明具体支持的拓展名（extension）而非文件类型，就会消除很多误会。

正所谓上梁不正下梁歪，Finder 和 Spotlight 本身尚且含含糊糊暧昧不清，那些在原生索引之上叠床架屋的第三方搜索工具，当然是跟着走弯路，你基本可以看到，这些玩意儿只是笼统说自己“支持格式全”，就像手机生产商每年都说自己摄像头先进、续航优秀、屏幕亮丽，可是没有对比，这些形容词其实空洞无物。

这就是 FoxTrot 和原生搜索的第二个本质区别：在 FoxTrot 中，你可以直接选定需要搜索的文件格式。当然，你可能有一个组织复杂的文件夹，而不同子文件夹还情况各异，但不必担心，你可以让 FoxTrot 在不同文件夹中预先索引相应格式的文件，临搜索时，还可以进一步过滤、缩小范围。

但事情还不只是披露义务那么简单。支持搜索某种格式，并不意味着做得好，而在大多数文件搜索工具中，不同类型的格式其实被分作三六九等——抛开通常需要经过 OCR 才能搜索的图片不谈——即便是司空见惯的文本 PDF 文件，在绝大搜索工具中其实也是二等公民，只要一处简单的换行，就能打碎绝大多数搜索工具的 All in One 大梦（注意：现在我们已经进入了亚文件搜索层面）。注意下图中我手动高亮动“建设规模”，它就在我眼皮子底下，但是因为被换行分作了“建”和“设规模”两部分，通常就搜不到。

换行匹配问题或许是因为时间太久且范围太广，已经被我们当作空气一样选择性忽视，但须知世界上任何一份中文 PDF 文件都无法逃出其引力场。如果你不幸找了一个糟糕的律师，他抱着“既然我搜不到，那么对手估计也搜不到”的心态给你办案，后果可想而知。

其他格式多多少少也有“不幸之人各自的不幸”，例如篇幅较大的纯文本文档或者 HTML，在很多工具里都无法顺畅开启，就连名声显赫的 BBEdit，也无法流畅打开一本《中华人民共和国民法典》，遑论几十上百倍于其篇幅的《中华人民共和国民法典理解与适用》了。我有一段时间喜用速度极快的 CotEditor 检索这些长篇文本，后来抽空收拾了数据库，统一将 Markdown、HTML、Doc 和 PDF 格式的参考资料全部交给 FoxTrot。

当然，包括上文体积的 CotEditor 在内，部分专用搜索工具可以妥善处理一小批文件，而 FoxTrot 的功劳在于，它通过解决一系列别人不愿意劳神费力的问题后，对其承诺的格式一视同仁，把“全格式”三个字铺平、烙印在身上。在 FoxTrot 中搜索一份上千页的 PDF 文件或一份几百万字的 Markdown 格式法律评注，基本没什么差异。一把好的勺子在你吃饭时不应该喧宾夺主，理想情况下，你甚至意识不到其存在，FoxTrot 所承诺的全格式支持正是如此，你没有意识到自己从一种格式切换到另一种。

不过，可靠的承诺其实也是一份免责声明，如果 FoxTrot 没有承诺自己可以搜索哪些文件，你当然也无法指责它。所幸 FoxTrot 也不拒斥 Spotlight 索引，你可以碰碰运气，把后者当作中介，看看能不能覆盖一些 FoxTrot 本身无能为力的格式。

即便如此，部分格式依然需要专用搜索工具，比如 EPUB 格式的电子书，在切实可行的软件中，我只知道 Calibre 能够批量、全文检索 EPUB。好在图书检索中的例外不多——那些颇有创意的论文，当然要先转换成通用的 PDF——就前述情形而言，结合 Calibre 和 FoxTrot，几乎就能覆盖多数读者的书库。

## 当你看到时你才能相信：结果可视化

如果说以上几节需要理性反思才能够消化，那么本节内容则更为直接，任何一个人都能够从感性层面上意识到传统文件搜索工具何其孱弱。

在传统的文件级搜索工具中，你会得到一个文件列表；在传统的亚文件级搜索工具中，你还可以看到相关内容的清单。而在狐狸尾巴中，你随便搜点什么，都会看到一个如直升机仪表盘般复杂的界面。

不急，只要将上图分为左、中、右三部分，就很容易理解。左边是细致的搜索条件，但说实话，如果你平时整理得当，很少需要调整这些设置，只需打磨关键词就好；中间是文件层级的搜索结果列表，展示了相关文件，还标有相关度评分；右侧则是文件内部的搜索结果列表。看似复杂，其实 FoxTrot 只是把文件搜索和亚文件搜索结合起来，相当于把 Finder 和软件内部搜索界面并置。

文件层级的搜索同样拥有多种视图，这基本继承了文件管理工具的遗产，只是多了一个按相关度排序的选项，不值着墨；而右侧的亚文件搜索界面才值得仔细观察。稍微留意，就会发现最右边的滚动条附近有许多彩色细线，这些细线标明了关键词在文件内部的位置，就像是一本书侧面大大小小的书签。多数软件只会告诉你搜索结果在文件第几页，可惜人脑毕竟对文字不那么敏感，惟图形化指示令搜索结果的分布一目了然，你马上就知道一本书在哪些章节重点谈论了当前关键词，需要细细查看。如果再配合书籍本身的目录，两相对照，更容易把握需要着重检查的部分。

某种程度上，这些细细的线条构成了一个独立维度上的文章地图，引导了进一步搜索或阅读的步伐节奏。

不仅如此，FoxTrot 也精心打磨了关键词的呈现方式。当你输入第二个关键词——如果你平时所用的搜索工具支持复数关键词，让你有条件加以比较的话——你会发，FoxTrot 还会以不同颜色区别各个关键词，并且在滚动条上用不同颜色标出各关键词的位置。

设想一下，你的老板找你补签一份劳动合同，你担心有诈（确实有），于是尝试自助。在传统搜索工具中，你一般只能搜索一个关键词，于是你尝试检索 劳动合同，发现相关资料汗牛充栋，无从找起；于是又试了试 二倍工资，也够呛；接着你又换成了 补签 或 道歉，一不小心捅了更大的马蜂窝……而在 FoxTrot 中，事情很简单：输入三个关键词，然后前往滚动条中彩色细线紧密交织的部分（如果懂点语法的话，也可以不看图形化界面，详见下一节）。

这是一种如果你不尝试就永远无法理解的设计，几乎相当于多了一种感官。或许有人会说，用得上各种高级工具的场合，已经超出常理，普通人无需吹毛求疵。或许其他领域还谈得上日常与例外，但是在搜索中，只要已知与未知，而你不可能清楚自己不知道什么，此时没有人能够断言未知是例外。它只是你盲点，这是关于认识论的，而非本体论。

搜索没有长尾。

## 迈向进阶用户的暗号：高级搜索

即便在传统搜索工具中，高级搜索语法也像是进入秘密工会的暗语，普通用户和高级玩家的分水岭。具体内容或许今后再写文章专门介绍为宜，不过请允许我在这里介绍一个多数搜索工具都不支持的特殊语法：附近语法。

上一节我曾提到，如果你想同时搜索几个关键词，可借助可视化的指示线条找到同时包含它们的部分，但如果你愿意稍微掌握一点进阶语法，则可精确设置“相邻”的具体范围——从几十字到几百字——如果两个关键词在此区间内出现，它们就会被狐狸尾巴所捕获。

严格说，FoxTrot 并未直接提供我在图中展示的相邻关键词语法，它默认只有图形搜索按钮和一个繁琐的表达式，但我找到了更轻松的简写：在一对英文花括号中输入文本长度范围，接着再跟上几个关键词——\{字符范围\} 关键词A 关键词B。

语法的好处在于可以和自动化工具结合，不必被图形界面绑死，你甚至可以通过 LaunchBar 等启动器工具快速进入 FoxTrot 数据库。

## 小结：难以掩没的高峰

诚然，本文加诸 FoxTrot 身上的赞誉，也常常被其他人放到别的搜索工具上，甚至是那些本文所批评的工具，也分享了这些赞誉。诚然，正如超前时代的科幻作家斯特普尔顿所言，历史究竟是激流还是缓滩，全凭你的观察尺度，如果将搜索工具的发展曲线急剧压缩，或许暗色模式这种不痛不痒的改进也算得上高峰；反之，若是尽可能拉伸曲线，恐怕很多技术进步也不过尔尔。

然而，FoxTrot 与一般工具的差别，却是无论如何抻拉发现曲线也无法掩没，因为它还原了以信息源为中心的搜索范式，真正覆盖了多数日常文件格式，并且不断以可视化界面和高级语法磨尖利爪。这早已不是时髦小功能的简单堆砌，而是真正的文件搜索范式转变。

因为，FoxTrot 让你看到了以往几乎不可见的赛博区域，触碰了以前几乎不可及的信息比特。就像探照灯照亮了海底区域或望远镜开启了星际空间一样，FoxTrot 让我们重新认识了文件搜索。

---

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