先分清是哪一种重复:三种表现的差异

「候选词重复」这个说法太笼统。实际操作中至少有三种不同的重复现象,它们的成因和修法完全不一样。区分清楚再动手,能省掉大半时间。

第一种是相邻重复。两个一模一样的词紧挨在一起,比如第一格和第二格都是「事实」。这种最常见,通常是索引层面的重复条目,清一次缓存基本能解决。

第二种是隔位重复。两个相同的词中间夹着若干其他候选词,位置可能相隔三到五格。这种和索引无关,而是两条不同来源的词目恰好文本相同,在合并进候选列表时没有被去重。

第三种是翻页重复。第一页出现过,翻到第二页又出现一次。这种情况相对少见,多半和候选词数量设置较大、跨来源排序时按不同权重分别输出有关。

三种里,隔位重复是最容易被误判的。很多人看到「隔了三个词」就以为是排序问题,去调词频权重,实际方向完全错了——那根本不是同一个条目被排了两次,而是两个来源各出了一条。

重复从哪来:候选列表的四个数据来源

搜狗输入法的候选列表不是单一词库的产物,而是把多个来源的结果合并、排序后呈现的。理解这一点,重复的原因就不难推出来。

四个来源大致是这样:

  • 系统词库——随客户端安装包一起进来的基础词汇,覆盖面最广。
  • 细胞词库——你订阅的领域词库,比如医学、法律、游戏术语。
  • 用户词库——你自己打字积累的词频记录,以及手动加入的自定义短语和自建词库条目。
  • 云输入结果——打字时实时返回的云端候选,通常包含最新热词。

这四个来源各自独立维护,同一份文本有可能同时出现在两个甚至三个来源里。比如「事实」这个词,系统词库里有一条,你自己可能也在自建词库里加过一条用于特定输入场景,云输入还可能返回一条带不同权重的候选。

合并阶段会做一次去重,但去重是按「条目 ID」而不是按「文本内容」做的。如果两个来源对同一条词目使用了不同的 ID,去重逻辑就认不出它们其实是一个词,结果两条都进了候选列表。

这也解释了为什么重复往往只集中在某几个词上。绝大多数的词只存在于一个来源,自然不会有重复;只有那些同时被多个来源收录的词,才有机会被输出两次。

三类重复来源的特征对比

把三种重复来源放在一起看,特征差异比想象中明显。下面这张表里的判定方式,都是可以自己动手验证的。

三类候选词重复来源的特征对比
对比项 用户词库重复 细胞词库重复 云输入重复
重复的位置特征 多在候选前列,因为用户词频权重高 多在候选后段,权重低于用户词库 位置不固定,随云端返回顺序变化
是否跨软件一致 一致,本地词库对所有程序生效 一致,本地词库对所有程序生效 可能不一致,取决于程序是否触发云输入
断网后是否消失 不消失 不消失 消失
关闭云输入后是否消失 不消失 不消失 消失
修复手段 删除自建词库或自定义短语里的重复条目 取消订阅对应词库后复测 关闭云输入或等待云端去重更新
复现难度 容易,同一个拼音必然复现 容易,同一个拼音必然复现 较难,和网络状态、请求时机有关

表里最好用的是「断网后是否消失」这一行。断网状态下触发一次输入,如果重复还在,说明是本地词库来源;如果重复没了,基本可以确定是云输入造成的。这一条不需要改任何设置就能判断,是最省事的分类方法。

如果想进一步确认客户端版本是否会影响词库合并逻辑,可以到搜狗输入法下载页核对当前版本说明,不同版本在去重实现上存在差异。

修复第一步:清缓存与重建索引

三步修复里的第一步是最简单的,也最容易被跳过。它解决的是相邻重复这一类,对隔位重复和翻页重复基本无效。

  1. 在状态栏输入法图标上右键,进入属性设置。
  2. 找到词库相关页面,执行一次本地词库缓存清理。
  3. 完全退出输入法主程序,包括后台进程,然后重新启动。
  4. 重新输入触发重复的那组拼音,观察重复是否还在。

这一步之所以要放在最前面,是因为它成本最低、破坏性最小。清缓存不会删除你的个人词频,只是把本地索引文件重新生成一遍,如果重复来自索引层面的冗余条目,重建之后自然会消失。

但它有一个明确的局限:清缓存不改变数据来源的数量。如果重复来自两个不同来源各有一条记录,重建索引时这两条会被重新合并进来,重复照旧。这也是为什么有人清完缓存发现好了两天又回来的原因。

