Skip to content

youli42/Trilium-TagSearch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tag Search

Trilium 标签搜索插件。在笔记上方显示热门标签列表,点击即可按标签筛选笔记,支持全文搜索、标签值搜索、分页、搜索历史等功能。

alt text

安装

  1. GitHub Releases 下载最新版本的 tag-search.zip
  2. 打开 Trilium 设置 → 高级 → 关闭安全导入(Enable safe import)
  3. 菜单栏 → 导入 → 选择下载的 tag-search.zip → 确认导入
  4. 导入完成后可重新开启安全导入

使用

界面组成

  • 搜索栏 — 输入关键词搜索笔记标题和内容
  • 标签筛选 — 输入标签名过滤显示的标签,或直接点击标签进行筛选
  • 标签矩阵 — 显示热门标签,点击标签值筛选,点击标签名筛选该标签下任意值
  • 结果列表 — 显示搜索结果,每条结果可查看其标签,点击可跳转
  • 分页与每页数量 — 支持 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 行)

数据流

  1. 标签加载: api.runOnBackend → SQL 查询 attributes 表 → 按标签名/值分组并统计数量 → 返回前端
  2. 搜索: api.runOnBackendapi.searchForNotes() → Trilium 内置搜索(支持标签语法 #label=value)→ 返回结果
  3. 历史: 选中标签序列化到 localStorage,渲染时根据历史提升标签排序权重

关键设计

  • 标签排序:综合使用频率和历史记录加权排序,历史越新权重越高
  • 标签值搜索:特殊字符(空格、引号、括号、#)自动转义为 #name = "value" 格式
  • 同名标签 OR:相同标签名下选中多个值时,用 ( #name = A or #name = B ) 语法合并
  • 筛选过滤:标签输入框实时过滤标签列表(客户端过滤,避免重复查询后端)

配置

tag-search-config.jsonc 提供运行时配置:

  • display.rows — 标签显示行数
  • display.tagsPerRow — 每行最多标签数
  • display.maxTagsPerNote — 每个结果笔记最多显示的标签数
  • search.scope — 搜索范围(allsubtree:noteId
  • search.maxResults — 默认每页笔记数

About

在 Trilium 中更便利的基于标签搜索

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors