词库管理
用户词库、临时词库、词频、候选调整四类数据的管理界面与操作,快捷输入格式的调序与显隐,以及词库缓存机制
设置工具的「词库」页统一管理用户数据——你打过的字词、手动造的词、调频记录、置顶隐藏规则。所有修改即时生效。
词库类型与数据类别
页面顶部的「词库类型」下拉选择数据域——几个全局域或某个输入方案;下方子标签切换具体数据类别。全局域有:
- 快捷短语
- 快捷输入 0.117 新增
- 字符集分类 0.121 新增,域下两个子标签:常用字 0.119 新增(逐字)与字符类 0.121 新增(整类)
- 输入补全 0.122 新增,域下两个子标签:邮箱后缀与网址历史,见输入补全
全局域与方案无关:快捷短语是一套码到内容的映射,快捷输入格式的调整则按「日期 / 月日 / 年月 / 数字 / 计算」这几个格式类别记账,都不挂在任何方案下。
下拉里含全部已安装方案,不限于已启用的,也包括自制快符表这类特殊方案——它们各有独立的用户词库与词频记账,与主方案互不干扰。
选择方案后,可管理的数据类别随引擎类型变化:
| 方案类型 | 用户词库 | 临时词库 | 词频 | 候选调整 |
|---|---|---|---|---|
| 码表(含自制快符表等特殊方案) | ✅ | ✅ | ✅ | ✅ |
| 拼音 | ✅ | ✅ | ✅ | ✅ 0.115 新增 |
| 英文 0.114 新增 | ✅ | —— | ✅ | ✅ |
| 混输 | —— | —— | —— | ✅ |
三条容易困惑的地方:
- 英文没有临时词库——临时词库是自动造词的暂存区,而英文没有造词流程
- 拼音只能置顶,不能前移 / 后移——
position = 0(第一个)的含义不随候选集变化,而「第 3 位」在词频衰减、模糊音开关或词库变动后指的就是另一条候选了。0.115 之前拼音下三种调位一律禁用,正是出于后者 - 混输只有候选调整——不是功能缺失。混输方案自己不拥有词库,它的用户词库、临时词库与词频都按候选来源记在被引用的码表方案与拼音方案名下,在那两个方案下管理即可。见混输方案配置
全拼与双拼共用同一个数据域
双拼在词库页被折叠进「拼音」域。导出双拼方案得到的就是整个拼音家族的数据,导入亦然。
候选调整也一样共享,且编码会归一成全拼:双拼敲 hc(小鹤 = hao)置顶的词,切到全拼打 hao 同样生效,反之亦然。规则表里存的是 hao 而不是击键。
通用操作
- 搜索 —— 输入编码或词条即时过滤,编码支持中段匹配 0.113 新增:搜
ya也能搜到haoya,不必从头打起 - 排序 —— 点击表头按该列排序
- 分页 —— 数据量大时分页浏览
- 刷新 / 导入 / 导出 —— 见导入与导出
- 删除、清空等破坏性操作均有二次确认
拼音编码带音节空格 0.113 新增
拼音词库的编码在列表、搜索回显与「出码」按钮里一律显示成带音节空格的形式(ni hao 而不是 nihao),让词库真实的音节结构可见。存储侧不变,仍是扁平码。
由此多出一个用法:在编码框里手打空格即显式声明音节切分,优先于程序的自动推导——自定义切分或生僻音的词,打个空格就能把边界给准。搜索时带不带空格都能匹配。
直接打开到指定方案 0.113 新增
从功能主菜单选「词库管理…」时,直接落在你当前正在用的那套方案上,不再停在「快捷短语」让你再选一次。
要跳得更准,可以用命令行参数指定方案与数据类型:
wind_setting.exe --page dict --schema wubi86 --type shadow也可以挂成短语,用编码一键直达:
cods = $CC("五笔候选调整", setting.open("dict", "--schema=wubi86 --type=shadow"))取值与降级规则见设置工具的命令行参数。
用户词库
收录你手动添加的词,以及自动造词转正后的词条。
手动添加 —— 输入词条后可点「出码」按钮自动生成编码,也可手动填写;支持设置权重。此外可编辑、删除、清空。词条长度上限 10000 字、编码长度上限 128 字 0.122 新增,超出会被拒绝而不是截断。
也可以在输入时直接加词:
Ctrl + =就地加词(从当前组合造词)Ctrl + Shift + =打开独立加词小窗;窗内按Enter直接提交 0.121 新增,与快捷加词对齐
英文方案的用户词库 0.114 新增
英文方案的用户词库收专有名词、缩写、项目内部词汇。编码就是单词本身的小写——英文词库以小写码做大小写不敏感的前缀匹配,加 WindInput 后打 wind 就能出。
带空格的(thank you)、非 ASCII 的(café)、一个字母都没有的(123)三类词加不进去,加词会提示无法计算编码。详见英文方案配置。
临时词库
自动造词的暂存区。 开启自动造词(码表)或自动学习(拼音)后,连续选字产生的新词组会先落在这里,记录使用次数——立刻可用,但尚未进入正式用户词库。
| 操作 | 说明 |
|---|---|
| 转正 | 把该临时词条转入正式用户词库 |
| 全部转正 | 一键转正当前全部临时词条 |
| 删除 / 清空 | 移除条目 |
用满「转入用户词库次数」设定的次数后也会自动转正。
词频
词频记录(count 使用次数与 last_used 最近使用时间)按「方案 + 编码 + 文本」存储。在这里可以删除单条记录(该词回落原始排序)或清空整个列表。
调频要不要开、按什么策略——那些是每种引擎的全局配置,在对应的四台引擎的配置里。排序原理与三种策略的取舍见词频与候选排序。
记账用哪个编码:码表与拼音相反 (0.114)
这里的「编码」两类方案取法不同,是刻意的:
- 码表 —— 记你实际敲的输入码。
d/de/def是三个独立码位,各自的首选独立调整。这也是简码位首选保护按码长分档成立的前提 - 拼音 / 英文 —— 记候选自身的编码。候选码恒是这个词完整的读音或拼写,打
d选了「东西」之后打dongxi也该受益;而且拼音下不能用输入缓冲——双拼的siyr与候选码siyuan、带分隔符的xi'an与xian都对不上
0.113 及以前码表侧也走候选码,导致在 de 下选中「有」(它带的是全码 def)后,打 d 时它也跟着前移。0.114 已按候选来源分流修正。
候选调整
控制特定候选的显示行为,不修改原始词库数据,规则以一层 shadow 规则持久化在 userdata.redb。
| 操作 | 说明 |
|---|---|
| 添加 | 指定编码与词条,类型选固定位置(并填目标位置)或隐藏 |
| 编辑 | 修改已有规则 |
| 撤销 | 取消调整规则,恢复该候选的原始显示 |
| 清空 | 移除全部规则 |
日常使用中直接右键候选词选「置顶 / 前移 / 后移 / 删除 / 恢复默认」,或用快捷键(默认 Ctrl + 数字 置顶、Ctrl + Shift + 数字 删除),产生的规则同样在这里管理。
拼音方案下「前移 / 后移」是灰的,只有置顶可用,原因见上文的类型对照表。删除与恢复默认不受限制。
置顶是硬规则,比调频强得多
候选调整排在整条候选装配流水线的最后,晚于排序、去重、过滤与词频重排——它能翻过拼音的匹配层级闸门,而调频翻不过。
这也意味着置顶不会自己失效:它不随使用衰减,也不会被更常用的词挤下去。想撤销只能在本页删除规则,或右键那条候选选「恢复默认」(得先把它打出来)。给一个词置顶前,值得想一下是不是真的每次打这个编码都要它排第一。
置顶只作用于你当时敲的那个编码
在 hao 下置顶「好」,只影响打 hao 的时候;打 hao1、h 或整句里出现同一个词都不受影响——每个编码是独立的码位。
模糊音也不跨编码:开了 zh = z 时打 zang 置顶的词,打 zhang 不会跟着置顶,因为规则记的是你实际敲的那串。
拼音下想让某个词稳定靠前,调权重仍然不管用
拼音候选权重是百万级,单纯把用户词的 weight 调到几千不足以压过常用拼音词。要么用上面的置顶,要么给它一个不易与自然词碰撞的精确编码(例如 4 字母的 cobd),让它只在该精确编码下出现。
快捷输入格式 0.117 新增
「快捷输入」域列出快捷输入的全部候选格式(日期、月日、年月、数字、计算五类,二十余条),可调序、停用、单条或整表恢复默认,也能把改动导入导出成一份 TOML。
与候选调整的分别在作用域:候选调整管的是「某个编码下的某个词」,这里管的是「某一类输入的某种写法」——把农历排到最前,以后所有日期都把农历排最前。
三点与别的类型不同:
- 增删只对自己的条目——可以加自己的格式、改它的模板、删掉它;出厂条目的模板不可改,只能停用(理由见那一节)。
kind是解析器白名单,不能自创 - 停用不是删除——停用的行留在列表里、原地灰掉,随时开回来;这也是为什么它比右键菜单管得更全(右键点不到已经隐藏的格式)
- 每行带示例——用今天的日期现算,与你实际打出来的一致
常用字 0.119 新增
「常用字」域管的是哪些字算常用。这张表决定候选检索范围在「智能」和「常用字」两档下放行谁——把一个字设成生僻,它在这两档里就不再出现在候选中,切到「全部字符」才回来。
出厂带一份默认字表(八千多个汉字)。这个域列的是默认字表 + 你改过的字:默认字表之外的字符(注音、假名、间架结构符 ⿰ 之类)本来就一律放行,只有被你设成生僻之后才会出现在列表里。
| 列 | 说明 |
|---|---|
| 字符 | 那个字本身 |
| 默认 | 默认字表原本的判定 |
| 当前 | 你设定的判定:常用 / 生僻 |
| 所属类 0.121 新增 | 这个字的判定归哪个字符类管,如「注音符号」「Emoji 表情」。0.120 的「类型」列(Unicode 块名)并入此列——两列内容高度相似(「表情符号」对「Emoji 表情」),分不清是必然的 |
「默认」与「当前」并排是有用的:只看「当前」的话,一行「的 · 生僻」根本想不起来自己当初改的是什么。
右上角的「只看已修改」把没碰过的行滤掉,改过哪些字一眼就能看全。
改一个字
- 在这个列表里右键那一行,选「设为常用」或「设为生僻」
- 或者日常打字时右键候选词直接调,不用专门打开设置
改过的行可以「恢复此条默认」,回到出厂字表的判定。没碰过的行这一项是灰的——点了也什么都不会发生。
- 任何字符都能设 0.120 新增:不限于汉字,字根、间架结构符、注音符号、假名都可以。 emoji、国旗、带键帽的符号这类由多个码位拼成的字符,也会被当成一个整体登记,不会被拆开。
整类批量 0.120 新增
一个一个设太慢的时候:右键任意一行,菜单里有「将『注音符号』全部设为常用 / 全部设为生僻」——类型从这一行推导,你不必先知道它叫什么、码位区间在哪。
在候选里看见 ㄅ 觉得烦,心里想的本来就是「这类东西别出来」,而不是「3100 到 312F 别出来」。
两个方向都给,不是按当前行取反。因为默认字表之外的字符能进列表的前提就是已被设为生僻,取反的话菜单里永远只剩「全部设为常用」,那一类就再也关不掉了。
确认前会先告诉你这一类有多少个字、涉及多少条词条——扫的是你当前启用的全部方案里实际出现过的字,不是整个 Unicode 区间。
汉字块不提供整类操作
对着一行「我」点「将『基本汉字』全部设为生僻」,一次误点就是七千多条覆盖,整张常用字表当场作废。所以汉字那几个块的整类项是灰的——它们本就有默认字表逐字管着,要调也该逐字调。
字符类 0.121 新增
「常用字」是逐字改判定,「字符类」是整类改。两者是同一件事的两层:
| 字符类 | 常用字 | |
|---|---|---|
| 作用面 | 整个类,不问词库里有没有这个字 | 一个字 |
| 跟随出厂更新 | ✅ 出厂给这个类补了成员,一并生效 | ⛔ 只有你改的当时那些字 |
| 优先级 | 低 | 高,压住前者 |
最后一行是「配了没反应」最常见的来源:你把某个类整体设成生僻,却发现有几个字照样出——那些字被逐条覆盖压着。所以列表里有一列专门显示每个类被多少条逐条覆盖压着。
出厂带几十个类:50 个 Unicode 区块 + Emoji 表情 + 常用汉字,你也可以自建。不分页,直接搜。
| 列 | 说明 |
|---|---|
| 类别 | 类名 |
| 优先 0.122 新增 | 仲裁顺序,数越小越先。出厂类取 10 / 20 / 100 / 900 / 1000;显示为「—」表示没设,不是 0(0 是合法且最高的优先级) |
| 默认 | 本类的常用性表态:常用 / 生僻 / 跟随出厂(不表态) |
| 范围 / 标记 | 这个类覆盖哪些码位,以及它是否免于词频统计、是否纳入生僻字模式 |
| 覆盖 | 有多少条逐字覆盖压在这个类上 |
一个字被几个类同时覆盖时:优先级最小、且已表态的那个类赢——「优先 5 但没表态」让位给「优先 10 且判生僻」。免词频与纳入生僻字模式这两个标记是并集,任一类勾了就成立,不看优先级。
新建的类出厂不带优先级,而没有优先级压不过出厂类;要让它说了算,给它填一个比出厂类更小的数。
每行右侧有「常用」「生僻」两枚按钮直接改默认判定;第三档「清除默认判定」(让本类不表态、跟着自带配置走)在右键菜单里——它是撤销性的操作,用得少。
外部编辑
类的成员与码位范围不在界面里逐条编辑——填码位段、起 key 这些事在表格里做不完。新建一个类、或改一个类的范围,都走「外部编辑」对话框(字符类标签页右上角的按钮,或某一行右键 →「外部编辑…」):
- 选目标:下拉里是已有的类,末尾一项是「新建类…」
- 导出:写出一个 YAML 文件,路径就显示在对话框里。文件已存在时按钮变成「打开已有文件」与「重新导出」两枚——上次改到一半关了窗,回来应该能接着改,而不是被静默覆盖
- 编辑:一键用系统默认编辑器打开
- 加载:先试算,把「将更新『常用汉字』:+3 字 −2 字」摆出来,点「确认加载」才真写
加载是整份替换,不是合并
你的改动存在数据库里,导出的文件只是交换格式——直接去改那个文件不会自动生效,必须走「加载外部文件」这一步,而这一步会用文件内容整份替换该类的用户层。试算里的加减数就是在告诉你这一次替换会带来什么。
同理,自己往用户目录的 charsets\ 里放 common_han.yaml 之类的文件是不会被读取的(重启也不会)——那个目录在 0.121 之前才是用户层的落点,现在只有数据库算数。手上已有一份字表,走上面第 4 步的「选择其它文件…」加载进来。
出厂类不能删,范围也只读——但默认判定、免词频、纳入生僻字模式这几个属性照样改得动。
输入补全 0.122 新增
邮箱输入与网址历史补全学到的数据在这里查看与清空,域下两个子标签:
| 子标签 | 记的是什么 | 跟随哪个开关 |
|---|---|---|
| 邮箱后缀 | 你用过的邮箱后缀(@ 之后的部分,不含用户名) | 邮箱输入模式的总开关 |
| 网址历史 | 你上屏过的网址原文 | 「记住输入过的网址」,与网址模式本身的开关分开 |
两张表都只提供查看、搜索、逐条删除、清空——它们是学习数据,不是词库,没有编辑与导入导出(单独分发一份「我打过哪些网址」没有使用场景)。搜索按包含匹配:搜 example 找得出 www.example.com。
两个清空按钮各管各的,清空网址历史不会波及邮箱后缀。两类数据都已纳入整机备份,换机器不必重新攒。
词库缓存与重建
首次加载 .dict.yaml 时会解析成二进制缓存(.wdat),存放在 %LOCALAPPDATA%\WindInput\cache,之后直接内存映射读取,省掉重复解析。
缓存按内容指纹校验,不看修改时间。以下任一情况会自动重建,用户无需手动干预:
- 词库文件内容变化(哪怕只改一个字节)
- 缓存文件或其指纹文件缺失、损坏
- 拼音词库的
import_tables子表增删或改动 - 程序升级带来了解析语义变更
- 词库的
type在english与其他类型之间切换
因为指纹基于内容而非时间戳,用 scp 部署、从版本控制签出等刷新 mtime 的操作不会触发无谓的重建;把文件改回原样也能重新命中旧缓存。
改了 .dict.yaml 之后不需要做任何事
下次加载该词库时自动重建。改方案文件(.schema.toml)同样不需要——base_order、default_weight、base_sort 作用在查询期的排序器上,根本不进缓存。
需要强制全量重建时(例如怀疑缓存异常),用命令行:
wind_input schema rebuild它会清空整个缓存目录。输出里若提示「M 个仍被占用」,是文件还处于内存映射中,再执行一次即可清掉,不影响正确性。详见命令行工具。
只投放 .wdat 而无 .dict.yaml 的词库无法重建
词库也可以只分发编译好的 .wdat 而不带 yaml 源。这种词库直接映射加载、完全绕过指纹校验;一旦加载失败会明确报错,此时只能更换词库文件,改 yaml 没有意义(根本没有 yaml)。
删除操作不可恢复
删除与清空操作不可撤销。重要数据建议提前备份。
对这篇文档有疑问,或发现内容有误?
欢迎到文档仓库提 issue,写明问题时附上本页链接即可。