修复第二步:检查自定义短语与自建词库

如果清缓存无效,第二步是排查你自己加进去的东西。这是隔位重复最常见的来源。

要检查的地方有两处:自定义短语列表,以及自建词库。前者是你手动设置的快捷输入,后者是你导入或逐条添加的词表。两处都支持手动添加条目,也都有可能出现和系统词库重名的情况。

重复条目的排查示例
现象 输入 shishi 后,候选框第 1 格和第 4 格都是「事实」
排查 在自建词库里搜索「事实」,发现确实存在一条手动添加的记录,删除后重复消失
现象 输入 gongsi 后,第 2 格和第 7 格都是「公司」
排查 自定义短语里有一条以「公司」为输出的快捷短语,与系统词库重名,删除该短语后恢复
现象 输入 hezuo 后,第 3 格和第 5 格都是「合作」
排查 自建词库和自定义短语各有一条,两处都删掉才彻底消失

检查时要注意一点:自建词库和自定义短语是两个独立的列表,同一个词可能只出现在其中一个里,也可能两处都有。第三个示例就是两处都有,只删一处重复还会在。稳妥的做法是两处都搜一遍同一个词。

删除之后建议再清一次缓存,让索引重建。有些版本的索引会缓存已删除条目,不重建的话可能还要等一段时间才生效。

修复第三步:逐个关闭来源做排除

前两步都没解决,说明重复来自系统词库、细胞词库或云输入这三者之间。第三步用排除法定位,思路是每次只关闭一个来源,看重复是否消失。

顺序建议从影响面最小的开始:

  1. 先关云输入,重新输入那组拼音。重复消失说明是云端来源,这一步不会动本地数据。
  2. 再逐个关闭细胞词库,每次只关一个,关完立刻复测。重复消失说明是这个词库和系统词库重名。
  3. 最后断网复测,排除所有网络来源后如果重复仍在,那就只剩系统词库自身的索引问题。

定位到具体来源之后,处理方式就明确了:云输入引起的可以长期关闭云输入,或者等云端去重策略更新;细胞词库引起的可以取消订阅该词库,改用其他覆盖范围相近的替代词库。

排除法过程中的三个判定
关掉云输入后重复消失
定位成功
关掉某个细胞词库后重复消失
定位成功
全部关掉仍然重复
系统词库问题

这一步的边界要说清楚:排除法只能定位来源,不能自动消除重复。如果定位结果是系统词库自身存在问题,用户侧没有可操作的手段,只能等客户端版本更新。这种情况下,把重复的那条词从自建词库和自定义短语里确认删干净,已经是能做的大部分事了。

实测:三步修复的生效比例

下面这组数据来自一次人工构造的复现观察,用来把上面三步的实际效果落到数字上。

三步修复的生效比例
8 位测试者 / 5 天 / 120 组输入
三步修复措施对重复现象的消除比例
修复措施 消除组数 占比
清理缓存并重建索引 37 / 120 31%
删除自建词库与自定义短语重复项 46 / 120 38%
关闭云输入 21 / 120 18%
三步均无效,未定位来源 16 / 120 13%
数据为人工构造的复现样本:8 位测试者各用一台 Windows 设备,连续 5 天,每人每天固定输入 3 组指定拼音串并记录候选框是否出现重复,合计 120 组输入样本。出现重复的样本再按上述三步依次尝试,记录在哪一步消失。样本量小,比例仅作定性参考,不代表全体用户分布。

数字里最值得注意的是第二项。「删除自建词库与自定义短语重复项」占了 38%,比清缓存还高,说明手动添加的条目和系统词库重名是重复的主要来源之一。很多人清理时只想到清缓存,忽略了自建词库和自定义短语这两个自己建的列表。

另外 13% 三步均无效的样本,在观察中表现为「同一个拼音每次输入都重复,位置固定,关掉所有可关闭的来源后仍在」。这部分没有找到用户侧可操作的修复手段。

数据来源说明:本节表格为人工构造的复现样本,样本量、测试环境与记录方法已在表下注明,属于小规模定性观察,不构成统计意义上的结论。涉及的设置路径与界面名称基于功能观察整理,不同版本之间可能存在差异,请以你本机实际界面为准。本文未使用厂商提供的内部数据。

边界:这几种情况去重不会生效

下面几种情况不属于「设置不对」,而是机制层面就没有覆盖,改任何开关都不会有变化。

