# 检索词表（lexicon.json）

`lexicon.json` 是 `scripts/lookup.py` 的策展检索数据，与引擎逻辑分离维护。
两张表都只影响检索，不是事实正文。查询输入应从用户原话提取错误文本、标识符
或单一语法要素，保留原写法但不传完整礼貌句。

## query_synonyms —— 口语同义词

中文口语词 → TSL 术语的展开（如「打印」→ 输出 / writeLn）。策展纪律：

- 同义词必须落在**目标章节已有的词面**上，否则不产生区分度。用户说的词在
  参考页正文里出现 0 次时，页级 alias 只能把整页抬起来，页内仍需要词法
  信号才能选中正确章节——节级词汇桥（如「交集」→ `intersect`）补的就是
  这一层。
- 不要展开成泛化的中文概念词（如「集合运算」会命中别页交叉引用小节标题）。

## page_intent_aliases —— 页级意图短语

整句口语短语 → 参考页文件名的路由（命中一条 +80 分，是页级路由的唯一强
信号）。约束：

- 键必须与 `references/` 下的文件名完全一致；每个参考页至少一条短语。
  键写错或参考页改名后 `_intent_score` 会静默返回 0 分，该页失去自然语言
  入口。`lookup.py --check` 负责拦截页键漂移；查询排序以 lookup 实现和实际
  查询结果为准。

## Skill 维护与校验

Section ID 来自标题下的显式 `<!-- section-id: ... -->` 元数据，不从标题派生。改标题
时保留原 ID；新增章节时分配新 ID，不重排或复用旧 ID。quickstart 派生规则必须与
专题事实逐字一致，并显式给出可由 `--section` 直接取回的 Owner Section。

大型参考页必须把可检索事实切成受控大小的叶子 Section，避免一次精确取回返回数百行。
`--check` 会校验大页的叶子 Section 粒度；拆分时保留已有 ID，把新主题分配给新 ID。

改动本 Skill、参考页、`data/` 词表或 lookup 实现后运行：

```bash
python skills/tsl-syntax-reference/scripts/lookup.py --check
```

`--check` 会校验 `page_intent_aliases` 的键与 `references/` 参考页一一对应：
键指向不存在的页、或某页没有自然语言入口都会报错。新增参考页时必须同时
在这里补一条页级意图短语。它只做结构检查，不验证自然语言排序；自然语言
排序和真实问法应通过实际查询验证。

`--check` 还覆盖显式 ID、标题层级、quickstart 派生与 Owner Section、代码块身份、
本地链接和大页粒度；它不证明事实语义、检索排序或示例运行结果。
