连字符分解词元过滤器编辑

使用基于 XML 的连字符模式来查找复合词中潜在的子词。然后,这些子词将根据指定的词表进行检查。不在列表中的子词将从词元输出中排除。

此过滤器使用 Lucene 的 HyphenationCompoundWordTokenFilter,该过滤器是为日耳曼语设计的。

示例编辑

以下 分析 API 请求使用 hyphenation_decompounder 过滤器根据 analysis/hyphenation_patterns.xml 文件中的德语连字符模式在 Kaffeetasse 中查找子词。然后,过滤器将这些子词与指定的词列表进行比较:kaffeezuckertasse

GET _analyze
{
  "tokenizer": "standard",
  "filter": [
    {
      "type": "hyphenation_decompounder",
      "hyphenation_patterns_path": "analysis/hyphenation_patterns.xml",
      "word_list": ["Kaffee", "zucker", "tasse"]
    }
  ],
  "text": "Kaffeetasse"
}

过滤器生成以下词元

[ Kaffeetasse, Kaffee, tasse ]

可配置参数编辑

hyphenation_patterns_path

(必需,字符串) Apache FOP (Formatting Objects Processor) XML 连字符模式文件的路径。

此路径必须是绝对路径或相对于 config 位置的相对路径。仅支持 FOP v1.2 兼容文件。

例如,FOP XML 连字符模式文件,请参考

word_list

(必需*,字符串数组) 子词列表。使用连字符模式找到但不在此列表中的子词将从词元输出中排除。

可以使用 dictionary_decompounder 过滤器在实现词表之前测试词表的质量。

必须指定此参数或 word_list_path

word_list_path

(必需*,字符串) 包含子词列表的文件的路径。使用连字符模式找到但不在此列表中的子词将从词元输出中排除。

此路径必须是绝对路径或相对于 config 位置的相对路径,并且文件必须是 UTF-8 编码的。文件中每个词元必须用换行符分隔。

可以使用 dictionary_decompounder 过滤器在实现词表之前测试词表的质量。

必须指定此参数或 word_list

max_subword_size
(可选,整数) 最大子词字符长度。更长的子词词元将从输出中排除。默认为 15
min_subword_size
(可选,整数) 最小子词字符长度。更短的子词词元将从输出中排除。默认为 2
min_word_size
(可选,整数) 最小词字符长度。更短的词词元将从输出中排除。默认为 5
only_longest_match
(可选,布尔值) 如果为 true,则仅包含最长的匹配子词。默认为 false

自定义和添加到分析器编辑

要自定义 hyphenation_decompounder 过滤器,请复制它以创建新自定义词元过滤器的基础。可以使用其可配置参数修改过滤器。

例如,以下 创建索引 API 请求使用自定义 hyphenation_decompounder 过滤器来配置新的 自定义分析器

自定义 hyphenation_decompounder 过滤器根据 analysis/hyphenation_patterns.xml 文件中的连字符模式查找子词。然后,过滤器将这些子词与 analysis/example_word_list.txt 文件中指定的词列表进行比较。长度超过 22 个字符的子词将从词元输出中排除。

PUT hyphenation_decompound_example
{
  "settings": {
    "analysis": {
      "analyzer": {
        "standard_hyphenation_decompound": {
          "tokenizer": "standard",
          "filter": [ "22_char_hyphenation_decompound" ]
        }
      },
      "filter": {
        "22_char_hyphenation_decompound": {
          "type": "hyphenation_decompounder",
          "word_list_path": "analysis/example_word_list.txt",
          "hyphenation_patterns_path": "analysis/hyphenation_patterns.xml",
          "max_subword_size": 22
        }
      }
    }
  }
}