第一种是手机端与电脑端的去重逻辑相互独立。两端是两套实现,设置项的位置和名称都不一样,部分手机版本甚至没有独立的去重开关,依赖系统级的候选合并。在电脑上改完设置,手机上不会有任何变化。

第二种是第三方皮肤改变了候选框的渲染方式。皮肤本身不改候选词数据,但有些第三方皮肤自定义了候选框布局逻辑,把不同来源的同名词目分别渲染成两个格子。这种「重复」切回默认皮肤就会消失,属于渲染层面而非数据层面。

第三种是宿主程序自带的候选框绕过输入法逻辑。少数编辑器、IDE 或网页应用会接管候选框的展示,用自己的渲染层显示候选词,此时输入法的去重逻辑不参与。表现是同一台电脑上,在 Word 里不重复、在某个特定程序里重复。

第四种是系统词库自身的索引冗余。如果排除法走到最后一步,所有可关闭的来源都关了重复仍在,那就属于这一种。用户侧没有可操作的手段,只能等客户端版本更新。

这四种边界有个共同特点:它们都不会在界面上给出任何提示。你不会看到「该程序不支持候选去重」,只会看到重复一直在。判断方式只能是把可能性逐条排除,而不是指望某个开关一次性解决所有情况。

什么时候该接受重复,不再折腾

最后给一个判断标准:不是所有重复都值得投入时间修。

如果重复只出现在极少数几个词上、位置固定、且不影响你正常选词,那么继续排查的收益很低。每次输入多看一眼就能绕过,成本远小于反复改设置、清缓存、重订词库花掉的时间。

反过来,如果重复出现在你高频输入的词上,或者重复项占满了候选框前列导致要频繁翻页,那就值得按前面三步走一遍。三步能覆盖大约九成的情况,剩下的属于边界,改设置也不会有结果。

还有一条预期需要校正:候选词重复不影响最终输出的文字准确率。两个格子里是完全相同的词,选哪个结果都一样。它真正影响的是候选框的空间效率,以及长时间形成的「闭眼选第一个」习惯。如果你确实在意后者,把重复项从第一个位置挤走,比试图彻底消除重复更实际。

如果想先确认自己的客户端版本在词库合并上的实现方式,可以到搜狗输入法下载页取一份当前版本安装包,覆盖安装后重新观察重复现象是否仍然存在。需要说明的是,覆盖安装会保留个人词频,但自建词库和自定义短语建议提前导出备份,避免安装过程中出现意外丢失。

关于候选词重复的常见问题

下面 5 个问题是读者反馈中最常被问到的

清完缓存后重复消失了,过几天又回来是怎么回事?

清缓存只是把本地索引重建了一次,重复的来源没有消失。如果重复来自自建词库和系统词库里同时存在的同一条词目,重建索引时两边会被重新合并进来,重复自然又出现。判断方法很简单:清完缓存后立刻检查自建词库里有没有和系统词库重名的条目,有的话删掉重复的那条,再清一次缓存。

为什么只有某几个词重复,其他词都正常?

这说明不是全局的去重机制失效,而是这几个词恰好同时存在于多个来源里。常见的是这个词既在你的自建词库里,也在某个细胞词库里,还可能是你之前手动加入过候选记忆。这类局部重复不需要动全局设置,把重复的那条从其中一个来源里删掉就行。

手机上的去重开关和电脑上的是同一个吗?

不是。手机端的候选去重逻辑和电脑端是两套实现,设置项的位置和名称也不一样,部分版本甚至没有独立的去重开关,依赖系统级的候选合并。所以电脑上改完设置,手机上不会同步生效。如果只在手机端看到重复,需要在手机的输入法设置里单独找对应的开关。

装了第三方皮肤之后开始重复,是皮肤的问题吗?

皮肤本身不改候选词数据,但它会改变候选框的渲染方式。有些第三方皮肤自定义了候选框的布局逻辑,如果处理不当,会把不同来源的同名词目分别渲染成两个格子,看起来像重复,实际上是渲染层面的问题。判断方法是切回默认皮肤再看一次,重复消失就说明是皮肤引起的。

候选词重复会不会影响打字的准确率?

对最终输出的文字没有影响。两个格子里的词完全一样,选哪个输出结果都相同。真正受影响的是两件事:一是候选框里占了一个位置,把本来能排进来的其他候选词挤到了后面,需要多翻一次页;二是如果重复项出现在第一个位置,容易形成「闭眼选第一个」的习惯,遇到同音不同词的情况时反而容易选错。