- 一、搜索基础
- 1.1 打开搜索
- 1.2 搜索界面介绍
- 1.3 基本搜索类型
- 二、全文搜索
- 2.1 简单全文搜索
- 2.2 精确短语搜索
- 2.3 排除关键词
- 2.4 搜索策略:渐进式匹配
- 三、属性搜索
- 3.1 标签搜索
- 3.2 关系搜索
- 3.3 笔记属性搜索
- 四、高级搜索语法
- 4.1 布尔表达式
- 4.2 正则表达式搜索
- 4.3 模糊搜索
- 4.4 排序和限制
- 4.5 特殊字符转义
- 五、保存搜索(Search Notes)
- 5.1 什么是保存搜索?
- 5.2 创建保存搜索
- 5.3 实用保存搜索示例
- 5.4 保存搜索的高级用法
- 六、快速导航
- 6.1 快速跳转(Jump to Note)
- 6.2 笔记树导航快捷键
- 6.3 笔记操作快捷键
- 6.4 多选操作
- 6.5 编辑器快捷键
- 6.6 标签页管理
- 6.7 其他实用快捷键
- 七、搜索工作流最佳实践
- 7.1 建立标签体系
- 7.2 搜索场景速查表
- 7.3 搜索组合技巧
- 八、本节小结
- 📝 核心要点回顾
- 🎯 实践检查清单
- 📚 参考资源
当你的 Trilium 知识库积累到数百、数千甚至数万条笔记时,一个问题会变得越来越重要:
📌 如何在海量笔记中快速找到你需要的那一条?
好的知识管理不仅仅是"存进去",更重要的是能"取出来"。如果你找不到之前记录的知识,那它就等于不存在。
Trilium 提供了极其强大的搜索和导航系统,它不仅仅是简单的关键词匹配,还支持:
- 🔍 全文搜索:在笔记内容中搜索
- 🏷️ 属性搜索:按标签、关系、元数据筛选
- 📐 正则表达式:复杂模式匹配
- 🔀 模糊搜索:容忍拼写错误
- 💾 保存搜索:将常用搜索保存为动态列表
- ⌨️ 快捷导航:键盘操作快速跳转
本节课将全面讲解这些功能,让你成为 Trilium 搜索专家。
一、搜索基础
1.1 打开搜索
在 Trilium 中,有多种方式打开搜索:
| 方式 | 操作 | 说明 |
|---|---|---|
| 快捷键 | Ctrl+S | 最快速的方式 |
| 工具栏 | 点击搜索图标 🔍 | 可视化入口 |
| 命令面板 | Ctrl+K → 输入 "search" | 通过命令调用 |
1.2 搜索界面介绍
┌─────────────────────────────────────────────────────────────┐
│ 🔍 搜索框 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 输入搜索内容... │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 搜索选项: │
│ ☑️ 搜索笔记内容 ☐ 仅搜索标题 │
│ ☐ 包含归档笔记 ☐ 快速搜索模式 │
│ │
│ ───────────────────────────────────────────────────── │
│ │
│ 搜索结果: │
│ 📝 笔记标题 1 │
│ 路径: 知识库 / 计算机 / ... │
│ ...匹配的内容片段... │
│ │
│ 📝 笔记标题 2 │
│ 路径: 项目 / 项目A / ... │
│ ...匹配的内容片段... │
│ │
└─────────────────────────────────────────────────────────────┘1.3 基本搜索类型
Trilium 会根据你输入的内容自动判断搜索类型:
| 输入内容 | 识别为 | 示例 |
|---|---|---|
| 普通文本 | 全文搜索 | Python 入门 |
以 # 开头 | 标签搜索 | #book |
以 ~ 开头 | 关系搜索 | ~author |
以 note. 开头 | 笔记属性搜索 | note.title |
| 包含特殊操作符 | 高级搜索 | #year >= 2020 |
二、全文搜索
2.1 简单全文搜索
直接输入关键词,Trilium 会在笔记标题和内容中搜索:
Python → 搜索包含"Python"的笔记
机器学习入门 → 搜索包含"机器学习入门"的笔记
HTTP 协议 → 搜索同时包含"HTTP"和"协议"的笔记2.2 精确短语搜索
用引号包围短语,进行精确匹配:
"machine learning" → 精确搜索"machine learning"这个短语
"设计模式" → 精确搜索"设计模式"引号类型:Trilium 支持三种引号:
- 双引号:
"text" - 单引号:
'text' - 反引号:
`text`
2.3 排除关键词
使用减号 - 排除包含某关键词的笔记:
Python -Django → 搜索包含"Python"但不包含"Django"的笔记
笔记 -测试 → 搜索包含"笔记"但不包含"测试"的笔记2.4 搜索策略:渐进式匹配
Trilium 使用智能的两阶段搜索策略:
┌─────────────────────────────────────────────────────────────┐
│ Trilium 搜索策略 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 第一阶段:精确匹配 │
│ ├── 处理 90%+ 的搜索请求 │
│ ├── 几乎即时返回结果 │
│ └── 要求关键词完全匹配 │
│ │
│ 第二阶段:模糊回退(自动触发) │
│ ├── 当精确匹配结果少于 5 个时触发 │
│ ├── 添加模糊匹配,容忍拼写错误 │
│ └── 精确匹配结果始终排在模糊匹配之前 │
│ │
│ 示例:搜索 "project" │
│ ├── 先返回精确包含 "project" 的笔记 │
│ └── 然后返回包含 "projects"、"projection" 的笔记 │
│ │
└─────────────────────────────────────────────────────────────┘三、属性搜索
属性搜索是 Trilium 最强大的搜索功能,允许你按标签、关系和笔记元数据精确筛选。
3.1 标签搜索
📌 搜索有某标签的笔记
#book → 所有带 #book 标签的笔记
#project → 所有带 #project 标签的笔记
#important → 所有带 #important 标签的笔记📊 搜索标签值等于某值
#year = 2024 → 年份为 2024 的笔记
#status = reading → 状态为"阅读中"的笔记
#author = "王小波" → 作者为"王小波"的笔记(值含空格时用引号)🔢 数值比较
#year >= 2020 → 2020年及以后的笔记
#year < 2000 → 2000年以前的笔记
#rating >= 4 → 评分 ≥ 4 的笔记
#progress > 50 → 进度 > 50% 的笔记支持的比较操作符:
| 操作符 | 含义 | 示例 |
|---|---|---|
= | 等于 | #year = 2024 |
!= | 不等于 | #status != archived |
> | 大于 | #rating > 3 |
>= | 大于等于 | #year >= 2020 |
< | 小于 | #year < 2000 |
<= | 小于等于 | #priority <= 2 |
📝 包含匹配
#title *= Python → 标题包含"Python"的笔记
#content *= 机器学习 → 内容包含"机器学习"的笔记
#tags *= Web → tags 标签值包含"Web"的笔记包含操作符:
| 操作符 | 含义 | 示例 |
|---|---|---|
*= | 包含(大小写敏感) | #title *= Python |
*=* | 包含(大小写不敏感) | #title *=* python |
3.2 关系搜索
🔗 搜索有某关系的笔记
~author → 所有有 ~author 关系的笔记
~template → 所有应用了模板的笔记
~relatedTo → 所有有 ~relatedTo 关系的笔记🎯 搜索关系指向特定笔记
~author.title = "王小波" → ~author 关系指向标题为"王小波"的笔记
~template.title *= "读书" → 模板名称包含"读书"的笔记🔀 关系链搜索
Trilium 支持多级关系链搜索,这是极其强大的功能:
~author.relations.son.title = "Christopher Tolkien"
解释:
├── ~author:有 author 关系的笔记
├── .relations.son:这个 author 笔记有 son 关系
└── .title = "...":son 指向的笔记标题匹配
用途:查找作者的儿子是 Christopher Tolkien 的所有书籍3.3 笔记属性搜索
使用 note. 前缀搜索笔记的内置属性:
| 属性 | 说明 | 示例 |
|---|---|---|
note.title | 笔记标题 | note.title *= Python |
note.content | 笔记内容 | note.content *= TODO |
note.type | 笔记类型 | note.type = code |
note.mime | MIME 类型 | note.mime = text/html |
note.dateCreated | 创建日期 | note.dateCreated >= 2025-01-01 |
note.dateModified | 修改日期 | note.dateModified >= TODAY-7 |
note.contentSize | 内容大小 | note.contentSize > 10000 |
note.isProtected | 是否加密 | note.isProtected = true |
note.noteId | 笔记 ID | note.noteId = abc123 |
note.parentCount | 父笔记数量 | note.parentCount > 1(查找克隆笔记) |
📅 日期搜索示例
note.dateCreated >= 2025-01-01
→ 2025年1月1日及以后创建的笔记
note.dateModified >= TODAY-7
→ 最近7天修改过的笔记
note.dateCreated >= MONTH
→ 本月创建的笔记日期关键词:
| 关键词 | 含义 |
|---|---|
TODAY | 今天 |
TODAY-N | N 天前 |
WEEK | 本周开始 |
MONTH | 本月开始 |
YEAR | 今年开始 |
四、高级搜索语法
4.1 布尔表达式
使用 AND、OR、NOT 组合多个条件:
#book AND #rating >= 4
→ 评分 ≥ 4 的书籍
#project AND (#status = active OR #status = pending)
→ 状态为 active 或 pending 的项目
#book AND NOT #status = archived
→ 未归档的书籍括号分组:
~author.title *= Tolkien OR (#publicationDate >= 1954 AND #publicationDate <= 1960)
→ 作者包含 Tolkien,或出版日期在 1954-1960 之间的笔记⚠️ 注意:以括号开头的表达式需要在前面加上分隔符(
#或~),否则 Trilium 可能无法正确解析。
4.2 正则表达式搜索
使用 %= 操作符进行正则表达式匹配:
#publicationYear %= "19[0-9]{2}"
→ 出版年份为 1900-1999 的笔记
note.content %= "\\d{2}:\\d{2} (PM|AM)"
→ 内容中提及时间(如 "10:30 AM")的笔记
#email %= "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}"
→ 有有效邮箱格式的笔记⚠️ 注意:正则表达式中的反斜杠需要转义,写成
\\。
4.3 模糊搜索
当你不确定精确拼写时,可以使用模糊搜索:
#title ~= trilim
→ 模糊匹配,即使拼错 "trilim" 也能找到 "Trilium"
#content ~* progra
→ 模糊包含,匹配 "program"、"programmer"、"programming" 等模糊搜索操作符:
| 操作符 | 含义 | 示例 |
|---|---|---|
~= | 模糊精确匹配 | #title ~= trilim |
~* | 模糊包含匹配 | #content ~* progra |
4.4 排序和限制
#book orderBy:#rating desc
→ 按评分降序排列的书籍
note.dateModified >= TODAY-30 orderBy:dateModified desc
→ 最近30天修改的笔记,按修改时间降序
#project limit:10
→ 只返回前10个项目
#book orderBy:#rating desc limit:5
→ 评分最高的5本书排序选项:
| 语法 | 说明 |
|---|---|
orderBy:#attribute | 按标签值排序 |
orderBy:dateCreated | 按创建时间排序 |
orderBy:dateModified | 按修改时间排序 |
orderBy:title | 按标题排序 |
desc | 降序(默认升序) |
limit:N | 限制返回数量 |
4.5 特殊字符转义
如果搜索内容包含特殊字符(#、~、. 等),需要转义:
\#hashtag → 搜索文本 "#hashtag"(而非标签)
C\+\+ → 搜索 "C++"
note\.js → 搜索 "note.js"五、保存搜索(Search Notes)
5.1 什么是保存搜索?
保存搜索(Search Note) 是一种特殊的笔记类型,它存储一个搜索查询,并动态显示所有符合条件的笔记。
这就像一个智能文件夹或动态播放列表——不需要手动维护,内容自动更新。
┌─────────────────────────────────────────────────────────────┐
│ 保存搜索 vs 普通文件夹 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 📁 普通文件夹"正在阅读的书" │
│ ├── 需要手动添加/移除笔记 │
│ ├── 可能忘记更新 │
│ └── 容易与实际情况不一致 │
│ │
│ 🔍 保存搜索"正在阅读的书" │
│ ├── 搜索条件:#book #status=reading │
│ ├── 自动显示所有符合条件的笔记 │
│ ├── 新增/修改笔记后自动更新 │
│ └── 始终与实际情况一致 │
│ │
└─────────────────────────────────────────────────────────────┘5.2 创建保存搜索
🖱️ 方法一:从搜索结果保存
- 执行搜索
- 点击搜索结果页面的 "Save search" 按钮
- 选择保存位置
🖱️ 方法二:手动创建
- 创建新笔记
- 将笔记类型改为 "Search"
- 在笔记内容中输入搜索查询
5.3 实用保存搜索示例
创建一个 "智能视图" 文件夹,存放各种保存搜索:
📁 🔍 智能视图
│
├── 🔍 正在阅读的书
│ └── 搜索:#book #status=reading
│
├── 🔍 高优先级任务
│ └── 搜索:#todo #priority=high
│
├── 🔍 本周创建的笔记
│ └── 搜索:note.dateCreated >= WEEK orderBy:dateCreated desc
│
├── 🔍 最近修改的笔记
│ └── 搜索:orderBy:dateModified desc limit:20
│
├── 🔍 被克隆的笔记
│ └── 搜索:note.parentCount > 1
│
├── 🔍 大型笔记(>10KB)
│ └── 搜索:note.contentSize > 10000 orderBy:contentSize desc
│
├── 🔍 未分类笔记
│ └── 搜索:note.parentCount = 1 AND NOT #archived
│
├── 🔍 今年读完的书
│ └── 搜索:#book #status=finished #finishedDate >= YEAR
│
└── 🔍 所有模板
└── 搜索:#template5.4 保存搜索的高级用法
📊 作为仪表盘
你可以创建一个"仪表盘"笔记,嵌入多个保存搜索的结果:
# 📊 我的仪表盘
## 🔥 高优先级任务
{{搜索:#todo #priority=high}}
## 📚 正在阅读
{{搜索:#book #status=reading}}
## 📝 最近修改
{{搜索:orderBy:dateModified desc limit:5}}💡 提示:可以使用
~renderNote关系或 Trilium 的内容引用功能嵌入搜索结果。
六、快速导航
6.1 快速跳转(Jump to Note)
快速跳转是 Trilium 中最常用的导航方式:
| 快捷键 | 功能 |
|---|---|
Ctrl+J | 打开快速跳转对话框 |
在快速跳转对话框中:
- 输入笔记标题的任意部分
- 支持模糊匹配
- 最近访问的笔记会优先显示
输入 "py入" → 匹配 "Python 入门教程"
输入 "tri进" → 匹配 "Trilium 进阶技巧"6.2 笔记树导航快捷键
在笔记树中,可以用键盘快速导航:
| 快捷键 | 功能 |
|---|---|
↑ / ↓ | 上下移动选中笔记 |
← | 折叠当前笔记(有子笔记时)/ 跳转到父笔记(无子笔记时) |
→ | 展开当前笔记 |
Home | 跳转到树的顶部 |
End | 跳转到树的底部 |
Ctrl + . | 滚动到当前笔记(当视图偏移时) |
Alt + - | 折叠当前笔记的整个子树 |
6.3 笔记操作快捷键
| 快捷键 | 功能 |
|---|---|
Ctrl + ↑ / Ctrl + ↓ | 在列表中上下移动笔记位置 |
Ctrl + ← | 将笔记上移一个层级(变为兄弟的兄弟) |
Ctrl + → | 将笔记下移一个层级(变为上一个兄弟的子笔记) |
Ctrl + C | 克隆笔记 |
Ctrl + X | 剪切笔记(用于移动) |
Ctrl + V | 粘贴(克隆或移动) |
Del | 删除笔记 |
6.4 多选操作
| 操作 | 方法 |
|---|---|
| 添加单个笔记到选择 | Alt + 点击 |
| 选择范围 | Shift + 点击(从当前到点击位置) |
| 全选子笔记 | Ctrl + A(在笔记树中) |
6.5 编辑器快捷键
在笔记编辑器中:
| 快捷键 | 功能 |
|---|---|
Ctrl + Shift + ↑/↓ | 从编辑器跳转到笔记树上/下一个笔记 |
Ctrl + K | 插入/编辑链接 |
Ctrl + L | 快速链接到另一个笔记 |
Ctrl + . | 滚动笔记树到当前笔记 |
6.6 标签页管理
Trilium 支持多标签页,像浏览器一样:
| 快捷键 | 功能 |
|---|---|
Ctrl + T | 新建标签页 |
Ctrl + W | 关闭当前标签页 |
Ctrl + Tab | 切换到下一个标签页 |
Ctrl + Shift + Tab | 切换到上一个标签页 |
Ctrl + 数字 | 切换到第 N 个标签页 |
6.7 其他实用快捷键
| 快捷键 | 功能 |
|---|---|
Alt + O | 打开/创建今日日记 |
Alt + A | 打开属性面板 |
Ctrl + S | 打开搜索 |
Ctrl + J | 快速跳转 |
F5 | 刷新/重载 |
Ctrl + Shift + S | 强制保存 |
Ctrl + E | 最近修改的笔记 |
七、搜索工作流最佳实践
7.1 建立标签体系
高效搜索的前提是一致的标签体系。建议:
📋 标签命名规范
类型标签(单数形式):
#book, #article, #project, #person, #meeting
状态标签:
#status = reading | finished | archived | active | pending
优先级标签:
#priority = high | medium | low
时间标签:
#year = 2024
#quarter = Q1
#finishedDate = 2025-01-157.2 搜索场景速查表
| 我想找... | 搜索语句 |
|---|---|
| 所有书籍 | #book |
| 正在读的书 | #book #status=reading |
| 评分≥4的书 | #book #rating>=4 |
| 王小波的书 | #book #author=王小波 或 ~author.title=王小波 |
| 2024年读完的书 | #book #finishedDate>=2024-01-01 #finishedDate<2025-01-01 |
| 最近7天修改的笔记 | note.dateModified>=TODAY-7 |
| 本月创建的笔记 | note.dateCreated>=MONTH |
| 包含"TODO"的笔记 | note.content*=TODO |
| 被克隆的笔记 | note.parentCount>1 |
| 所有代码笔记 | note.type=code |
| 标题包含"Python"的笔记 | note.title*=Python |
7.3 搜索组合技巧
🎯 场景:年度阅读回顾
#book #status=finished #finishedDate>=2024-01-01 #finishedDate<2025-01-01 orderBy:#rating desc🎯 场景:找到需要整理的笔记
note.dateCreated>=TODAY-30 AND note.dateModified<=TODAY-7 AND NOT #archived
→ 最近30天创建但超过7天未修改的笔记(可能需要整理)🎯 场景:找到所有与某人相关的内容
~relatedTo.title=张三 OR ~author.title=张三 OR ~attendees.title*=张三
→ 所有与"张三"相关的笔记八、本节小结
📝 核心要点回顾
- 全文搜索:
- 直接输入关键词搜索标题和内容
- 使用引号进行精确短语匹配
- 使用
-排除关键词
- 属性搜索:
#label搜索标签~relation搜索关系note.property搜索笔记属性- 支持比较操作符:
=,!=,>,>=,<,<=,*=
- 高级搜索:
- 布尔表达式:
AND,OR,NOT - 正则表达式:
%= - 模糊搜索:
~=,~* - 排序和限制:
orderBy,limit
- 布尔表达式:
- 保存搜索:
- 将搜索查询保存为动态更新的笔记列表
- 适合创建"智能视图"
- 快捷键导航:
Ctrl+J:快速跳转Ctrl+S:搜索- 方向键:笔记树导航
Alt+O:今日日记
🎯 实践检查清单
完成本节学习后,请确认你已经:
回复