Trilium 标签搜索插件。在笔记上方显示热门标签列表,点击即可按标签筛选笔记,支持全文搜索、标签值搜索、分页、搜索历史等功能。
- 从 GitHub Releases 下载最新版本的
tag-search.zip - 打开 Trilium 设置 → 高级 → 关闭安全导入(Enable safe import)
- 菜单栏 → 导入 → 选择下载的
tag-search.zip→ 确认导入 - 导入完成后可重新开启安全导入
- 搜索栏 — 输入关键词搜索笔记标题和内容
- 标签筛选 — 输入标签名过滤显示的标签,或直接点击标签进行筛选
- 标签矩阵 — 显示热门标签,点击标签值筛选,点击标签名筛选该标签下任意值
- 结果列表 — 显示搜索结果,每条结果可查看其标签,点击可跳转
- 分页与每页数量 — 支持 25/50/100/150/200/300 条每页
标签的点击行为分两种:
| 操作 | 行为 | 示例 |
|---|---|---|
| 点击标签名(冒号前) | 筛选该标签名下所有值 | 点击 project → 匹配所有 #project 笔记 |
| 点击标签值(冒号后) | 筛选精确值 | 点击 project:A → 仅匹配 #project=A 的笔记 |
提交搜索后,选中标签会自动存入搜索历史,便于快速复用。
纯前端 widget,在 Trilium 的 api.runOnBackend() 沙箱中执行后端操作,前端负责界面渲染和交互。没有构建工具或依赖。
html/
├── template.html — HTML 结构 + CSS(327 行)
└── script.js — 全部逻辑(564 行)
- 标签加载:
api.runOnBackend→ SQL 查询attributes表 → 按标签名/值分组并统计数量 → 返回前端 - 搜索:
api.runOnBackend→api.searchForNotes()→ Trilium 内置搜索(支持标签语法#label=value)→ 返回结果 - 历史: 选中标签序列化到
localStorage,渲染时根据历史提升标签排序权重
- 标签排序:综合使用频率和历史记录加权排序,历史越新权重越高
- 标签值搜索:特殊字符(空格、引号、括号、
#)自动转义为#name = "value"格式 - 同名标签 OR:相同标签名下选中多个值时,用
( #name = A or #name = B )语法合并 - 筛选过滤:标签输入框实时过滤标签列表(客户端过滤,避免重复查询后端)
tag-search-config.jsonc 提供运行时配置:
display.rows— 标签显示行数display.tagsPerRow— 每行最多标签数display.maxTagsPerNote— 每个结果笔记最多显示的标签数search.scope— 搜索范围(all或subtree:noteId)search.maxResults— 默认每页笔记数
