连字符分解词元过滤器
编辑连字符分解词元过滤器编辑
使用基于 XML 的连字符模式来查找复合词中潜在的子词。然后,这些子词将根据指定的词表进行检查。不在列表中的子词将从词元输出中排除。
此过滤器使用 Lucene 的 HyphenationCompoundWordTokenFilter,该过滤器是为日耳曼语设计的。
示例编辑
以下 分析 API 请求使用 hyphenation_decompounder
过滤器根据 analysis/hyphenation_patterns.xml
文件中的德语连字符模式在 Kaffeetasse
中查找子词。然后,过滤器将这些子词与指定的词列表进行比较:kaffee
、zucker
和 tasse
。
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 连字符模式文件,请参考
- Objects For Formatting Objects (OFFO) Sourceforge 项目
- offo-hyphenation_v1.2.zip 直接下载 (不支持 v2.0 及更高版本的连字符模式文件)
-
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 } } } } }