标签匹配与图谱逻辑
标签匹配与图谱逻辑
标签自动补全
在书签、笔记或文件编辑界面添加标签时,系统提供实时自动补全建议:
- 匹配方式:基于 SQL
LIKE '%keyword%'模糊匹配已存在的标签名 - 不区分大小写:英文标签大小写不敏感
- 匹配范围:仅搜索当前用户的标签库,不跨用户
资源与标签关联机制
统一关联表
所有资源(书签、笔记、文件)通过 resource_tag_relations 表统一关联标签:
resource_tag_relations:
tag_id — 标签 ID
resource_type — 资源类型(bookmark / note / file)
resource_id — 资源 ID
user_id — 用户 ID
source — 关联来源(manual / auto)
多对多关系
- 一个资源可以有多个标签:一个书签可同时关联"前端""Vue""文档"等多个标签
- 一个标签可以关联多个资源:一个"技术"标签可同时关联技术书签、技术笔记和技术文件
标签-标签关联
标签之间通过 tag_relations 表建立关联关系:
tag_relations:
tag_id — 源标签 ID
related_tag_id — 关联标签 ID
一个标签最多可关联 4 个其他标签。
遗留兼容
书签模块同时维护两套关联表(resource_tag_relations + tag_bookmark_relations),写入时双写确保向前兼容。
标签图谱算法
图谱数据来源
标签图谱页面以力导向图展示所有标签及其关联关系:
- 节点:每个标签是一个节点
- 节点大小:标签关联的资源数量越多节点越大(范围 30px-52px)
- 连线:两个标签同时出现在同一资源的标签列表中则产生连线
- 连线粗细:共现频率越高连线越粗
数据查询逻辑
图谱数据通过 tag_relations 表查询标签-标签关联,通过 resource_tag_relations 表统计每个标签的资源数量。
交互操作
- 缩放:鼠标滚轮缩放图谱
- 拖拽:拖拽空白区域平移视图
- 点击节点:点击标签节点可查看该标签关联的所有资源
- 中心标签:在标签详情页面进入图谱时,当前标签作为中心节点突出显示(64px 大小)
批量标签编辑
资源中心的批量标签编辑支持:
- 添加标签:为选中的多个资源同时添加指定标签
- 移除标签:为选中的多个资源同时移除指定标签
- 校验机制:操作前校验资源归属权、标签有效性、已存在的关联关系
- 事务写入:批量操作使用数据库事务,异常时自动回滚