思源笔记 数据库与搜索(七)
7.数据库与搜索
涵盖数据库表的创建与管理、多种搜索方式(查询语法、SQL、正则表达式)等内容。
一、数据库功能
思源笔记内置数据库功能,可将内容块以表格视图或看板视图等形式呈现,让笔记更具结构性和条理性。
1. 创建数据库
- 在编辑器中输入
/ → 选择 数据库 → 默认生成表格视图。 - 表格上方可切换视图(表格 / 看板等)。
2. 表格的基本操作
| 位置 | 功能 |
|---|---|
表格右上角 + |
添加新表格(多个表格可并存) |
最右上方 + |
添加条目(新行) |
列右侧 + |
添加列 |
表格底部 + |
添加行 |
- 也可通过拖拽内容块到表格中,或通过块标菜单 → “添加到数据库”来新增行。
- 右键点击列或行可进行删除。
3. 列的格式属性
添加列时,可选择不同的格式类型,每种类型有独立的格式化选项:
- 文本
- 数字(可设置小数位数、千分位等)
- 日期 / 时间
- 复选框
- 关联(见下文)
- 汇总(见下文)
- 模板(见下文)
列的类型创建后可再次修改。
4. 主键列(Primary Key)
- 每张数据库表有且只有一个主键列。
- 主键是行的唯一标识,不可重复。
5. 单元格内容
- 每个单元格也是一个块,可以引用或链接到其他内容块。
- 点击已有内容的单元格可更新或建立连接。
6. 关联列(表格间关联)
用于在不同表格之间建立关系,实现联动管理。
操作步骤:
- 添加列 → 选择 关联。
- 在编辑菜单中,选择要关联的目标表格。
- 决定是否开启双向链接。
- 确认完成。
关联列有助于跨表组织数据(如任务与项目关联)。
7. 统计汇总
对已有列进行统计计算。
操作:
- 添加列 → 选择 汇总。
- 选择要统计的关联列(即对哪一列的数据进行统计)。
- 选择统计方式(如求和、平均值、计数、最大值、最小值等)。
8. 模板列(高级自定义)
当以上格式都不满足需求时,可使用模板列。
- 基于 Go 语言文本模板 实现,支持比较逻辑、迭代逻辑等。
- 示例:对数据1和数据2两列求和
模板内容:.action add 数据1 数据2
效果:自动计算两列的和并显示。
模板列适合需要动态计算或自定义格式的场景。
二、搜索功能
思源笔记提供多种搜索方式,入口为右上角放大镜图标或快捷键 Ctrl+P(Windows)/ Cmd+P(Mac)。
搜索界面有四种模式(点击右上角信号图标切换):
- 关键字搜索(默认)
- 查询语法
- SQL语句
- 正则表达式
1. 关键字搜索
- 直接输入文字,匹配所有包含该内容的块。
- 支持空格分隔多个词(隐含 AND 逻辑)。
2. 查询语法
提供逻辑操作和通配符,可精准筛选。
| 语法 | 含义 | 示例 |
|---|---|---|
AND |
同时包含 | 设置 AND 搜索 |
"..." |
精确短语 | "思源笔记" |
* |
通配符,匹配任意数量字符 | comp* 匹配 computer、company 等 |
? |
通配符,匹配单个字符 | te?t 匹配 text、test 等 |
~ |
模糊搜索 | 思源~ 匹配相近词 |
查询语法在不同搜索引擎中可能略有差异,思源支持上述常用规则。
3. SQL 查询(嵌入块 + 全局搜索)
3.1 在全局搜索中使用 SQL
- 切换到 SQL 语句 模式,直接输入 SQL 语句进行查询。
3.2 在嵌入块中使用 SQL(更常用)
嵌入块语法:{{ 和 }} 包裹 SQL 语句,独占一行。
基本结构:
SELECT * FROM blocks WHERE ...-
blocks是思源笔记中存储所有内容块的表。 -
*表示返回所有字段。
常用字段(列) :
| 字段 | 说明 |
|---|---|
id |
块唯一 ID |
content |
去除 Markdown 标记后的纯文本 |
type |
块类型(如 p 段落、h1 一级标题、li 列表项等) |
name |
块命名(手动设置) |
alias |
块别名 |
memo |
备注 |
created |
创建时间 |
updated |
更新时间 |
示例:
搜索所有包含“思源”的段落块:
SELECT * FROM blocks WHERE content LIKE '%思源%' AND type = 'p'搜索所有书签(bookmark 不为空)的块:
SELECT * FROM blocks WHERE bookmark != ''
条件语法:
-
LIKE 模糊匹配(%通配符) -
AND /OR逻辑组合 -
NOT LIKE排除 -
=、>、<等比较运算符(适用于数字字段)
完整的字段列表可在思源笔记用户指南中查看。部分字段(如 name, alias, memo)需手动在块属性中设置。
4. 正则表达式
使用正则模式匹配文本,适合复杂模式查找。
- 切换到 正则表达式 模式后输入表达式。
示例:
-
\d→ 匹配所有数字(0-9) - 匹配日期格式
\d{4}-\d{2}-\d{2} → 如2025-01-15 - 量词:
?(0或1次)、*(0次或多次)、+(1次或多次)、{n}(n次)
正则表达式功能强大但学习曲线较陡,建议单独学习其语法。
三、总结与建议
- 数据库:适合管理结构化数据(项目跟踪、任务列表、阅读记录等),善用关联列和汇总列可提升效率。
- 搜索:日常用关键字搜索即可;需要精确筛选时使用查询语法或 SQL;正则表达式用于模式匹配。
- SQL 嵌入块:可动态汇总笔记内容,是实现“自动聚合”的重要工具,建议熟悉
SELECT、WHERE、LIKE等基础语法。 - 所有高级查询(SQL、正则)均可在全局搜索中测试,确认效果后再放入嵌入块使用。