创建自定义词典文件

对于拼写检查器已支持的每种语言(参见支持的语言),或通过 Hunspell 词典路径中包含的额外 Hunspell 词典文件添加的任何任意语言(参见为拼写检查器添加 Hunspell 词典),都可以创建一个自定义词典。还可以定义一个额外的“全局”词典,其中包含在所有语言中都有效的单词,如商标。

特定语言的自定义词典文件必须以该语言的语言代码(参见支持的语言以获取语言代码示例)加上后缀 .txt 来命名,例如 en.txt、en-GB.txt、fr.txt、de.txt 等。

用于与语言无关的单词的“全局”词典文件必须命名为“global.txt”。

服务器将按照上述配置扫描词典目录,并选取每种语言的“txt”文件以及全局文件(如果存在)。

自定义词典文件格式

词典文件必须是一个简单文本文件,具有以下特征:

  • 每行一个单词,

  • 行尾可以是 Windows 风格或 Linux 风格(CR 或 CR+LF)

  • 没有注释或空行,并且

  • 以 UTF-8 编码保存,带或不带 BOM(字节顺序标记)。

最后一点对于在非 Linux(Windows 或 Mac)系统上创建或编辑的文件很重要,因为这些系统通常会以不同的方式编码文本文件。然而,Windows 或 Mac 编辑器(如 Windows 记事本)可以选择在请求时以 UTF-8 保存文件。请检查您所选编辑器的此功能。未能选择正确的编码会导致非英文字母(如变元音和重音符号)出现问题。

德语和芬兰语 - 德语和芬兰语的拼写检查将采用复合词拼写检查。只要根词“Fußball”和“Tennis”分别存在于词典中,像“Fußballtennis”这样的复合词就会被认为是正确的。无需单独添加“Fußballtennis”。

配置自定义词典功能

需要对 application.conf 文件进行额外配置。(更新配置后别忘了重启 Docker 容器。)

ephox.spelling.custom-dictionaries-path 元素用于定义自定义词典的位置。如果未提供该设置,则不会加载任何自定义词典。

要求:

  • 包含自定义词典的目录必须作为卷挂载到容器中。

  • 该目录不应包含子目录或非词典文件。

建议将自定义词典存储在与 application.conf 文件类似的位置。例如,如果 application.conf 位于名为 /opt/ephox 的目录中,则词典文件可以存储在子目录 /opt/ephox/dictionaries 中。

示例:

ephox {
  spelling {
    custom-dictionaries-path = "/opt/ephox/dictionaries"
  }
}

动态自定义词典

添加 ephox.spelling.dynamic-custom-dictionaries 元素并将其设置为 true 将指示拼写服务定期检查 custom-dictionaries-path 是否有更改,并相应地更新自定义词典。这允许在不重启拼写服务的情况下更新自定义词典。默认值为 false。

示例:

ephox {
  spelling {
    custom-dictionaries-path = "/opt/ephox/dictionaries"
    dynamic-custom-dictionaries = true
  }
}

验证自定义词典功能

如果配置成功,在使用静态自定义词典时,自定义词典功能将在启动时在服务日志中报告找到的词典。

示例:

INFO  c.e.i.d.StaticCustomDictionaries$ - 使用自定义词典:[全局] = 在 Hunspell 引擎中有 2 个单词
INFO  c.e.i.d.StaticCustomDictionaries$ - 使用自定义词典:[全局] = 在 WinterTree 引擎中有 2 个单词
INFO  c.e.i.d.StaticCustomDictionaries$ - 使用自定义词典:en-US = 在 Hunspell 引擎中有 4 个单词
INFO  c.e.i.d.StaticCustomDictionaries$ - 使用自定义词典:en-US = 在 WinterTree 引擎中有 4 个单词
INFO  c.e.i.d.StaticCustomDictionaries$ - 使用自定义词典:fr = 在 Hunspell 引擎中有 3 个单词
INFO  c.e.i.d.StaticCustomDictionaries$ - 使用自定义词典:fr = 在 WinterTree 引擎中有 3 个单词

上述日志显示找到了 3 个自定义词典,一个是“全局”的、与语言无关的词典,另外两个分别是英语和法语的词典。它们分别包含 2、4 和 3 个单词。在此情况下,动态自定义词典功能已禁用,并且包含了 Hunspell。请检查此报告是否符合您的预期。

当启用动态自定义词典时,每次请求匹配自定义词典语言时都会显示类似的日志:

INFO  c.e.s.c.CachedCustomDictionaries$ - 使用自定义词典:[全局] = 在 Hunspell 引擎中有 2 个单词
INFO  c.e.s.c.CachedCustomDictionaries$ - 使用自定义词典:en-US = 在 Hunspell 引擎中有 1 个单词

上述日志显示找到的英语自定义词典包含 1 个单词。

持续的词典维护

除非将 ephox.spelling.dynamic-custom-dictionaries 设置设为 true,否则初始部署后对词典的任何新增或更改都将需要每次都重新启动拼写检查服务。