查询构建器:从知识库里筛选信息
查询是什么
查询(Query)就是带条件的筛选器。你告诉 Logseq「把所有满足条件的块找出来」,它就帮你列出来——而且结果是实时更新的:当你添加新的块或修改现有块,查询结果自动变化。
基础语法
查询用 {{query ...}} 包裹,里面是条件表达式(DSL = Domain Specific Language)。
{{query (task TODO)}}
上面这个查询会找出所有未完成的 TODO 块,无论它们分散在哪个页面里。
常用条件
| 条件 | 含义 |
|---|---|
(task TODO) | 所有 TODO 状态的任务块 |
(task DONE) | 所有已完成的任务块 |
[[页面名]] | 所有引用了某个页面的块 |
#标签 | 所有带某个标签的块 |
(property key value) | 所有属性等于某值的块 |
(ancestors [[页面]]) | 某个页面下的所有后代块 |
(descendants [[页面]]) | 某个页面的所有祖先页面 |
组合条件
(and ...)— 所有条件同时满足(or ...)— 任一条件满足(not ...)— 取反
{{query (and (task TODO) #学习)}}
→ 所有带 #学习 标签的未完成任务
{{query (or [[机器学习]] #ML)}}
→ 引用了 [[机器学习]] 页面或带 #ML 标签的所有块
{{query (and (task TODO) (property priority high))}}
→ 高优先级的未完成任务
查询结果展示
查询结果可以以三种形式呈现:
- 列表(默认)— 按块原样显示,保留缩进
- 表格 — 把每个块展开成行,属性变成列。适合汇总数据
- 卡片 — 类似看板,按某个属性分组。适合任务看板
在查询块上右键 → 「Query View」→ 选择展示方式。
自动查询 vs 手动查询
- 自动查询:写好查询条件后,每当你添加/修改块,结果自动更新
- 手动查询(Advanced Query Builder):用 GUI 界面拖拽条件生成查询,适合不熟悉 DSL 的用户。在右侧面板打开 Query Builder
查询的典型用途
1. 任务看板
{{query (task TODO)}}
→ 在专门的看板页面里汇总所有待办事项
2. 主题汇总
{{query (and [[分布式系统]] (not (task TODO)))}}
→ 所有关于「分布式系统」的笔记块(排除任务)
3. 读书进度
{{query (and #阅读 (task DONE))}}
→ 所有已读完的书
4. 会议纪要待办
{{query (and #会议 (task TODO))}}
→ 来自所有会议记录里的待办事项
性能提示
当图谱有几千块时,复杂查询可能会变慢:
- 优先用标签
#tag而不是嵌套的[[页面]]条件 - 避免
(and)里超过 3-4 个条件 - 大图谱把查询结果缓存到专门的汇总页