思源笔记的 tag 系统有可能支持嵌套么?

本贴最后更新于 567 天前,其中的信息可能已经沧海桑田

update: 在思源笔记中直接通过 A/B/C 的方式键入你的层级 tag,不过暂时没发现比较好的编辑方式。tag 栏中只能支持删除和重命名,并且如果存在 A/B/C 的标签笔记,点击删除 A 会导致界面的刷新,这个操作也是会失败的, 看起来是只支持删除空的 tag。


可能有点先入为主了,不过我觉得了解相关软件的优秀做法,对于思源笔记的发展可能是有益处的,所以贴一下一个比较优秀的设计,提供给思源笔记参考。

我重度使用的一款叫 DevonThink 的软件有一个很好的设计,我使用下来是非常适合做一些资源分类的。

我简单介绍一下它的做法:

  1. 它有两套平行的管理知识的逻辑,一套是基于文件树的(也就是下图中的 Inboxes),就像我们平常使用的文件管理器一样。

    里面有两种类型:文件文件夹

  2. 它还有一套比较精髓的 tag 系统(也就是下图中的 Tags),形式上是和文件树结构一样的。每个 tag 对应一个名字,这个 tag 逻辑上是个文件夹,也就是说可以在一个 tag 下面再无穷嵌套子 tag。这样的好处是,比如有些概念逻辑上是有继承关系的,比方说 【食肉目】-> 【猫科】-> 【豹属】这么一个 tag 链条,我给狮子一个【豹属】的 tag,那么在系统中,查询【食肉目】的时候,就能找到狮子了。我每次新创建一个项目就不用依次给它加上所有上面的三个 tag 了。

具体软件的逻辑,可以参考一下这个示例:

tag.gif

总之,当你的文件数量比较多、比较复杂的时候,不支持嵌套的 tag 几乎是没法用的。同样,当你的笔记变得很多、很复杂的时候,也是比较难以使用非嵌套的 tag 的。

我试了一下思源笔记现在的 tag,还是比较原始的:

截屏 2024060205.15.50.png

其实只需要让【标签】这个地方也像上面的【文档树】一样,支持建立次级标签,比如上面图中,我给【c】标签建一个【cc】子标签,那么其他打上【cc】标签的文档自动能通过【c】这个 tag 被找到。

