Tokenzier Filter 可以从 Tokenizer 接收 token stream,并且可以修改 token(如小写化),删除 token(如去除stopwords),添加 token(如同义词);
1. Apostrophe token filter
- apostrophe 可以将撇号后面的内容全部去掉,包括撇号本身;
```json
GET /_analyze
{
“tokenizer” : “standard”,
“filter” : [“apostrophe”],
“text” : “Istanbul’a veya Istanbul’dan”
}
token stream:[Istanbul’a, veya, Istanbul’dan]
结果:[ Istanbul, veya, Istanbul ]
自定义 Analyzer
PUT /apostrophe_example { “settings” : { “analysis” : { “analyzer” : { “standard_apostrophe” : { “tokenizer” : “standard”, “filter” : [“apostrophe”] } } } } }
<a name="wyRxL"></a>
# 2. ASCII folding token filter
- **asciifolding**,将不在 Basic Latin Unicode(前127个 ASCII 字符)中的字母、数字和符号字符转换为其等效的ASCII(如果存在)。例如,过滤器将 à 更改为 a。
- **可选参数:**
| **参数** | **参数说明** |
| :---: | :---: |
| preserve_original | (可选,布尔值)如果为true,则同时发出原始token和处理后的token。默认为false。 |
```json
PUT /asciifold_example
{
"settings" : {
"analysis" : {
"analyzer" : {
"standard_asciifolding" : {
"tokenizer" : "standard",
"filter" : ["my_ascii_folding"]
}
},
"filter" : {
"my_ascii_folding" : {
"type" : "asciifolding",
"preserve_original" : true
}
}
}
}
}
#测试
GET asciifold_example/_analyze
{
"analyzer": "standard_asciifolding",
"text" : "açaí à la carte"
}
#结果:[ acai, açaí, a, à, la, carte ]
3. CJK bigram token filter
- cjk_bigram,适用于 CJK(中文、日语和韩语)token,在内置的 CJK analyzer 中被使用;
- 可选参数:
| 参数 | 参数说明 |
| :—-: | :—-: |
| ignored_scripts | (可选,字符数组)要禁用bigram的字符串数组。可能值:
han(汉)
hangul(朝鲜文)
hiragana(平假名)
katakana(片假名)
所有非CJK的字符单词都不做修改处理; | | output_unigrams | (可选,boolean)如果为true,则以bigram和unigram形式发出token。如果为false,则当没有相邻字符时,将以unigram形式输出CJK字符。默认为false。 |
PUT /cjk_bigram_example
{
"settings" : {
"analysis" : {
"analyzer" : {
"han_bigrams" : {
"tokenizer" : "standard",
"filter" : ["han_bigrams_filter"]
}
},
"filter" : {
"han_bigrams_filter" : {
"type" : "cjk_bigram",
"ignored_scripts": [
"hangul",
"hiragana",
"katakana"
],
"output_unigrams" : false
}
}
}
}
}
GET cjk_bigram_example/_analyze
{
"analyzer": "han_bigrams",
"text" : "東京都は、日本の首都であり"
}
#结果:[ 東京, 京都, は, 日本, の, 首都, で, あ, り ]
#仅仅 standard + cjk_bigram:[ 東京, 京都, 都は, 日本, 本の, の首, 首都, 都で, であ, あり ]