从 Windows 迁移到 macOS 后一直想有一个 macOS 的 Everything ,踩了很多坑之后终于实现出来了(磨磨唧唧写了 N 久)。
我自己用了有一段时间了,确实帮我解决了 Spotlight 搜索不到一些文件的问题,而且速度也够快,我自己很喜欢,所以分享给大家。
实现过程中走了很多弯路,如果最近事情不多的话,找时间分享一下踩坑历程和实现思路 :D
目前项目已开源:https://github.com/ldm0/cardinal,大家可以在 release 页面下载。

1
Mangozhen 23 天前 下载了,来试一试。
|
2
astrodaw 23 天前 体验不错,略微有点卡顿但是可以接受。
我此前一直用的 Alfred 的 find 命令来替代 macOS 的 Everything ,和楼主的软件使用体验大差不差。 |
3
Mangozhen 23 天前 @Mangozhen 非常棒的一个 APP ,确实有 Everything 那个味儿了。初步体验了一个小时,有以下反馈:
1. 初始化要的时间比较长,我这边大约 400 万个文件,花费了差不多 45 分钟来建立索引; 2. 当前版本似乎不支持后台运行。推出后立即进入,会卡顿一下(大约是更新索引)。 3. 特别想要能够自动进行关键词匹配,而不是完全匹配搜索。 |
4
dxppp 23 天前 支持一下
|
5
ldm0 OP 感谢反馈~
> 初始化要的时间比较长,我这边大约 400 万个文件,花费了差不多 45 分钟来建立索引; 这个还比较奇怪,正常不会有这么慢,我的电脑 700 万个文件应该是 11 秒索引完。有插存储卡之类的东西嘛。 > 当前版本似乎不支持后台运行。推出后立即进入,会卡顿一下(大约是更新索引)。 是加载磁盘里的缓存。 > 特别想要能够自动进行关键词匹配,而不是完全匹配搜索。 是说分词+模糊匹配嘛 |
6
LLSY 22 天前 下载了,star 了,支持一下
|
7
rj 22 天前 下载支持
|
8
Mangozhen 22 天前
@ldm0 对的。在 Spotlight 上,我只需要舒服“A B”,会自动帮我把包含“A”和“B”两个关键词的文档抓出来(包括文档内容)。
这个功能我真的离不开。因为很多时候我都是靠记忆的关键词来检索很久没用的文档。这也是为什么我至今一直使用的 Spotlight ,而没有使用其它类似的工具。 |
9
duxiansen 22 天前 我的索引也很慢,看了下,好像是在检索 iCloud 云盘的时候,触发了下载。后面能不能增加屏蔽某些目录的功能?
|
10
ldm0 OP @Mangozhen
> 这个功能我真的离不开。因为很多时候我都是靠记忆的关键词来检索很久没用的文档。这也是为什么我至今一直使用的 Spotlight ,而没有使用其它类似的工具。 这个软件主要提供了文件路径子串搜索(比如匹配"/Applications/Xcode.app/Contents/Developer" 路径中的 ".app/Contents/Develop")和正则搜索的支持,这也是 Everything 的最核心功能。 如果要实现分词,搜索的能力感觉就不那么“确定性”了,用起来心里会虚虚的,和设计的初衷有些差别。SpotLight 可能会出现有某个文件但是搜索不到或者搜索不全的情况。Cardinal 和 SpotLight 的最主要差别就是其用起来的感觉是“确定性”的,能搜到就是有,搜不到就是没有。 比如说我开发过程会产生一些细碎文件,SpotLight 在这种场景下更新索引总是不够实时,容易找不到文件,Cardinal 就 100%能找到,只要存在于文件系统上的文件都不会丢失。 因为面向的需求不一样,所以形态和实现都会有差别~ |
11
ldm0 OP @duxiansen 这个我操作一手。检索 iCloud 应该不会下载(因为只是 readdir),应该是缩略图获取才会触发。
这个我用 OneDrive 的时候发现了类似的情况,之前在代码里加了判断。我本地测试一下 iCloud 。 |
12
ziyanghua 22 天前 star 支持一下
|
13
ldm0 OP @duxiansen https://github.com/ldm0/cardinal/releases/tag/v0.1.1 发了个新版,可以再试试看~
|
14
duxiansen 22 天前
这修复的效率真高。试了下,现在索引很快了
|
15
Heanes 22 天前
没有排序选项吗?恳求加 feature
|
16
ldm0 OP @Heanes 由于 APFS 的 lstat 接口太慢了(被 NTFS 暴打),没有办法在构建索引时全量获取文件 metadata 。如果苹果不优化的话,没有办法全量排序。因此折中提供了一个 events panel (里面有最新更新的文件列表)
但是搜索结果的排序我会加下(比如搜索结果小于 1w 个时可以根据 path/mtime/ctime 排序),这个在 todo list 上。 |
17
clementewy 22 天前 这个厉害了,能搜 smb 文件,虽然还比较慢
|
18
clementewy 22 天前
真好用,能否增加目录屏蔽功能,很多目录其实不需要索引。
|
19
ldm0 OP @clementewy 可以~晚上下完班加一手
|
20
rainfox 22 天前
已经放弃 Intel 版本的了吗?
|
21
pyre 22 天前
太棒了,晚上回去用起来了再来反馈
|
22
asdfasasdf 22 天前
用起来很好,希望有个像 Alfred 的 in 功能,可以匹配文本中的字符串
|
24
blushyes 22 天前
牛啊大佬,正好如快的 mac 的文件搜索还没实现,有空学习一下,让如快支持下 mac 的文件搜索。
|
25
yuuluu 22 天前
学习一下,先给一个 star
|
26
avrillavigne 22 天前 via Android
小星星给你
|
27
MzM2ODkx 22 天前
加颗星
|
28
Dennmy 22 天前
太支持了,不得不 star 了
|
29
lekai63 22 天前
感谢分享!! 棒呆!
|
30
SpringHack 22 天前 围观🐶
|
31
Spxg 22 天前 via iPhone
太强了,已经在用了,很好用
|
32
xlpxx 22 天前
能加个英特尔版本的吗😂
|
33
ldm0 OP |
34
virus384 22 天前
已 star
|
36
prudence 21 天前
索引很慢,,上面也不少人说慢,,可以弄个类似索引开关 debug 看看正在索引什么呢 再或者以文件夹做计时器 大于几百毫秒或 1 秒的显示一下 我打开几十秒确实索引了 1000 多万 但是 1000 多万开始就慢了 1200w 到 1700w 花了七八分钟 还在索引
|
37
xxnemesis1 21 天前 via iPhone
MacBook Air M4 ,114 万个文件,正在初始化了十多分钟,不知道什么情况
|
38
xxnemesis1 21 天前 via iPhone
@xxnemesis1 二十分钟了,还在初始化…
|
39
ldm0 OP 正常百万级的文件索引是在 10 秒内完成的。
索引逻辑是并行遍历文件系统(主要是 readdir),可能是访问某个文件夹阻塞了。 主要问题在于我这边的几台机器,包括我朋友同事的机器索引都比较快无法复现这个问题,目前没有什么头绪。 @xxnemesis1 @prudence @rainfox 有联系方式么,我可以单独出个 debug 包看看什么文件访问卡住了。我的 WX 是 TERNMjMzMzMzMw== |
40
MichaelChen007 21 天前
支持,但是我试了好几次,索引实在太卡了,一直没索引完。app store 有一个 profind ,不用索引,速度很快了。
|
43
chachi 20 天前
hi ,如果有可能能否支撑 everything 的 etp 协议,并且能自定义映射到本地的路径。这样就能无缝搜索 winnas 上的文件,并且使用 smb 路径打开了。
谢谢! |
44
theo 20 天前
确实初始化有点问题,索引到 12,577,071 个文件时就卡住了,从上午到现在卡了一整天没有进展,重启也不能解决问题。
|
45
ldm0 OP @theo 试试最新版呢,修复了一个索引卡死的 bug https://github.com/ldm0/cardinal/releases/
|
46
HuberyPang 19 天前
star 支持,期待后续的开完过程分享
|
47
Vaspike 17 天前
很棒
|
48
Vaspike 17 天前
@Vaspike 补充一句题外话,我自己开发过程中发现, 有`Accessibility`权限的应用能获取采集到的信息是恐怖的, 需要这个权限的应用最好是开源, 其次是你认为放心的公司闭源产品, 其他的最好不用
这个`full disk access`权限目前我还没使用过, 但应该差不多 |
49
Vaspike 17 天前
@Vaspike #48
补充一句题外话,我自己开发过程中发现, 有`Accessibility`权限的应用能获取采集到的信息是恐怖的, 需要这个权限的应用最好是开源, 其次是你认为放心的公司闭源产品, 其他的最好不用; 这个`full disk access`权限目前我还没使用过, 但应该差不多 |
50
longline 16 天前
好用!!!
|
53
devoteever 15 天前
请教一下, 这个软件可以集成到 raycast 吗?
跟 raycast 自带的搜索比有什么优势 |
54
ldm0 OP @devoteever 不太了解怎么集成。
优势是更快,更准,更全(刚刚下载横向对比了一下)。 |