分词过滤器 #
分词过滤器从词元生成器接收产生的词元流,并添加、删除或修改词元。比如,分词过滤器可以将词元小写(如 Actions 变为 action),删除停用词(如 than),或添加同义词(如将 speak 替换为 talk)。
下表列出了 Easysearch 支持的所有分词过滤器。
| 分词过滤器 | 底层 Lucene 分词过滤器 | 描述 |
|---|---|---|
| apostrophe(省略符号分词过滤器) | ApostropheFilter | 对每个包含省略符号的词元,省略符号分词过滤器会移除省略符号及其后面的所有字符。 |
| asciifolding(ASCII 折叠分词过滤器) | ASCIIFoldingFilter | 转换字母、数字和符号字符。 |
| cjk_bigram(CJK 二元分词过滤器) | CJKBigramFilter | 为中文、日文和韩文(CJK)词元形成二元组。 |
| cjk_width(CJK 宽度分词过滤器) | CJKWidthFilter | 根据以下规则对中文、日文和韩文(CJK)词元进行归一化处理: - 将全角 ASCII 字符变体折叠为其等效的基本拉丁字符。 - 将半角片假名变体折叠为其等效的假名。 |
| classic(经典分词过滤器) | ClassicFilter | 对经典分词器生成的词元执行可选的后处理。移除所有格形式(‘s),并从首字母缩略词中移除句点. |
| common_grams(常用词组分词过滤器) | CommonGramsFilter | 为一组频繁出现的术语生成二元组。输出既包含单个术语,也包含二元组。 |
| conditional(条件分词过滤器) | ConditionalTokenFilter | 对与脚本中提供的条件匹配的词元应用一个有序的分词过滤器列表。 |
| decimal_digit(十进制数字分词过滤器) | DecimalDigitFilter | 将 Unicode 十进制数字通用类别中的所有数字转换为基本拉丁数字(0 - 9)。 |
| delimited_payload(分隔符负载分词过滤器) | DelimitedPayloadTokenFilter | 根据提供的分隔符,将词元流拆分为带有相应负载的词元。词元由分隔符之前的所有字符组成,负载由分隔符之后的所有字符组成。例如,如果分隔符是 \| ,对于字符串 foo \| bar,foo 是词元,bar 是负载。 |
| dictionary_decompounder(词典复合词分词过滤器) | DictionaryCompoundWordTokenFilter | 分解在许多日耳曼语系语言中出现的复合词。 |
| edge_ngram(边缘 n 元分词过滤器) | EdgeNGramTokenFilter | 将给定的词元分词为长度在 min_gram 和 max_gram 之间的边缘 n - 元组(从词元开头开始的 n - 元组)。可选择保留原始词元。 |
| elision(省略词分词过滤器) | ElisionFilter | 从词元开头移除指定的省略词。例如,将 l'avion(飞机,法语)变为 avion(飞机,法语)。 |
| fingerprint(指纹分词过滤器) | FingerprintFilter | 对词元列表进行排序和去重,并将词元连接成单个词元。 |
| flatten_graph(平图化分词过滤器) | FlattenGraphFilter | 将由图分词过滤器(如 synonym_graph 或 word_delimiter_graph)生成的词元图进行扁平化处理,使图适合用于索引。 |
| keep_types(保留类型分词过滤器) | TypeTokenFilter | 保留或移除特定类型的词元。 |
| keep_words(词保留分词过滤器) | KeepWordFilter | 根据指定的单词列表检查词元,仅保留列表中的词元。 |
| keyword_marker(关键字标记分词过滤器) | KeywordMarkerFilter | 将指定的词元标记为关键字,防止它们被词干提取。 |
| keyword_repeat(关键字重复分词过滤器) | KeywordRepeatFilter | 对每个输入词元输出两次:一次作为关键字,一次作为非关键字。 |
| kstem(KStem 分词过滤器) | KStemFilter | 为英语提供基于 KStem 的词干提取。将算法词干提取与内置字典相结合。 |
| 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(n-gram 分词过滤器) | NGramTokenFilter | 将给定的词元分词为长度在 min_gram 和 max_gram 之间的 n - 元组。 |
| Normalization(归一化分词过滤器) | 归一化过滤器 - arabic_normalization(阿拉伯语归一化过滤器) - german_normalization(德语归一化过滤器) - hindi_normalization(印地语归一化过滤器) - indic_normalization(印度语系归一化过滤器) - sorani_normalization(索拉尼语归一化过滤器) - persian_normalization(波斯语归一化过滤器) - scandinavian_normalization(斯堪的纳维亚语归一化过滤器) - scandinavian_folding(斯堪的纳维亚语折叠过滤器) - serbian_normalization(塞尔维亚语归一化过滤器) | 对所列语言之一的字符进行归一化处理。 |
| pattern_capture(捕获匹配分词过滤器) | 无 | 为提供的正则表达式中的每个捕获组生成一个词元。使用 Java 正则表达式语法。 |
| pattern_replace(匹配替换分词过滤器) | 无 | 在提供的正则表达式中匹配一个模式,并替换匹配的子字符串。使用 Java 正则表达式语法。 |
| porter_stem(波特词干分词过滤器) | PorterStemFilter | 使用 Porter 词干提取算法为英语进行算法词干提取。 |
| predicate_token_filter(谓词分词过滤器) | 无 | 移除与指定谓词脚本不匹配的词元。仅支持内联 Painless 脚本。 |
| remove_duplicates(去重分词过滤器) | RemoveDuplicatesTokenFilter | 移除处于同一位置的重复词元。 |
| reverse(反转分词过滤器) | ReverseStringFilter | 反转词元流中每个词元对应的字符串。例如,词元 dog 变为 god。 |
| shingle(词片分词过滤器) | ShingleFilter | 为词元流中的词元生成长度在 min_shingle_size 和 max_shingle_size 之间的瓦片。瓦片类似于 n - 元组,但使用单词而不是字母生成。例如,添加到单字词列表 [contribute, to, easysearch] 中的双词瓦片是 [contribute to, to easysearch]。 |
| 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 属性。 |