Trilium Notes 高级搜索语法进阶:精准定位知识的15个技巧
你是否还在为海量笔记中找不到关键信息而烦恼?是否曾因搜索结果杂乱无章而浪费时间? Trilium Notes 的高级搜索功能将彻底改变你的知识管理方式。本文将揭秘15个实用搜索技巧,帮你精准定位所需内容,让知识检索效率提升10倍。读完本文,你将掌握标签筛选、内容匹配、逻辑组合等高级技巧,轻松驾驭复杂知识体系。
一、标签搜索:快速定位分类内容
标签(Tag)是 Trilium Notes 中最常用的分类方式,通过标签搜索可以快速筛选特定类别的笔记。基本语法为 #标签名,例如 #project 可搜索所有标记为 "project" 的笔记。如果需要精确匹配标签值,可以使用 #标签名=值 的格式,如 #priority=high 搜索优先级为高的笔记。
相关实现代码可参考 spec/search/parser.spec.js 中的测试用例,该文件定义了标签比较表达式的解析逻辑。
二、否定搜索:排除不相关内容
当你需要排除特定标签的笔记时,可以使用否定语法 #!标签名。例如 #!draft 会排除所有标记为草稿的笔记。同样,对于关系属性,可以使用 ~!关系名 来排除相关内容,如 ~!reference 排除引用关系的笔记。
这一功能在 spec/search/parser.spec.js 中有详细测试,展示了如何解析属性否定表达式。
三、逻辑与:同时满足多个条件
要查找同时满足多个条件的笔记,可以使用 "and" 关键字或直接并列条件。例如 #work and #urgent 或 #work #urgent 都会返回既标记为工作又标记为紧急的笔记。
解析逻辑与表达式的代码位于 spec/search/parser.spec.js,展示了如何处理显式和隐式的 AND 关系。
四、逻辑或:满足任一条件
当你需要查找满足多个条件中任意一个的笔记时,可以使用 "or" 关键字。例如 #work or #personal 会返回标记为工作或个人的笔记。
spec/search/parser.spec.js 中的测试用例展示了逻辑或表达式的解析方式。
五、括号分组:复杂条件组合
对于更复杂的搜索条件,可以使用括号进行分组。例如 (#work and #urgent) or (#personal and #important) 会返回紧急的工作笔记或重要的个人笔记。
相关实现可参考 spec/search/parser.spec.js,该测试展示了如何解析包含子表达式的复杂查询。
六、全文搜索:内容关键词匹配
Trilium Notes 支持对笔记内容进行全文搜索,只需输入关键词即可。默认情况下,搜索会匹配笔记标题和内容中的关键词。例如 hello 会返回所有包含 "hello" 的笔记。
全文搜索的实现逻辑在 spec/search/parser.spec.js 中有详细说明,展示了如何解析全文搜索令牌。
七、属性与全文混合搜索:精准定位
你可以将属性搜索与全文搜索结合使用,以获得更精确的结果。例如 #project hello 会返回标记为项目且内容包含 "hello" 的笔记。
spec/search/parser.spec.js 中的测试用例展示了如何解析这种混合表达式。
八、比较运算符:数值和日期比较
Trilium Notes 支持使用比较运算符(=、!=、>、<、>=、<=)进行数值和日期比较。例如 #score>90 会返回分数大于90的笔记,#created>2023-01-01 会返回2023年之后创建的笔记。
九、关系属性搜索:关联内容查找
对于关系属性,可以使用 ~关系名.属性=值 的格式进行搜索。例如 ~author.name=John 会返回作者姓名为 John 的笔记。
spec/search/parser.spec.js 中的测试用例展示了关系属性搜索的解析逻辑。
十、搜索结果排除已归档笔记
默认情况下,搜索结果会排除已归档的笔记。这一行为由 spec/search/parser.spec.js 中的代码控制,通过检查 "isArchived" 属性来实现。
十一、组合条件与全文搜索
你可以将属性条件与全文搜索结合使用,以实现更精准的定位。例如 #article AI 会返回标记为文章且内容包含 "AI" 的笔记。
spec/search/parser.spec.js 中的测试用例详细展示了这种组合搜索的解析方式。
十二、搜索语法错误处理
Trilium Notes 具有完善的错误处理机制,当输入无效的搜索语法时,会返回相应的错误提示。例如,如果你输入 #first = 这样不完整的表达式,系统会提示 "Misplaced or incomplete expression"。
错误处理的相关测试位于 spec/search/parser.spec.js。
十三、标签存在性检查
如果你只想检查某个标签是否存在,而不关心其值,可以直接使用 #标签名 的格式。例如 #idea 会返回所有包含 "idea" 标签的笔记,无论标签值是什么。
spec/search/parser.spec.js 中的测试用例展示了如何解析属性存在性表达式。
十四、关系存在性检查
类似地,你可以检查关系属性是否存在,使用 ~关系名 的格式。例如 ~reference 会返回所有包含引用关系的笔记。
十五、复杂查询示例
综合运用以上技巧,你可以构建复杂的搜索查询,精确找到所需笔记。例如:
(#project and #urgent and #priority=high) or (#personal and #important) and (deadline>2023-12-31 or completed=false)
这个查询会返回满足以下条件的笔记:
- 既是项目又是紧急且优先级高的,或者
- 是重要的个人笔记,并且
- 截止日期在2023年12月31日之后或未完成
通过掌握这些高级搜索技巧,你可以更高效地管理和检索你的知识笔记,充分发挥 Trilium Notes 的强大功能。建议将常用的复杂查询保存下来,以便日后快速使用。
希望本文对你有所帮助,如果你有其他好用的搜索技巧,欢迎在评论区分享!记得点赞收藏,关注获取更多 Trilium Notes 使用技巧。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



