背景
本人硬盘存储的文档有几十G(还没算上图片),大部分时间都是在吃灰。
试用过一些知名的搜索软件如 everything,根据路径或内容进行关键词匹配,很多场景下是够用的,不过对于我来说不太够,因为只有近期使用过的文档才有可能记得住零星关键词,更多的情况是对这些文档完全没印象。
另外,图片、音视频等内容就只能根据路径来搜索了。
需要一种能进行更模糊但是意思相近即可命中的搜索方法,向量搜索可以做这个事情。
目前市面上貌似没有类似的软件,所以我写了一个
基础功能
- 不需要精确匹配,意思相近即算命中
- 本地优先,最好不用联网
- 响应时间快,最好控制在100ms内
- 监听文件异动并自动索引
- 支持对文档、图片、音频及视频的内容进行搜索——真•文件内容搜索
- 能长时间稳定运行
基于跨平台目标及语义搜索特性来考虑,不做everything那种默认全盘搜索的功能
技术选型
其实主要就是语言选型
Python 、 C# 、 C++ 、 Rust 四选一
一开始想用python,不过python做桌面端有点勉强,综合考虑之后下选了 Rust。
整体基于Tauri2,Rust主要负责实现功能,界面用的是vue3+typescript
架构
索引过程:
保留对接私有化部署模型的能力
查询过程:
最终效果
剩余问题
图片、音频的解析依赖云端模型,需要改造成本地
关键词精确查找文件内容
源码
核心代码:
scanner.rs
indexing_template.rs
watcher.rs
完整源码已放在github:mango-desk