词元过滤器
分词过滤器接收来自分词器的分词流,并对分词进行添加、删除或修改。例如,分词过滤器可以将分词小写,使得 Actions
变为 action
;移除停用词,例如 than
;或者添加同义词,例如为单词 speak
添加同义词 talk
。
下表列出了 OpenSearch 支持的所有分词过滤器。
分词过滤器 | 底层 Lucene 分词过滤器 | 描述 |
apostrophe | ApostropheFilter | 在每个包含撇号的分词中,apostrophe 分词过滤器会移除撇号本身及其后的所有字符。 |
asciifolding | ASCIIFoldingFilter | 转换字母、数字和符号字符。 |
cjk_bigram | CJKBigramFilter | 为中文、日文和韩文 (CJK) 分词形成二元词。 |
cjk_width | CJKWidthFilter | 根据以下规则规范化中文、日文和韩文 (CJK) 分词 - 将全角 ASCII 字符变体折叠为等效的基本拉丁字符。 - 将半角片假名字符变体折叠为等效的假名字符。 |
classic | ClassicFilter | 对经典分词器生成的分词执行可选的后处理。移除所有格('s )并从缩写词中移除 . 。 |
common_grams | CommonGramsFilter | 为一组常用术语生成二元词。输出包含单个术语和二元词。 |
conditional | ConditionalTokenFilter | 对与脚本中提供的条件匹配的分词应用一个有序的分词过滤器列表。 |
decimal_digit | DecimalDigitFilter | 将 Unicode 十进制数字通用类别中的所有数字转换为基本拉丁数字(0–9)。 |
delimited_payload | DelimitedPayloadTokenFilter | 根据提供的分隔符,将分词流分离为带相应有效负载的分词。分词由分隔符前的所有字符组成,有效负载由分隔符后的所有字符组成。例如,如果分隔符是 | ,那么对于字符串 foo|bar ,foo 是分词,bar 是有效负载。 |
delimited_term_freq | DelimitedTermFrequencyTokenFilter | 根据提供的分隔符,将分词流分离为带相应术语频率的分词。分词由分隔符前的所有字符组成,术语频率是分隔符后的整数。例如,如果分隔符是 | ,那么对于字符串 foo|5 ,foo 是分词,5 是术语频率。 |
dictionary_decompounder | DictionaryCompoundWordTokenFilter | 分解许多日耳曼语系语言中的复合词。 |
edge_ngram | EdgeNGramTokenFilter | 将给定分词转换为边 n-gram(从分词开头开始的 n-gram),其长度介于 min_gram 和 max_gram 之间。可选地,保留原始分词。 |
elision | ElisionFilter | 从分词开头移除指定的省音。例如,将 l'avion (飞机)改为 avion (飞机)。 |
fingerprint | FingerprintFilter | 对分词列表进行排序和去重,并将分词连接成单个分词。 |
flatten_graph | FlattenGraphFilter | 展平由图分词过滤器(例如 synonym_graph 或 word_delimiter_graph )生成的分词图,使该图适合于索引。 |
hunspell | HunspellStemFilter | 使用 Hunspell 规则对分词进行词干提取。由于 Hunspell 允许一个单词有多个词干,因此此过滤器可以为每个消耗的分词发出多个分词。需要配置一个或多个特定语言的 Hunspell 字典。 |
hyphenation_decompounder | HyphenationCompoundWordTokenFilter | 使用基于 XML 的连字符模式在复合词中查找潜在的子词,并根据指定的词列表检查这些子词。分词输出只包含在词列表中找到的子词。 |
keep_types | TypeTokenFilter | 保留或移除特定类型的分词。 |
keep_words | KeepWordFilter | 根据指定的词列表检查分词,并只保留列表中存在的分词。 |
keyword_marker | KeywordMarkerFilter | 将指定的分词标记为关键词,防止它们被词干提取。 |
keyword_repeat | KeywordRepeatFilter | 将每个传入的分词发出两次:一次作为关键词,一次作为非关键词。 |
kstem | KStemFilter | 为英语提供基于 KStem 的词干提取。结合了算法词干提取和内置词典。 |
kuromoji_completion | JapaneseCompletionFilter | 向分词流添加日语罗马化术语(除原始分词外)。通常用于支持日语搜索词的自动完成。请注意,当在索引分析器中使用时,此过滤器有一个 mode 参数应设置为 index ;当在搜索分析器中使用时,应设置为 query 。需要 analysis-kuromoji 插件。有关安装插件的信息,请参阅附加插件。 |
length | LengthFilter | 移除短于或长于由 min 和 max 指定的长度范围的分词。 |
limit | LimitTokenCountFilter | 限制输出分词的数量。例如,可以根据分词计数限制文档字段值的大小。 |
lowercase | LowerCaseFilter | 将分词转换为小写。默认的 LowerCaseFilter 处理英语。要处理其他语言,请将 language 参数设置为 greek (使用 GreekLowerCaseFilter)、irish (使用 IrishLowerCaseFilter)或 turkish (使用 TurkishLowerCaseFilter)。 |
min_hash | MinHashFilter | 使用MinHash 技术估算文档相似度。按顺序对分词流执行以下操作 1. 对流中的每个分词进行哈希处理。 2. 将哈希值分配给桶,只保留每个桶中最小的哈希值。 3. 将每个桶中最小的哈希值作为分词流输出。 |
multiplexer | 不适用 | 在相同位置发出多个分词。将每个分词分别通过每个指定的过滤器列表运行,并将结果作为单独的分词输出。 |
ngram | NGramTokenFilter | 将给定分词转换为长度介于 min_gram 和 max_gram 之间的 n-gram。 |
规范化 | arabic_normalization : ArabicNormalizergerman_normalization : GermanNormalizationFilterhindi_normalization : HindiNormalizerindic_normalization : IndicNormalizersorani_normalization : SoraniNormalizerpersian_normalization : PersianNormalizerscandinavian_normalization : ScandinavianNormalizationFilterscandinavian_folding : ScandinavianFoldingFilterserbian_normalization : SerbianNormalizationFilter | 规范化所列语言的字符。 |
pattern_capture | 不适用 | 为所提供的正则表达式中的每个捕获组生成一个分词。使用Java 正则表达式语法。 |
pattern_replace | 不适用 | 匹配所提供的正则表达式中的模式并替换匹配的子字符串。使用Java 正则表达式语法。 |
phonetic | 不适用 | 使用语音编码器为分词流中的每个分词发出一个元音分词。需要安装 analysis-phonetic 插件。 |
porter_stem | PorterStemFilter | 使用Porter 词干提取算法对英语进行算法词干提取。 |
predicate_token_filter | 不适用 | 移除与指定谓词脚本不匹配的分词。仅支持内联 Painless 脚本。 |
remove_duplicates | RemoveDuplicatesTokenFilter | 移除同一位置的重复分词。 |
reverse | ReverseStringFilter | 反转分词流中每个分词对应的字符串。例如,分词 dog 变为 god 。 |
shingle | ShingleFilter | 为分词流中的分词生成长度介于 min_shingle_size 和 max_shingle_size 之间的 shingle。Shingle 类似于 n-gram,但它是使用单词而不是字母生成的。例如,添加到 unigram 列表 [contribute , to , opensearch ] 的两个词 shingle 是 [contribute to , to opensearch ]。 |
snowball | 不适用 | 使用Snowball 生成的词干提取器对单词进行词干提取。 snowball 分词过滤器支持在 language 字段中使用以下语言:Arabic 、Armenian 、Basque 、Catalan 、Danish 、Dutch 、English 、Estonian 、Finnish 、French 、German 、German2 、Hungarian 、Irish 、Italian 、Kp 、Lithuanian 、Lovins 、Norwegian 、Porter 、Portuguese 、Romanian 、Russian 、Spanish 、Swedish 、Turkish 。 |
stemmer | 不适用 | 为 language 字段中使用的以下语言提供算法词干提取:arabic 、armenian 、basque 、bengali 、brazilian 、bulgarian 、catalan 、czech 、danish 、dutch 、dutch_kp 、english 、light_english 、lovins 、minimal_english 、porter2 、possessive_english 、estonian 、finnish 、light_finnish 、french 、light_french 、minimal_french 、galician 、minimal_galician 、german 、german2 、light_german 、minimal_german 、greek 、hindi 、hungarian 、light_hungarian 、indonesian 、irish 、italian 、light_italian 、latvian 、Lithuanian 、norwegian 、light_norwegian 、minimal_norwegian 、light_nynorsk 、minimal_nynorsk 、portuguese 、light_portuguese 、minimal_portuguese 、portuguese_rslp 、romanian 、russian 、light_russian 、sorani 、spanish 、light_spanish 、swedish 、light_swedish 、turkish 。 |
stemmer_override | 不适用 | 通过应用自定义映射来覆盖词干提取算法,从而使提供的术语不被词干提取。 |
stop | StopFilter | 从分词流中移除停用词。 |
synonym | 不适用 | 为分析过程提供同义词列表。同义词列表通过配置文件提供。 |
synonym_graph | 不适用 | 为分析过程提供同义词列表,包括多词同义词。 |
trim(修剪) | TrimFilter | 从流中的每个词元中修剪前导和尾随的空白字符。 |
truncate | TruncateTokenFilter | 截断长度超出指定字符限制的词元。 |
unique | 不适用 | 通过从流中移除重复的词元来确保每个词元都是唯一的。 |
uppercase | UpperCaseFilter | 将词元转换为大写。 |
word_delimiter | WordDelimiterFilter | 根据指定的规则,在非字母数字字符处分割词元并执行规范化。 |
word_delimiter_graph | WordDelimiterGraphFilter | 根据指定的规则,在非字母数字字符处分割词元并执行规范化。为多位置词元分配一个 positionLength 属性。 |