分词过滤器 #
分词过滤器从词元生成器接收产生的词元流,并添加、删除或修改词元。比如,分词过滤器可以将词元小写(如 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 的词干提取。将算法词干提取与内置字典相结合。 |
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(n - 元组过滤器) | 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 正则表达式语法。 |
phonetic(语音过滤器) | 无 | 使用语音编码器为词元流中的每个词元输出一个双音词词元。需要安装 analysis - phonetic 插件。 |
porter_stem(Porter 词干提取过滤器) | 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 生成的词干提取器对单词进行词干提取。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 属性。 |