2.5 KiB
2.5 KiB
core-contract(子模块规范)
子模块名称
core-contract(核心口径与契约)
目标描述
定义并固化跨端一致的“基础口径”,为后续断点生成、搜索与评分提供统一契约,避免实现偏差:
- 索引体系:EN/TC 的 token 与断点
pos语义 - 文本重组:从 token 区间稳定重组回行文本
- 规范化:空白归一化策略(默认折叠空白、去首尾)
- EN 关键词命中规则:全词等值匹配(
lowercase → strip 两端常见标点 → 等值比较),禁止 substring/contains - 配置与版本:
configVersion的语义与回溯字段;全端一致的默认值入口 - 确定性比较:layout tie-break 的字典序比较口径(作为后续模块复用工具)
本模块不负责“换行搜索”,只负责定义数据结构与基础函数。
输入/输出定义
输入
text: stringlang: 'TC' | 'EN'options?: { preserveRawSeparators?: boolean }config: { punctuationStripSetEN: string[]; whitespacePolicy: 'NORMALIZE' | 'PRESERVE' }
输出
normalizedText: stringtokens: Array<{ text: string; start: number; end: number }>- EN:token 仅为 WORD(不产生 SPACE token;标点视为词内字符)
- TC:token 为 grapheme cluster(具体分割由
grapheme-segmentation模块实现/提供)
rawSeparators?: string[]- 可选:当选择保留原始空白时,输出 token 间分隔符映射
- 基础工具函数(逻辑输出):
joinTokens(start, end) -> stringnormalizeENKeyword(tokenText) -> stringmatchENKeyword(tokenText, keyword) -> boolean
验收标准(可验证)
- 索引语义一致:
- EN:
"I am so tired"tokens=[I, am, so, tired],断点pos=2必然切为"I am"/"so tired" - TC:断点
pos表示在第pos个 grapheme 之前断开
- EN:
- EN 标点极简派一致:
"tired."作为一个 token;断点只允许在词与词之间
- EN 关键词命中无误伤:
- keyword=
"but":"but,"命中;"rebuttal"不命中
- keyword=
- 空白归一化确定性:
- 输入含多空格/首尾空白时,输出
normalizedText可预测且稳定
- 输入含多空格/首尾空白时,输出
- 工具函数确定性:相同输入在多次调用与多端实现中输出一致
依赖与关联
- 被依赖:
breakpoint-candidates、scoring-tiebreak、search-engine-*、overflow-fallback、integration - 依赖:TC token 分割依赖
grapheme-segmentation