思源笔记 数据库与搜索(七)

7.数据库与搜索

涵盖数据库表的创建与管理、多种搜索方式(查询语法、SQL、正则表达式)等内容。

一、数据库功能

思源笔记内置数据库功能,可将内容块以表格视图看板视图等形式呈现,让笔记更具结构性和条理性。

1. 创建数据库

  • 在编辑器中输入 /​ → 选择 数据库 → 默认生成表格视图
  • 表格上方可切换视图(表格 / 看板等)。

2. 表格的基本操作

位置 功能
表格右上角 + 添加新表格(多个表格可并存)
最右上方 + 添加条目(新行)
列右侧 + 添加列
表格底部 + 添加行
  • 也可通过拖拽内容块到表格中,或通过块标菜单 → “添加到数据库”来新增行。
  • 右键点击列或行可进行删除。

3. 列的格式属性

添加列时,可选择不同的格式类型,每种类型有独立的格式化选项:

  • 文本
  • 数字(可设置小数位数、千分位等)
  • 日期 / 时间
  • 复选框
  • 关联(见下文)
  • 汇总(见下文)
  • 模板(见下文)

列的类型创建后可再次修改。

4. 主键列(Primary Key)

  • 每张数据库表有且只有一个主键列
  • 主键是行的唯一标识,不可重复。

5. 单元格内容

  • 每个单元格也是一个,可以引用或链接到其他内容块。
  • 点击已有内容的单元格可更新或建立连接。

6. 关联列(表格间关联)

用于在不同表格之间建立关系,实现联动管理。

操作步骤

  1. 添加列 → 选择 关联
  2. 在编辑菜单中,选择要关联的目标表格
  3. 决定是否开启双向链接
  4. 确认完成。

关联列有助于跨表组织数据(如任务与项目关联)。

7. 统计汇总

对已有列进行统计计算。

操作

  1. 添加列 → 选择 汇总
  2. 选择要统计的关联列(即对哪一列的数据进行统计)。
  3. 选择统计方式(如求和、平均值、计数、最大值、最小值等)。

8. 模板列(高级自定义)

当以上格式都不满足需求时,可使用模板列

  • 基于 Go 语言文本模板 实现,支持比较逻辑、迭代逻辑等。
  • 示例:对数据1和数据2两列求和
    模板内容:.action add 数据1 数据2
    效果:自动计算两列的和并显示。

模板列适合需要动态计算或自定义格式的场景。

二、搜索功能

思源笔记提供多种搜索方式,入口为右上角放大镜图标或快捷键 Ctrl+P​(Windows)/ Cmd+P(Mac)。

搜索界面有四种模式(点击右上角信号图标切换):

  1. 关键字搜索(默认)
  2. 查询语法
  3. SQL语句
  4. 正则表达式

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、正则)均可在全局搜索中测试,确认效果后再放入嵌入块使用。