先分清是哪一种重复:三种表现的差异
「候选词重复」这个说法太笼统。实际操作中至少有三种不同的重复现象,它们的成因和修法完全不一样。区分清楚再动手,能省掉大半时间。
第一种是相邻重复。两个一模一样的词紧挨在一起,比如第一格和第二格都是「事实」。这种最常见,通常是索引层面的重复条目,清一次缓存基本能解决。
第二种是隔位重复。两个相同的词中间夹着若干其他候选词,位置可能相隔三到五格。这种和索引无关,而是两条不同来源的词目恰好文本相同,在合并进候选列表时没有被去重。
第三种是翻页重复。第一页出现过,翻到第二页又出现一次。这种情况相对少见,多半和候选词数量设置较大、跨来源排序时按不同权重分别输出有关。
三种里,隔位重复是最容易被误判的。很多人看到「隔了三个词」就以为是排序问题,去调词频权重,实际方向完全错了——那根本不是同一个条目被排了两次,而是两个来源各出了一条。
重复从哪来:候选列表的四个数据来源
搜狗输入法的候选列表不是单一词库的产物,而是把多个来源的结果合并、排序后呈现的。理解这一点,重复的原因就不难推出来。
四个来源大致是这样:
- 系统词库——随客户端安装包一起进来的基础词汇,覆盖面最广。
- 细胞词库——你订阅的领域词库,比如医学、法律、游戏术语。
- 用户词库——你自己打字积累的词频记录,以及手动加入的自定义短语和自建词库条目。
- 云输入结果——打字时实时返回的云端候选,通常包含最新热词。
这四个来源各自独立维护,同一份文本有可能同时出现在两个甚至三个来源里。比如「事实」这个词,系统词库里有一条,你自己可能也在自建词库里加过一条用于特定输入场景,云输入还可能返回一条带不同权重的候选。
合并阶段会做一次去重,但去重是按「条目 ID」而不是按「文本内容」做的。如果两个来源对同一条词目使用了不同的 ID,去重逻辑就认不出它们其实是一个词,结果两条都进了候选列表。
这也解释了为什么重复往往只集中在某几个词上。绝大多数的词只存在于一个来源,自然不会有重复;只有那些同时被多个来源收录的词,才有机会被输出两次。
三类重复来源的特征对比
把三种重复来源放在一起看,特征差异比想象中明显。下面这张表里的判定方式,都是可以自己动手验证的。
| 对比项 | 用户词库重复 | 细胞词库重复 | 云输入重复 |
|---|---|---|---|
| 重复的位置特征 | 多在候选前列,因为用户词频权重高 | 多在候选后段,权重低于用户词库 | 位置不固定,随云端返回顺序变化 |
| 是否跨软件一致 | 一致,本地词库对所有程序生效 | 一致,本地词库对所有程序生效 | 可能不一致,取决于程序是否触发云输入 |
| 断网后是否消失 | 不消失 | 不消失 | 消失 |
| 关闭云输入后是否消失 | 不消失 | 不消失 | 消失 |
| 修复手段 | 删除自建词库或自定义短语里的重复条目 | 取消订阅对应词库后复测 | 关闭云输入或等待云端去重更新 |
| 复现难度 | 容易,同一个拼音必然复现 | 容易,同一个拼音必然复现 | 较难,和网络状态、请求时机有关 |
表里最好用的是「断网后是否消失」这一行。断网状态下触发一次输入,如果重复还在,说明是本地词库来源;如果重复没了,基本可以确定是云输入造成的。这一条不需要改任何设置就能判断,是最省事的分类方法。
如果想进一步确认客户端版本是否会影响词库合并逻辑,可以到搜狗输入法下载页核对当前版本说明,不同版本在去重实现上存在差异。
修复第一步:清缓存与重建索引
三步修复里的第一步是最简单的,也最容易被跳过。它解决的是相邻重复这一类,对隔位重复和翻页重复基本无效。
- 在状态栏输入法图标上右键,进入属性设置。
- 找到词库相关页面,执行一次本地词库缓存清理。
- 完全退出输入法主程序,包括后台进程,然后重新启动。
- 重新输入触发重复的那组拼音,观察重复是否还在。
这一步之所以要放在最前面,是因为它成本最低、破坏性最小。清缓存不会删除你的个人词频,只是把本地索引文件重新生成一遍,如果重复来自索引层面的冗余条目,重建之后自然会消失。
但它有一个明确的局限:清缓存不改变数据来源的数量。如果重复来自两个不同来源各有一条记录,重建索引时这两条会被重新合并进来,重复照旧。这也是为什么有人清完缓存发现好了两天又回来的原因。
修复第二步:检查自定义短语与自建词库
如果清缓存无效,第二步是排查你自己加进去的东西。这是隔位重复最常见的来源。
要检查的地方有两处:自定义短语列表,以及自建词库。前者是你手动设置的快捷输入,后者是你导入或逐条添加的词表。两处都支持手动添加条目,也都有可能出现和系统词库重名的情况。
shishi 后,候选框第 1 格和第 4 格都是「事实」
gongsi 后,第 2 格和第 7 格都是「公司」
hezuo 后,第 3 格和第 5 格都是「合作」
检查时要注意一点:自建词库和自定义短语是两个独立的列表,同一个词可能只出现在其中一个里,也可能两处都有。第三个示例就是两处都有,只删一处重复还会在。稳妥的做法是两处都搜一遍同一个词。
删除之后建议再清一次缓存,让索引重建。有些版本的索引会缓存已删除条目,不重建的话可能还要等一段时间才生效。
修复第三步:逐个关闭来源做排除
前两步都没解决,说明重复来自系统词库、细胞词库或云输入这三者之间。第三步用排除法定位,思路是每次只关闭一个来源,看重复是否消失。
顺序建议从影响面最小的开始:
- 先关云输入,重新输入那组拼音。重复消失说明是云端来源,这一步不会动本地数据。
- 再逐个关闭细胞词库,每次只关一个,关完立刻复测。重复消失说明是这个词库和系统词库重名。
- 最后断网复测,排除所有网络来源后如果重复仍在,那就只剩系统词库自身的索引问题。
定位到具体来源之后,处理方式就明确了:云输入引起的可以长期关闭云输入,或者等云端去重策略更新;细胞词库引起的可以取消订阅该词库,改用其他覆盖范围相近的替代词库。
这一步的边界要说清楚:排除法只能定位来源,不能自动消除重复。如果定位结果是系统词库自身存在问题,用户侧没有可操作的手段,只能等客户端版本更新。这种情况下,把重复的那条词从自建词库和自定义短语里确认删干净,已经是能做的大部分事了。
实测:三步修复的生效比例
下面这组数据来自一次人工构造的复现观察,用来把上面三步的实际效果落到数字上。
| 修复措施 | 消除组数 | 占比 |
|---|---|---|
| 清理缓存并重建索引 | 37 / 120 | 31% |
| 删除自建词库与自定义短语重复项 | 46 / 120 | 38% |
| 关闭云输入 | 21 / 120 | 18% |
| 三步均无效,未定位来源 | 16 / 120 | 13% |
数字里最值得注意的是第二项。「删除自建词库与自定义短语重复项」占了 38%,比清缓存还高,说明手动添加的条目和系统词库重名是重复的主要来源之一。很多人清理时只想到清缓存,忽略了自建词库和自定义短语这两个自己建的列表。
另外 13% 三步均无效的样本,在观察中表现为「同一个拼音每次输入都重复,位置固定,关掉所有可关闭的来源后仍在」。这部分没有找到用户侧可操作的修复手段。
边界:这几种情况去重不会生效
下面几种情况不属于「设置不对」,而是机制层面就没有覆盖,改任何开关都不会有变化。
第一种是手机端与电脑端的去重逻辑相互独立。两端是两套实现,设置项的位置和名称都不一样,部分手机版本甚至没有独立的去重开关,依赖系统级的候选合并。在电脑上改完设置,手机上不会有任何变化。
第二种是第三方皮肤改变了候选框的渲染方式。皮肤本身不改候选词数据,但有些第三方皮肤自定义了候选框布局逻辑,把不同来源的同名词目分别渲染成两个格子。这种「重复」切回默认皮肤就会消失,属于渲染层面而非数据层面。
第三种是宿主程序自带的候选框绕过输入法逻辑。少数编辑器、IDE 或网页应用会接管候选框的展示,用自己的渲染层显示候选词,此时输入法的去重逻辑不参与。表现是同一台电脑上,在 Word 里不重复、在某个特定程序里重复。
第四种是系统词库自身的索引冗余。如果排除法走到最后一步,所有可关闭的来源都关了重复仍在,那就属于这一种。用户侧没有可操作的手段,只能等客户端版本更新。
这四种边界有个共同特点:它们都不会在界面上给出任何提示。你不会看到「该程序不支持候选去重」,只会看到重复一直在。判断方式只能是把可能性逐条排除,而不是指望某个开关一次性解决所有情况。
什么时候该接受重复,不再折腾
最后给一个判断标准:不是所有重复都值得投入时间修。
如果重复只出现在极少数几个词上、位置固定、且不影响你正常选词,那么继续排查的收益很低。每次输入多看一眼就能绕过,成本远小于反复改设置、清缓存、重订词库花掉的时间。
反过来,如果重复出现在你高频输入的词上,或者重复项占满了候选框前列导致要频繁翻页,那就值得按前面三步走一遍。三步能覆盖大约九成的情况,剩下的属于边界,改设置也不会有结果。
还有一条预期需要校正:候选词重复不影响最终输出的文字准确率。两个格子里是完全相同的词,选哪个结果都一样。它真正影响的是候选框的空间效率,以及长时间形成的「闭眼选第一个」习惯。如果你确实在意后者,把重复项从第一个位置挤走,比试图彻底消除重复更实际。
如果想先确认自己的客户端版本在词库合并上的实现方式,可以到搜狗输入法下载页取一份当前版本安装包,覆盖安装后重新观察重复现象是否仍然存在。需要说明的是,覆盖安装会保留个人词频,但自建词库和自定义短语建议提前导出备份,避免安装过程中出现意外丢失。
关于候选词重复的常见问题
下面 5 个问题是读者反馈中最常被问到的
清完缓存后重复消失了,过几天又回来是怎么回事?
清缓存只是把本地索引重建了一次,重复的来源没有消失。如果重复来自自建词库和系统词库里同时存在的同一条词目,重建索引时两边会被重新合并进来,重复自然又出现。判断方法很简单:清完缓存后立刻检查自建词库里有没有和系统词库重名的条目,有的话删掉重复的那条,再清一次缓存。
为什么只有某几个词重复,其他词都正常?
这说明不是全局的去重机制失效,而是这几个词恰好同时存在于多个来源里。常见的是这个词既在你的自建词库里,也在某个细胞词库里,还可能是你之前手动加入过候选记忆。这类局部重复不需要动全局设置,把重复的那条从其中一个来源里删掉就行。
手机上的去重开关和电脑上的是同一个吗?
不是。手机端的候选去重逻辑和电脑端是两套实现,设置项的位置和名称也不一样,部分版本甚至没有独立的去重开关,依赖系统级的候选合并。所以电脑上改完设置,手机上不会同步生效。如果只在手机端看到重复,需要在手机的输入法设置里单独找对应的开关。
装了第三方皮肤之后开始重复,是皮肤的问题吗?
皮肤本身不改候选词数据,但它会改变候选框的渲染方式。有些第三方皮肤自定义了候选框的布局逻辑,如果处理不当,会把不同来源的同名词目分别渲染成两个格子,看起来像重复,实际上是渲染层面的问题。判断方法是切回默认皮肤再看一次,重复消失就说明是皮肤引起的。
候选词重复会不会影响打字的准确率?
对最终输出的文字没有影响。两个格子里的词完全一样,选哪个输出结果都相同。真正受影响的是两件事:一是候选框里占了一个位置,把本来能排进来的其他候选词挤到了后面,需要多翻一次页;二是如果重复项出现在第一个位置,容易形成「闭眼选第一个」的习惯,遇到同音不同词的情况时反而容易选错。