DevonThink 的【标签】页面,一个标签下能把【关联的文档】和【子标签】同时显示出来,用起来是特别舒服的。

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    28446 引用 • 119789 回帖
3 操作
ringx 在 2024-06-03 00:27:09 更新了该帖
ringx 在 2024-06-03 00:22:27 更新了该帖
ringx 在 2024-06-03 00:21:08 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • yjmsiyuan

    好像大家都支持文档就是标签

    我现在也是这样认识。

  • MOUQIN

    使用双链不能全面替代吗!

  • NotSoEasy 1 赞同

    其实支持嵌套的,子标签的格式是“父标签/子标签/···”,多级嵌套也可以。如图所示。

    image.png

    1 回复
  • 在这篇帖子里 MOC:面向主题地去管理笔记链接 - 链滴 (ld246.com)

    我分享我对目录分类、标签分类、主题式管理链接的看法

    1 回复
  • ringx

    原来如此。那其实逻辑上是支持层级的 tag 的。

    不过我觉得改成上面 gif 的方式可能更好点,c/cc/ccc 这样其实还是键入了仨标签:c、cc、ccc。看起来有点耦合

  • ringx

    厉害,我学习学习再看读后感一下。

    @Achuan-2 你的内容十分的优秀,对我的启发性很大,我这篇回复的目的并不是反驳,而是一种阅后的交流和某些评价。因为内容较多,所以会以累加的形式进行添加。


    §1. 对于标签

    MOC#标签

    对于标签的管理,树形的嵌套确实也有可能带来一些文件树分类中会遇到的弊端。不过我觉得标签的树结构本身就是一种对知识的重新组织,这种形式会是非常直观和有价值的。

    在 DevonThink 中,Inboxes 其实有点类似于对于资源的剪藏,你的任何文章、书籍、摘抄、笔记都是可以一股脑儿扔进去的。对于这些资源,简单的目录分类其实就很足够了。

    树状的标签系统带来的问题,其实都是可以通过一些方式解决的,我针对你提到的针对标签的【问题】,谈谈我在 DT 中是怎么实践的。

    问题 1: 标签的管理笔记问题

    大部分笔记软件的标签功能其实并没有整理功能,可能只有简单的按时间排序功能,一个标签里的笔记只能在一个维度上堆积。标签在整理汇总功能上,甚至还不如文件夹(文件夹起码还可以对笔记进行自定义排序)。在某种意义上,标签更像是一个快捷搜索的功能,一个汇集想法的功能,而不是分类归档功能。

    这个其实不是一个问题,标签本身其实就是对于数据的一种分类和归档。支持嵌套的标签,就不再是一个维度的知识了,一个标签就可能一个子类别。

    问题 2: 创建多个重复标签的问题

    随着笔记越来越多,标签越来越多,管理标签也会变得非常头疼。因为标签的创建可能非常随意,可能重复创建一个标签,以不同的命名形式存在,比如 #神经科学,#脑科学、#神经生物学,如何把这些重复标签合并,将相关的文档聚合在一起呢?虽然一些笔记软件可以标签合并,但是本质问题没有解决,我还是会创建重复标签,那过一段时间就需要合并标签,除非我能牢固记住所有的标签命名。

    重复的标签其实也不应该是个问题,因为一个概念本身天然地就是会有多个父概念的。标签本身就应该是可以被自由创建的,因为对于一个文档的评价本身就应该是自由的。在标签之上其实就可以实现很多高级的玩法,比如 DT

    中有个 smart group 的概念,它可以利用 tag 进行更加高级的 交、并、补 的集合操作。这样你就无需对标签进行合并了,你唯一的任务是确保打标签的正确性。任何结构都会存在于这个 smart group 中。

    问题 3: 标签依然存在无法多分类的问题

    为了管理众多标签,很多笔记软件支持通过父子标签来管理标签,然而,父子标签的这种分类其实也只是单分类,过去使用文件夹单分类的问题,在另一个维度——管理标签上又出现了:这就意味着你创建一个 #睡眠 的标签,收集了很多笔记,你之前将其放在 #神经科学 这个标签下,现在你又创建了一个 #健康 标签,如何把 #睡眠 这个标签同时放在 #神经科学 标签和 #健康 标签里就是一个问题。只能把之前整理的那些睡眠笔记,合并成一篇《睡眠》笔记,然后打上 #神经科学 标签和 #健康 标签。这也就是说,当标签完成它的汇聚信息功能之后,这个标签的功能就丧失了,就应该转化为文档了,否则你难以对这个标签本身进行多分类。就如一个文件夹下的所有笔记不方便出现在其他文件夹里一样

    同名的标签是允许存在的,因为当标签是层级嵌套的时候,标签名天然地会拥有一个名字空间,当你需要在【健康】标签下面增加一个【睡眠】的标签,你唯一需要做得就是创建它,然后给需要打这个标签的文档打上此标签。然后你这篇文章自然就是一片关于【神经科学】的文章了,同时它也是和【睡眠】有关的。我看到有人提到思源笔记是支持 【健康/睡眠】这种标签的,不过我觉得这不是一个好的实践,这种标签过于耦合的,回到我文章中的动图中,比较好的实践方式类似下面的:

    截屏 2024060214.15.15.png

    截屏 2024060214.15.21.png

    问题 4: 标签管理笔记的复用问题

    标签管理的笔记最好是模块化的卡片笔记,标签本身适合是一个比较广泛的主题,比如 #个人碎碎念、#神经科学,因为永远也没有汇集完的一天,也不太需要整理为一个文档(正如前面所说的标签多分类问题)。但是标签尽管能对卡片笔记进行多分类,并不意味着它就可以很好的为笔记进行服务了,比如你记了一篇关于《熬夜危害》的笔记,为一个卡片笔记打上 #神经科学、#睡眠、#生活百科、#健康等标签,并不意味着这篇笔记可以被复用,更多情况是你打的标签可能更多是起美观、总结出关键词的作用。 以后想要用到这篇《熬夜危害》的笔记,要么在一个个标签里下滑寻找,要么使用搜索功能,这和文件夹体系其实没什么太大区别。

    当你的标签系统经过一段时间的使用和适应之后,你不应该需要对文档打重复的标签,因为【睡眠】本身就是一个 【神经科学】的问题,它是嵌套在后者之下的。如果你原则上是需要打重复标签的,那么其实这些重复的标签在你的思维中本身就不具备嵌套的必要。

    但是打重复标签依然应该是你的自由,正如你说的,标签本身就具有一定的说明能力。

    问题 5: 标签体系与双链功能

    标签体系如果加入双链功能,就可以用 [[快速搜索找到符合的笔记进行引用了,然而一旦加了双链功能后,双链就可以替代标签了,又何必再用标签呢?毕竟标签对笔记的多分类、信息汇聚功能,使用双链也能做到,甚至需要的信息汇聚之后,直接在双链文档就能进行整理了,而不像标签只是一个标签,无法整理标签内的信息。其实标签就是这么一个矛盾的功能,很鸡肋,食之无味弃之可惜。

    我觉得 【标签体系】和【双链功能】完全就是不相关的两个东西,前者注重的是对于【知识体系】的构建,后者是【知识之间的融合】。比方说对于一个大定理的证明,文章之间会有相互的【双链】,但是这些文章本身就是处在同一个【定理标签】下面的。

    而且如果使用【笔记】+【双链】的方式代替【标签】使用,维护成本会有点高。 标签本身是 0 成本的,双链就是一种内容创作了。

    1 回复
  • 还有另外一种层级的形式,通过特殊的引用名(文件名)结合插件的方式。

    bkAndText2ref.gif

    对于重复的概念、名称,我们可以合并:

    mergeDocs.gif

    1 回复
  • ringx

    看起来像是文件即标签的思路?好像挺复杂的。不过个人感觉文件名和标签还是不要有什么关联比较好,不然貌似会耦合得有点紧。

    1 回复
  • 有的文件作用就是引用、标签,它的名字代表一个概念。

    有的文件就是传统的文件,名字是个题目。

    分开这两类就可以了。

    这种引用写法,可以把引用、标签合并还能有层级的作用。

    1 回复
  • 我写的分享主要想分享的点在于主题式学习和主题式创作

    MOC 面向主题地管理笔记链接,非常契合主题式笔记这个理念,而目录分类和标签分类在主题式笔记管理这个方面上,其实是没什么区别的,都只能一维罗列。

    MOC 笔记的维护也可以如标签一样,就打一个块引标签,不去 MOC 笔记里根据逻辑排版内容,之后通过反链面板查看。或者提前在 MOC 笔记里建立 inbox 数据库,来通过添加到数据库功能,添加到 moc 里。

    标签我个人是不喜欢的,除了像 flomo 这类软件强制用标签来分类,没有文档树结构的软件,其他有文档树和标签共存的软件,标签功能我都基本没怎么使用,就算用了很大部分也没有真正用上,绝大部分情况还是主要靠文件夹分类。当然或许是我不会用标签。

    不过其实也不是一定要用双链代替标签,哪个更顺手哪个方法对自己更能产生价值就用哪个吧?笔记方法不是重要的,笔记能否真正产生价值才是最重要的,

    1 回复
  • ringx

    是的;这个很大程度得看自己的习惯。我就是会经常调整 tag,整理出一份结构性的内容学习,完了之后要么保持要么恢复原装。

    所以很依赖一种轻量、无侵入的重排方式。

  • ringx

    这种方式对于文档的整理会不会形成挑战?比如在一些按照科目、时间命名的文件中,出现一些引用、标签性质的文件名?

    1 回复
  • player 1

    那些用于充当引用、标签的文件,可以把他们放到另外一个目录下:

    image.png

    这些引用文件与其他文件分离:

    image.png

    假设我们都不用思源的标签功能,而是使用思源的引用来替代标签。

    TagDoc 下的文件,就相当于其他笔记软件中的标签。

    还多了其他特性。

    这样的引用本身是个文档,所以可以查看反链。也可以加入闪卡。还有层级。

    修改这样的'标签'也是非得方便,直接重命名即可。

    如果有这两个文件,后来我们发现 CC 是在 AA|BB 下的。

    CC

    AA|BB

    可以直接改名 CC -> AA|BB|CC

    其他地方对 CC 的引用,思源会自动正确处理为 AA|BB|CC,并有重建索引大法兜底。

    遇到两个概念一样的引用,也可以用刚才提到的,合并引用功能。

    不想合并也可以把他们放到同一个类别下。

    比如 EE 与 DD 不想合并的话,可以改名 AA|EE AA|DD

    在他们的反链面板中都可以看到对方,因为有个共同的根 AA。

    简单的还可以把 EE 改为 DD|EE

    也算把两个文件关联在一起了。

    当在思源编辑器中打入 [[ 输入 EE 时,会有 DD|EE 这个提示。

    2 操作
    player 在 2024-06-03 01:07:58 更新了该回帖
    player 在 2024-06-03 01:00:26 更新了该回帖
请输入回帖内容 ...

推荐标签 标签

  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    29 引用 • 66 回帖
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • 电影

    这是一个不能说的秘密。

    125 引用 • 610 回帖
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 44 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    20 引用 • 37 回帖 • 577 关注
  • Office

    Office 现已更名为 Microsoft 365. Microsoft 365 将高级 Office 应用(如 Word、Excel 和 PowerPoint)与 1 TB 的 OneDrive 云存储空间、高级安全性等结合在一起,可帮助你在任何设备上完成操作。

    6 引用 • 35 回帖
  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    182 引用 • 400 回帖 • 1 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1062 引用 • 3456 回帖 • 124 关注
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    110 引用 • 153 回帖
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 16 关注
  • OpenCV
    15 引用 • 36 回帖 • 1 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 8 关注
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    167 引用 • 408 回帖 • 494 关注
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    173 引用 • 1559 回帖
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    91 引用 • 113 回帖
  • 笔记

    好记性不如烂笔头。

    315 引用 • 790 回帖
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    502 引用 • 1397 回帖 • 241 关注
  • OneDrive
    2 引用 • 2 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    45 引用 • 44 回帖 • 2 关注
  • Sillot

    Insights(注意当前设置 master 为默认分支)

    汐洛彖夲肜矩阵(Sillot T☳Converbenk Matrix),致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点。其中汐洛绞架(Sillot-Gibbet)基于自思源笔记(siyuan-note),前身是思源笔记汐洛版(更早是思源笔记汐洛分支),是智慧新录乄终端(多端融合,移动端优先)。

    主仓库地址:Hi-Windom/Sillot

    文档地址:sillot.db.sc.cn

    注意事项:

    1. ⚠️ 汐洛仍在早期开发阶段,尚不稳定
    2. ⚠️ 汐洛并非面向普通用户设计,使用前请了解风险
    3. ⚠️ 汐洛绞架基于思源笔记,开发者尽最大努力与思源笔记保持兼容,但无法实现 100% 兼容
    29 引用 • 25 回帖 • 152 关注
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 563 关注
  • Word
    13 引用 • 41 回帖 • 1 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3206 引用 • 8217 回帖
  • CAP

    CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

    12 引用 • 5 回帖 • 660 关注
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    56 引用 • 85 回帖 • 1 关注