分词过滤器

分词过滤器 #

分词过滤器从词元生成器接收产生的词元流,并添加、删除或修改词元。比如,分词过滤器可以将词元小写(如 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 \| barfoo 是词元,bar 是负载。
dictionary_decompounder(字典复合词分解过滤器)DictionaryCompoundWordTokenFilter分解在许多日耳曼语系语言中出现的复合词。
edge_ngram(边缘 n - 元组过滤器)EdgeNGramTokenFilter将给定的词元分词为长度在 min_grammax_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_grammax_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_sizemax_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 属性。