很好奇各位大佬的中文搜索方案?

如题。最近在把 Obsidian 的库卡片化,文件数目多了不少,感觉自带的搜索已经有一点卡顿了(系统是 macOS Sonoma,Obsidian 版本是 1.5.12,还不是很明显)。

尝试了一下 Omnisearch 插件,但是不得不说对中文的支持确实不佳,安装中文分词插件以后也是。

所以很好奇,大佬们一般使用什么方案进行中文的高效检索?

以及一个想法:能在本地部署一个专业的搜索项目,让 Obsidian 乃至其他文本类软件都调用这个项目的接口进行搜索吗?

1 个赞

想法很好,可以搞一个全文索引。

可以考虑用Anytxt做全文搜索

1 个赞

FoxTrot Professional Search,或者把Obsidian库索引到DEVONthink中,这两个方案体验都不错。

用 Another Quick Switcher 调用本地 ripgrep 进行全文搜索

你好,我个人认为对于自己的资料检索,最好不依赖于平台、插件,采用最朴实无华的方式最佳!
“小说” 、“电影” 、“肖申克”,这3个关键词都能得到电影《肖申克的救赎》,但可能冗余(提到小说、电影的笔记都会出现)固而此时采用“前缀”,可使检索结果精确。譬如随便来一个我省特产🀅,在检索的时候使用:“🀅小说改编电影” 就能确得到《肖申克的救赎》,前提仅仅是在写笔记时在《肖》这部电影的笔记页面写一行:🀅小说 改编 电影。
用一个符号,或者一张图、一句词诗就能使检索结果精确,我甚至能用TXT格式的记事板完成对笔记的检索,电子笔记最重要的就是避免冗余,精确检索,符号的作用是使笔记内容跟“检索词”分离,可以适当多几个(学习型、实践型……)这是我的方法,也是我经年笔记工作觉得最有效的一条经验,分享给您:smile:抛砖引玉。

@zhouwei15301 @dayu @F8a 感谢几位大佬的推荐。几个项目我都去试了下(AnyTXT 除外,没有 Windows 电脑 qaq),感觉各自都有优点吧。不过对于我这个体量的笔记而言,还是稍显沉重了点(笑)

@wilson @ADYR禅云 感谢两位大佬。窃以为二位的观点有相似性,都是在笔记内容和标题之外使用笔记某种形式的元数据进行搜索(乃至于全面转向元数据),感觉这也是很好的方法。

TL;DR

不太清楚怎么把一条回复手动置顶,可能是我没有相应权限。

这条回复根据目前大佬们的回复更新,是我进行的粗疏总结和扩展,以供后来的朋友查询。

对于笔记搜索的「元方法」,大概可以使用笔记内容和标题(最符合大家直观的)和一些形式的元数据(例如摘要,关键词等)。如果算法足够智能,或许也可以采用语义搜索、模糊搜索这些方案(构建比较困难,而且迁移性不佳)。而且在库特别大的情况下,全文关键字很可能就会力不从心了。

目前大佬们推荐了以下方案:

  • FoxTrot Professional Search(macOS,专业文档搜索)
  • DEVONthink(macOS,感觉接近专业文档管理)
  • AnyTXT(Windows,尚未尝试)
  • Obsidian another quick switcher + ripgrep(桌面端全平台,我目前的方案,调用的是命令行工具 ripgrep,对于中文相当高效准确,当然搜索 PDF、语义搜索、模糊搜索、拼音搜索等很难实现。)

个人感觉,对于较小体量的笔记,Obsidian 自带的搜索还算够用;对于超大体量的笔记,可能需要考虑一些专业的搜索方案,比如 Meilisearch 一类的。问题主要就出在像我这样不多不少的笔记(当然此处讨论都针对的是中文笔记,您要是用英语记笔记那直接上 Omnisearch。It just works)。

700w-800w字的库,不懂有没有说服力…

从我个人的使用经验来看,全文关键字还是太慢了。这里不是说通过各类工具检索得慢,而是说构建检索式、等待返回结果、再从众多结果中找到自己真正所需内容这整个过程快不了。少说也得奔30秒以上去,这和我的使用场景(5-10秒要能定位库中大部分内容)不符。

至于基于算法的检索,无论是本地语义还是大模型,全文索引是个很难搞的问题(基本需要几个小时起步,没有夸设备迁移性)…

1 个赞

您这个库的体量,属实是有点……惊世骇俗了(

感觉这么大体量的库的话,恐怕就得多点多维元数据标签 + 本地数据库 + 本地搜索引擎了,或者再加上人脑(现在的神经网络或许也可以,但是很难在个人计算机里运行)辅助定位……(没学过数据结构,可能有知识性错误,请见谅)

不过大部分 Obsidian 用户应该也不会有这么庞大的库,很好奇大佬您是怎么进行日常维护的?

我目前用这样的三行来做工作流:


基本只用Obsidian的同行检索就能解决:
我通常还会在符号前加上序号(大部分主要笔记才加),这样的分类组合下来在检索之前就已经节约了很多检索时间,对大部分人的笔记量而言完全够用。
当检索效率不够的时候,我采用分库:image
当前打开的库名Exe,在Exe库中的Small文件夹也是一个Ob库,如果笔记量真的达到无法控制的地步,那就去Small进行检索,如果一个子库不够那就两个。通过符号、序号、子库,我认为再多的笔记也完全能掌控,并且这是完全由自己量身定制的规则。

1 个赞

如果你能允许其它软件的根目录成为Obsidian库的一个文件夹,在记笔记的时候使用自己的检索规则,就能实现在Obsidian中检索所有笔记,并且不止文本,或许你可以建立一个专门用来存放电影的库:我的意思是将电影文件存放在这个子库的“附件”文件夹内,新建立一个子库可以避免污染主力库。我并没有这样做,因为我的原则是从简,我使用了序号,如:
image

1 个赞

从硕士到工作,所有要用的知识都往里存 :rofl:

具体来说就是用了很多信息组织方法去辅助搜索,这些方法还找不到才转向全文检索

1 个赞