夜雨聆风学习资料网

ARTICLE · 1157943

20 万份文档里找一个词,我以前的 40 分钟现在只要 0.2 秒

20 万份文档里找一个词,我以前的 40 分钟现在只要 0.2 秒
我电脑里的办公文档,多到自己都数不清。
Word、Excel、PPT、PDF 混在一起,攒了好些年,散在好几个目录里。里面写过方案、写过汇报、写过各种记录,也写过一堆我自己都忘了写过的东西。
麻烦就在"忘"这个字上。
我经常只记得内容,不记得文件名。比如"那份提到过某个数字、某个说法的文档,到底是哪一个"。以前的办法只有一个:靠记忆猜文件名,猜不对就一个目录一个目录地翻。运气不好,半小时就没了。
后来我给自己做了一套本地全文检索。现在的流程是:随手敲两个词,回车,零点几秒出结果,命中的字在预览里直接标黄,双击就打开原文件。
这篇文章讲三件事:为什么系统自带的搜索救不了你;全文检索到底是怎么做到的;以及它能做什么、做不到什么。

一、系统自带的搜索,为什么不够用

因为它只认文件名。
Windows 自带的搜索,默认只在文件名、路径和部分属性里找,不进文档正文。Word 里写过什么、PDF 第 37 页提到过什么,它一无所知。
于是你会遇到两种结果:搜出来一堆名字里带关键词的文件夹,打开一看都不是你要的;或者干脆什么都没搜到。
还有一个更现实的问题:它慢。目录一多、盘符一大,"正在搜索"能转很久——因为它是一个文件一个文件去看的。

二、所谓"全文检索",其实就是三步

第一步,抽正文。把 26 类办公文档里的文字抠出来,只留文本,图片、排版、页眉页脚全都不要。这一步最慢,但只需要做一次。
第二步,建索引。把正文切成两字一组的词组,做出一张"哪个词 → 出现在哪些文档里"的倒排表。搜索引擎用的就是同一套原理。
第三步,查询。你输入两个词,程序不是去几万个文件里逐个翻,而是直接查那张倒排表,几毫秒就知道该拿哪几篇出来。
所以"秒级"不是优化出来的,是这套结构的必然结果——只要索引建好了,查询有多快基本跟文档总量无关。

三、到底有多快

先说清楚:下面是量级参考,不是跑分承诺。电脑不同、文档多少不同,结果会有差别。
常见关键词的检索,通常在 0.1~0.3 秒之间返回。它跟文档总量关系不大——两万份和二十万份的差别,远没有你想象的那么大。
会明显慢一些的有三种情况:
· 通配符查询(比如"汇总*报告"):要遍历一遍词表,通常一到两秒,第一次碰到还没读过的数据时可能到三秒。
· 什么都不填、按大小列出全部文件:要一条条数过去,文档多的时候一两秒。
· 第一次建索引:按小时计(这一点下面还会单独说)。
另外两件事直接决定用起来"顺不顺",值得单独讲:
启动时窗口立刻就能用,索引在后台继续挂载;挂载期间输入的关键词会自动排队,挂完立刻补跑,界面不会卡住。
打开一份几十万字的大文档需要一两秒,但解析在后台进行,界面照样能操作;同一篇再打开走缓存,几乎瞬间。

四、它能查什么

格式:Word(doc / docx / dot / wps / rtf)、Excel(xls / xlsx / xlsb / et / csv)、PPT(ppt / pptx / dps)、PDF、OFD、txt、md、Visio、OneNote,一共 26 类。
多词关系可以切换:空格分开的多个词,既能选"都要包含",从窄到宽找得准;也能选"任一包含",放宽条件扩大范围。选择会被记住。
通配符:星号匹配任意内容(最多跨 128 个字),问号最多匹配 1 个字。
四项筛选:类别、模块、年份、格式,每一项都可以多选。而且不管你上面的关键词切成"与"还是"或",筛选永远是硬条件,不会跟着被放宽。
折叠同名副本:同一份文件被复制过十几遍是常态,默认折叠显示,被折叠的份数会如实标注。
空搜索:什么都不填直接点搜索,按文件大小从大到小列出全部文件——用来找"谁占了我的硬盘"意外地好用。
结果里选中一条,右侧直接显示正文预览,命中词标黄底并自动滚到第一处,按 F3 在命中间跳转;双击就用默认程序打开原文件。

五、快在哪,也说清楚慢在哪

慢的地方有三处,我不打算藏:
第一,通配符查询偶尔会慢。原因上面说过,是词表遍历加上第一次读盘。
第二,扫描件和图片里的字,查不到。如果 PDF 是扫描出来的图片、或者 Word 里插的是截图形式的表格,正文里就没有可检索的文字。它不做 OCR,这是明确的能力边界,不是偶发问题。
第三,第一次建索引很慢。几万份文档抽正文加建索引,是按小时计的,期间占 CPU 和磁盘。但这是一次性的;之后日常用"更新索引",只处理新增和改动的文件。

六、关于隐私

全程在本机完成。程序不联网、不上传任何文件,也没有账号,不需要登录,不要手机号。
索引和正文库就是你自己目录下的几个文件夹,可以整体复制到别的电脑继续用,也可以整体删掉。
换句话说:你放进去的东西,只有你自己能看到。
六、关于下载

通过网盘分享的文件:localfile

链接: https://pan.baidu.com/s/1UHWIQlB89L5QeH_T8OTHVQ

提取码: 1q9j

相关学习资料