G3.16.2nested scope inheritance设计研究

嵌套结构中的作用域可逐级继承,子范围默认包含于父范围

别名: 范围继承 · nested collections · 子文件夹包含

概念解释

文件夹、栏目、知识库节点通常是树。作用域继承指:在父节点上检索,默认覆盖所有子孙;在子节点上检索,集合是父集合的子集。子范围被包含于父范围,不是并列的另一块地。文件系统搜索、站点栏目、仓库里的 package 路径都按这个包含关系工作。若父范围搜不到子里明明存在的对象,树在导航里成立、在检索里断了。

继承说的是集合的包含,不是入口要不要区分,也不是默认落在哪一层。一层的对象必须能被上一层的查询看见,除非被显式排除。

机制

人对树的心理模型是容器:外盒装着内盒,搜外盒应看见内盒里的东西。检索若把每一层做成互不包含的索引切片(只搜「本节点上的直文件」,不含子树),容器模型被打破。用户会把对象搬到错误的层、或沿树逐层重搜,把一次查找变成一次树遍历。

包含必须是默认且可关闭的。默认不含子孙,人要为每一次父级查找打开「包含子文件夹」,这个开关会被忘掉,遗漏被记成「没有」。默认包含、再提供「仅本层」是符合容器模型的:先按树的语义工作,再允许收窄到直属。

怎么研究

在已知树上放对象,比较「父查询含子孙」与「父查询仅直属」。

  • 范式:三层文件夹,目标放在叶子;任务从根或中间层发起。数字图书馆的嵌套集合、企业网盘是现场来源。日志里同一对象在父路径与子路径下的命中差可作诊断。
  • 自变量:父范围是否包含子树、是否提供「仅本层」、树的深度。
  • 因变量:从父节点出发的召回、沿树逐层重搜的次数、误把子树对象当成不存在的比例。
  • 方法论注意点:实验室树若只有两层、每层三件,包含与否差别很小。要用深于任务起点的叶子。权限切断的子树(看不见的文件夹)不是继承失败,要与索引未包含分开记。

边界

图状、多父节点的对象(一篇文档挂在两个项目下)没有单一「子包含于父」。继承要定义清楚「任一父可见」还是「主父可见」,不能假装还是树。按标签而非层级组织的集合,没有可继承的上下级,硬套包含会发明假树。出于权限或合规被隔离的子树必须不出现在父检索里,这时「断继承」是正确的安全边界,但要在零结果时说明是权限而非没有。

怎么落地

  • 父节点检索默认包含全部子孙对象;提供「仅此一层」作为显式收窄,而不是默认。
  • 索引按树路径或祖先 ID 展开,保证父查询的候选集真是子集合的并,而不是另一份不相关的切片。
  • 对象移动子树之后,祖先关系要立即反映到检索包含里,不要留下「还在旧父里能搜到、新父里搜不到」。
  • 验证:把文件放进三层深的叶子,从根搜索它的独有文件名。应能命中。打开「仅此一层」后根上不应再出现它。若根上永远没有,继承断了。

延伸

  • 同组G3.16.1 默认作用域应取当前上下文,而非默认全局 · G3.16.3 窄范围零结果时应提供一键扩大到上级范围的选项 · G3.16.4 多作用域同时检索时,结果合并需要统一的相关性标准 · G3.16.5 作用域会改变排序结果,不同范围下的靠前结果不可直接比较
  • 相邻G1.03 分类法与层级 · G3.12 搜索范围 · G4.02 深链接
  • 站内检索nested collections · scope inheritance · search subfolders

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/G3.16.2