打造一款像谷歌那样的本地搜索引擎
导读
如果说此前的「文件管理」工作是为了有效地保存文件,那么今天要讲的「文件搜索」则刚好是反过来,为的是快速地调用文件。
一说到文件搜索,肯定就会有人说了:“文件搜索有什么好讲的,闭着眼睛我都知道接下来要讲的内容了,无非就是 Everything,又或者 Listary 嘛”。
是的,接下来的文章里会提及到它们,但我还想在工具的层面更进一步,来谈一谈文件搜索的本质,以及如何建立起自己的文件索引系统。
一、文件索引系统
Windows 文件索引系统的建立,无非有两种方法:一是按分类查找,二是用工具搜索。(Windows 下没有标签系统,暂不加入讨论)
当关键信息明确时,用工具搜索的方法速度更快。比如我想找周杰伦的歌曲《告白气球》,通过工具搜索“周杰伦 告白”,很快就找到“周杰伦_告白气球.mp3”这个文件了。
用工具搜索的优点在于精准定位,而缺点是需要我们记住文件的名字,这不是一件容易的事,通常我们只能记得最近使用或者经常使用的文件。而且如果文件是从网上下载的,文件名称通常要么是乱码,要么就是你不知道名字,用工具搜索也就无从谈起。
而当关键信息不明确时,按文件的分类查找是更好的选择。比如我想找流行风格的音乐,在资源管理器的分类中就能找到,比如"E:\音乐\港台音乐\周杰伦_告白气球.mp3"。
按分类查找的优点在于所见即所得,而缺点是有可能不知道文件存放在那里的,于是在众多的文件夹层级中去查找,就变成了一件麻烦的事。
不过,这两种方法的缺点都可以通过更好的命名和分类来规避,文件的命名和分类很大程度上决定了文件索引系统的优劣,因为文件搜索的过程,就是将现有的文件命名和分类重复一遍。
那如何才能做好文件命名命和分类呢?
二、按分类查找
在前面的文章中,我们将时间管理的观念纳入到文件管理中来,将文件管理分成了「收件箱、工作台、档案库」三个阶段,而这三个阶段就是我们按分类查找文件的入口。
1、减少文件入口
按分类查找文件慢的第一个原因是文件入口太多。Windows 默认会有「C、D、E、F」4个磁盘,和「下载、桌面、文档、图片、音乐、视频」6个文件夹,这 10 个地方都可以做为文件查找的起点,过多的选择让人无所适从,每次查找文件时都会想一下文件在那个文件夹。
我们可以将「收件箱、工作台、档案库」这三个地方,固定在资源管理器上的“快速访问”里,将它们做为文件的入口。
比如「下载」文件夹是收件箱的入口,这里的文件是待处理的文件,需要的频率高,因此我们还可以将「下载」文件夹下的子文件夹也固定在“快速访问”里,然后用一个名称是“横线”文件夹做分割。
而「桌面」则是工作台的入口,这里的文件是处理中的文件,如果有多平台同步协作的同步盘也可以放在这里,还可以将正在处理但没有处理完成的项目文件,比如可以将工作文件夹也放在这里。
而 E 盘则是档案库的入口,这里的文件是已完成的文件。(可以将 E盘和 F盘合并,E盘档案库、C盘系统盘、D盘软件盘,如果你不会分区,这一步可以忽略)。
![20200712195410](/Users/runningcheese/微云同步助手(406417036)/Desktop/C14 图片/20200712195410.png)
然后再忽略或者折叠「文档、图片、音乐、视频」这四个文件夹,侧边栏里如果有其他多余的内容无法删除,比如 Creative Cloud Files、3D Objects 等内容,可百度一下关键字“资源管理器 XXX 删除”,或者回复关键字 C14 查看方法。
2、减少文件夹层级
按分类查找文件慢的第二个原因是文件夹层级多。
在前面的文章里,对档案库的管理,我们还纳入了知识管理的观念。通过杜威十进制分类法,任何文件都能有条不紊地找到存放位置,同时为了减少文件夹层级,我们将二级分类直接放在了E盘根目录下,让文件夹层级控制在三层以内。
同时还给文件家添加上了编号,编号的作用可以把按分类查找和用工具搜索的方法结合起来,比如我们想要在「 E:\710 - 音乐\712 - 港台音乐」下面找流行音乐,使用工具 Listary 搜索 712 可以立即打开「712 - 港台音乐」这个文件夹,这样就减少了操作步骤。
![20200712195410](/Users/runningcheese/微云同步助手(406417036)/Desktop/C14 图片/20200712195410.png)
3、打开/保存对话框增强
大多数软件都会涉及打开和保存这两个操作,而这两个操作无一例外都需要使用 Windows 的文件对话框,除了用上面提到的方法,还可以软件 Listary 来增强文件夹的定位功能。
比如文件夹搜索:
当出现打开/保存对话框时,对话框的下面会显示 Listary 的搜索框,输入关键词搜索就可以将对话框打开的目录切换到想要的文件夹中去。比如想保存到「E:\730 - 摄影」文件夹中去,这时在搜索框里输入 730 即可将打开的路径切换到这里来。
比如收藏夹和历史记录:
Listary 的收藏夹功能就像是浏览器的书签,不但可以在出现对话框时双击或中键点击呼出,在桌面或者任意文件夹内也可以。但不一样的是,它还可以同时展示子文件夹。
而 Listary 的历史记录功能,可以让我们快速切换到近期使用过的目录文件夹,方便快速定位,在另存文件时尤为方便。
一键切换到正在浏览中的文件夹:
Listary 还有一个按快捷键 Ctrl+G 将对话窗口会定位到最后打开的文件夹的功能,这个功能很实用,也十分解决痛点。同时,在打开对话窗口的过程中,如果你用资源管理器打开某个文件夹时,这时对话窗口的路径就会变成了你刚刚打开的文件夹。
三、用工具搜索:文件名搜索
通过文件名来搜索文件是最常见的方法,文件的命名是决定搜索结果的关键。
但如果文件太多时,文件名往往难以记住,比如想找 Taylor Swift_Blank Space.mp3 这首歌时,使用工具搜索时发现不会或者忘记了英文怎么输入,但如果你已经做好了分类,知道这首歌放到了「 E:\音乐\欧美音乐」下面,那么在搜索工具下输入“欧美音乐”即可打开这个文件夹来查找。
而编号的加入,可以让文字输入变得更加轻松,比如「 E:\710 - 音乐\712 - 欧美音乐」在搜索工具下输入 712 即可打开这个文件夹来查找。
1、快速搜索
Listary 是一款快速的搜索软件,只需要输入关键字就能到瞬间出结果,它很好的弥补了 Windows 上搜索羸弱的缺点。只需要按两次「Ctrl 键」或者「Alt+~(可自定义)」就可以调出 Listary 的搜索框进行搜索。
Listary 的搜索有三个特性,一是支持模糊搜索,比如打开 PowerPoint 可以只输入“pp”,Photoshop 可以输入“ps”,而如果想要的结果不是应用程序时,在搜索词后再加上空格就可以。
第二个特性是支持中文拼音搜索,只需打出中文拼音的首字母就能进行搜索,比如搜索“网易云音乐”时只需要输入“wyyyy”就可以匹配了,甚至只输入部分内容也可以,比如“网易云”的首字母“wyy”,又或者是“云音乐”的首字母“yyy”。
当搜索出结果后,按「Ctrl + C」可以复制选中内容,又或者可以拖拽搜索结果到 QQ、微信、Photoshop 等应用窗口上,按「Ctrl+回车键」 还可以打开文件所在文件夹,按「方向键 → 」则会显示操作菜单,包括打开所在文件夹、复制、剪切、复制文件路径等内容。
第三个特性是 Listary 拥有类似于输入法智能排序的功能,当搜索有多个结果时,使用回车键打开哪个结果,那么下次输入同样的关键词时,它就会排在第一位(用鼠标点击没有这样的效果)。
2、当前文件夹搜索
在任意文件夹下直接打字(无需呼出 Listary 搜索框),在右下角就会开启匹配选择模式,同时光标会自动跳转到匹配的文件或者文件夹上。如是当前文件夹没有匹配结果,那么就会匹配子文件夹里的内容,如果还是没有的话,那么就会开启全局搜索模式。
3、过滤搜索结果
当搜索的结果太多时,我们可以设置搜索范围,将一些系统文件和缓存文件排除在外,这样搜索结果就不会出现大量的乱码文件了。
另外,我们可以通过文件格式来过滤搜索结果。
Listar 自带了 folder、file、doc、pic、audio、video 的过滤方式,为了减少关键字的输入,我们可以把它们修改为 fd、f、d、p、a、v ,然后在它们后面加上冒号 : 就可以进行过滤了,而且过滤关键字可以先输入,也可以后输入,比如「fd: 810」和「810 fd: 」的搜索结果是一样的。
同样,我们还可以添加搜索范围的过滤方式,比如给搜索结果限定在 C盘、D盘、E盘上的的过滤关键字「 c:、d:、e: 」。
4、关键字搜索
能自定义关键字搜索是 Listary 的又一大特色。「Web」可以指定特定的搜索引擎来实现全局搜索,在前面的文章中已经有过介绍,「目录」可以指定关键词来打开特定的文件夹,「命令」可以通过关键词来启动一些命令。
而「自定义」是体现 Listary 强大的地方,它可以用来调用其他的软件。
比如 Listary 不足的地方是不支持正则表达式,无法使用通配符搜索,另一款搜索软件 Everything 正好可以弥补这一点,通过自定义关键字,在参数中输入 -s "{query}" 即可调用 Everything 来搜索。
不过在日常的使用中,Listary 就可以搞定大部分的搜索需求,只有在一些特殊情况下才会用到 Everything。比如搜索某一个特定目录下的文件,一种方法是在 Everything 选项里勾选“集成到资源管理器右键菜单”,那么在右键菜单上就会出现 Everything 的选项。
另一种方法是在 Listary 中设置关键字"ee" ,添加搜索参数-s " """%path%""" {query} " 来调用 Everything 搜索。
使用时需要注意的是,无需调出 Listary 搜索框,而是直接在当前目录输入"ee",然后输入要搜索的内容。
Everything 在搜索图片时也很有帮助,因为我们需要打开查看后才能知道是不是我们想要找的图片,Everything 自带了图片预览功能,在 Listary 中设置关键字"ei" ,添加搜索参数 -s pic:{query} 来调用 Everything 搜索,接按住「Ctrl+鼠标滚轮」可以切换到图片的浏览模式,最终筛选出想要的图片。
四、用工具搜索:全文搜索
最后来说一说全文搜索,李笑来说在 Mac 上的 Spotlight 全文检索功能,会自动索引 TXT、Word、Excel、PPT、PDF、EPUB 等主文档里的内容。
有了全文检索,我们只需对文档内容里有点印象,记住一些关键字就可以搜索得到了,甚至连文件名也无需记住这,于是我们买书时可以尽量只买电子书,在有需要的时候,搜一下能能准确的找到它们,我们由此建立起属于自己的电子图书馆。
Windows 下全文搜索一直是个弱项,所以诞生了诸如 Recoll、DocFetcher、FileLocator 等全文搜索软件,而且最近又出现了一款新晋的全文搜索软件 AnyTXT Searcher,它是 Everything 作者推荐的全文搜索工具,界面和使用方法都和 Everything 很像,更重要的是它的速度也非常的快。
AnyTXT Searcher 内置了强大的文档解析引擎,在第一次启动时会自动创建索引,大概意思就是将电脑里的所有文本文档索引一份,包括常见的Word、Excel、PPT、PDF,Epub 等,然后储存为数库据,此后搜索就是搜索这个数据文档了,这样使用 AnyTXT Searcher 就可以快速查找电脑上任何文本内容了。
如果有文档新增或者删除,AnyTXT Searcher 会自动重新索引,频率可以自定,默认是一小时重新索引一次,首次打开的索引时间可能会长一些,后续就快了。
软件支持模糊匹配搜索和精确全字匹配查找,可以指定搜索范围(全部硬盘/指定盘符),可以指定搜索的文件格式类型等。搜索后,使用快捷键 Ctrl + E 可以打开文件所在目录。
如果是一些其他的文本文档,则需要添加自定义文本文件,比如 .md 文件属于文本格式,我们需要将 .md 格式加入索引。为了减少索引数据库的大小,我们可以将一些系统的或者软件缓存的文本文档,对于我们的搜索来说没有帮助,我们可以但排除一部分文件来加快全文搜索的速度。
同样,在 Listary 中设置关键字“a”,添加搜索参数 -atgui /s {query} 即可调用 AnyTXT Searcher 进行搜索。