如何移除自托管LanguageTool实例拼写建议中的特定词汇?
LanguageTool私有实例移除特定拼写建议词条方案
你之前修改/org/languagetool/resource/en/hunspell路径下文件不生效,核心原因有两个:一是拼写建议生成不是只靠该路径下的Hunspell词典,形近替换建议是n-gram相似度匹配、内置错误规则库、自定义过滤规则多层逻辑共同输出的结果;二是你检测的是拉丁语单词sunt,配置放在英语(en)的资源目录下,根本不会被拉丁语检测逻辑加载。
按以下优先级操作即可实现需求,不需要修改核心源码:
- 优先用外部配置覆盖方案:在部署目录外新建自定义资源文件夹,创建
disallowed_suggestions.txt文件,把你要剔除的s替换c组成的错误建议词条单独写一行。启动实例时通过启动参数指定外部资源加载路径,把这个文件映射到内置资源路径/org/languagetool/resource/la/disallowed_suggestions.txt(注意路径是拉丁语la的资源目录,不是之前的英语en目录),重启实例后该词条就会被全局从拼写建议列表里过滤掉。 - 如果你用的是5.9及以上版本的LanguageTool,不用手动改文件,直接打开实例自带的Web管理后台,找到「拼写检查配置」板块,在「禁止建议词」输入框里添加目标词条,保存后即时生效。
- 如果你是源码编译部署的版本,可以直接加一层自定义过滤逻辑:重写
SpellingCheckRule类的getSuggestions方法,在方法返回建议列表前,遍历把目标词条删掉就行,这种方式适配所有版本,还能实现按检测场景、语言分别过滤的复杂需求。
注意:不要直接解压jar包修改内置资源文件,这种方式改完需要重新打包、清空实例的规则缓存才会生效,后续升级版本还会直接覆盖你的修改,优先用外部配置覆盖的方式,维护成本最低。
内容的提问来源于stack exchange,提问作者somecallitblues
相关产品推荐
相关产品推荐

