笔记搜索
思源笔记提供多层次的搜索能力:日常可以用全局搜索快速定位笔记,遇到复杂条件时可以切换到查询语法、正则表达式或 SQL;需要脚本和插件集成时,也可以调用搜索 API。
先选哪种搜索方式
搜索方式 | 适合场景 | 示例 | 注意事项 |
关键字 | 快速查找标题、正文和常用块属性 | 同步、Docker、反向链接 | 结果过多时,增加关键词、限制路径或筛选块类型。 |
查询语法 | 多个关键词的包含、排除、组合查询 | foo OR bar、foo NOT bar | 需要在搜索方式中切换到“查询语法”。空格默认表示 AND。 |
正则表达式 | 匹配固定格式、编号、日期、链接、代码片段 | \d{4}-\d{2}-\d{2} | 正则过宽会影响速度,建议配合路径和类型过滤。 |
SQL | 按块表字段、时间、类型、任务状态做结构化检索 | SELECT * FROM blocks ... LIMIT 20 | 适合高级用户;SQL 搜索方式不支持替换操作。 |
API | 插件、脚本、外部工具调用思源搜索 | POST /api/search/fullTextSearchBlock | SQL 模式需要管理员权限;普通场景优先使用界面搜索。 |
打开搜索
- 全局搜索:使用默认快捷键
Ctrl/⌘ + P,或点击界面中的搜索入口。适合在整个工作空间里查找笔记块。
- 当前文档搜索:使用
Ctrl/⌘ + F,只在当前打开的文档中查找文本。
- 固定搜索:使用默认快捷键
Shift + Ctrl/⌘ + F,适合把搜索面板固定在工作区中持续筛选。
- 搜索结果中可以用方向键浏览,用回车打开;也可以在预览区快速判断命中位置。
搜索面板里的常用过滤
- 指定路径:点击搜索面板顶部的路径按钮,把范围限制到某个笔记本、文档或目录。
- 包含子文档:在指定路径后,按需要启用子文档范围,避免只搜到当前层级。
- 块级类型:只搜索文档块、标题、段落、列表、代码块等特定类型。全局搜索里的过滤会覆盖“设置”里的默认块级类型。
- 块级属性:可以在“设置 → 搜索”中配置是否搜索命名、别名、备注等块级属性。
- 区分大小写:在“设置 → 搜索 → 区分大小写”中开启后,相关搜索功能会区分英文大小写。
- 搜索结果显示数:结果数量过大时会拖慢搜索;数据量较大时不要把该值设得太高。
关键字搜索
关键字是最常用的搜索方式,适合记得某个词、标题片段或短句时快速定位内容。
建议用法:
- 先输入最有辨识度的词,而不是太泛的词。例如搜
双链通常比搜笔记更快收敛。
- 结果太多时,不要继续翻很久,优先增加第二个关键词或限制路径。
- 如果想表达“包含 A 但不包含 B”“A 或 B 任意一个”,切换到“查询语法”会更准确。
- 如果发现重复结果,检查是否把容器块纳入了搜索范围;启用容器块后可能带来重复命中。
查询语法
查询语法适合表达明确的逻辑条件。切换搜索方式为“查询语法”后,可以使用
AND、OR、NOT 和括号组合。写法 | 含义 | 适合场景 |
foo bar | 同时包含 foo 和 bar | 多个关键词同时出现。 |
foo AND bar | 同时包含 foo 和 bar | 显式写出逻辑,便于阅读和保存。 |
foo OR bar | 包含 foo 或 bar 任意一个 | 同义词、旧称和新称一起查。 |
foo NOT bar | 包含 foo,但不包含 bar | 排除噪声结果。 |
(foo OR bar) AND baz | 先组合 foo/bar,再要求包含 baz | 复杂主题检索。 |
"foo/bar" | 把特殊字符包在英文双引号中 | 关键词中包含符号、斜杠、运算符等字符。 |
常见误区:
- 在“关键字”方式下输入
OR、NOT,它们可能只是普通词;需要切换到“查询语法”。
- 操作符建议使用英文大写,括号使用英文括号。
- 如果你想搜索字面量
AND、OR、NOT,可以用英文双引号包起来。
正则表达式搜索
正则表达式适合查“形式”而不是查“固定词”。在搜索方式中切换到“正则表达式”后,可以输入正则模式。
常见例子:
匹配
2026-06-23 这类日期。匹配
TODO 或 FIXME。匹配以
http:// 或 https:// 开头的链接。使用建议:
- 先限制到某个笔记本或文档,再运行复杂正则。
- 正则中的
.、*、?、[、]等都有特殊含义,搜索字面量时需要转义。
- 如果只是查多个词,优先使用查询语法;正则留给格式化内容。
SQL 搜索
SQL 适合按结构化字段查询,例如块类型、创建时间、更新时间、任务状态等。它常用于两类场景:
- 搜索面板中切换搜索方式为
SQL,直接用 SQL 找块。
- 在文档中插入嵌入块,用 SQL 动态展示查询结果。
基础示例:
查找最近更新的任务块:
查找同时包含两个关键词的文档:
注意事项:
- 日常查询尽量加
LIMIT,避免一次返回太多结果。
- SQL 搜索方式不支持替换操作,需要替换文本时请切回其他搜索方式。
- 不熟悉表结构时,先从
blocks表开始;常见字段包括id、root_id、content、markdown、type、subtype、created、updated。
- 不要把 SQL 搜索当作修改数据库的工具;用户指南中建议只编写查询型 SQL。
搜索资源文件内容
普通笔记搜索主要面向笔记块内容。如果要搜索附件或资源文件里的文字,请使用“搜索资源文件内容”入口。
适合场景:
- 想在 PDF、Office 文档等资源文件中查找文字。
- 明明记得内容在附件里,但普通笔记搜索没有结果。
- 需要确认某个关键词是否出现在资源文件正文中。
排查建议:
- 先确认资源文件本身能被提取出文本;扫描件图片可能需要 OCR 后才容易搜索。
- 搜索资源文件内容和搜索笔记块是两个入口,不要混用。
- 如果资源文件很多,先用更具体的关键词,避免搜索时间过长。
API 和插件调用
插件、脚本或外部工具可以调用搜索接口:
常用请求体示例:
method 的含义:0:关键字
1:查询语法
2:SQL
3:正则表达式
接口返回结果中通常包含命中的块列表、命中块数量、命中文档数量、页数等信息。SQL 模式需要管理员权限;如果只是做普通搜索集成,优先使用关键字、查询语法或正则模式。
搜不到或结果不准时
按这个顺序排查,通常最快:
- 先清空路径限制,确认不是搜错笔记本或文档。
- 检查是否启用了“包含子文档”。只限定父文档时,可能不会覆盖你想搜的子文档。
- 检查块级类型过滤。只勾选标题时,自然搜不到正文段落。
- 检查搜索方式。逻辑查询要用“查询语法”,格式匹配要用“正则表达式”。
- 检查“设置 → 搜索”中的块级类型、块级属性、区分大小写、搜索结果显示数。
- 如果目标内容在附件里,改用“搜索资源文件内容”。
- 如果某些内容被配置为忽略搜索,需要调整忽略搜索规则。
- 如果索引疑似异常,可以在“设置 → 搜索 → 索引”中重建索引。重建期间可能占用资源,建议在不急用时操作。
- 如果全局搜索响应较慢,增加关键词、设置类型过滤或缩小路径范围。
推荐学习路径
- 先熟悉全局搜索、当前文档搜索、路径过滤和块类型过滤。
- 再学习查询语法,用
AND、OR、NOT解决大部分复杂搜索。
- 需要查格式时学习正则表达式。
- 需要按块类型、时间、任务状态汇总时,再学习 SQL 和嵌入块。
- 需要自动化时,再使用搜索 API 或插件接口。
参考资料
Loading...