多路复用器 token 过滤器
multiplexer
token 过滤器允许您通过应用不同的过滤器来创建同一 token 的多个版本。当您想要以多种方式分析同一 token 时,这非常有用。例如,您可能希望使用不同的词干提取、同义词或 n-gram 过滤器来分析一个 token,并将所有生成的 token 一起使用。此 token 过滤器通过复制 token 流并对每个副本应用不同的过滤器来工作。
multiplexer
token 过滤器会从 token 流中移除重复的 token。
multiplexer
token 过滤器不支持多词 synonym
或 synonym_graph
token 过滤器,也不支持 shingle
token 过滤器,因为它们需要分析当前 token 以及后续 token 才能正确确定如何转换输入。
参数
multiplexer
token 过滤器可以通过以下参数进行配置。
参数 | 必需/可选 | 数据类型 | 描述 |
---|---|---|---|
filters | 可选 | 字符串列表 | 一个逗号分隔的 token 过滤器列表,将应用于 token 流的每个副本。默认值为空列表。 |
preserve_original | 可选 | 布尔型 | 是否保留原始 token 作为其中一个输出。默认值为 true 。 |
示例
以下示例请求创建一个名为 multiplexer_index
的新索引,并使用 multiplexer
过滤器配置一个分析器
PUT /multiplexer_index
{
"settings": {
"analysis": {
"filter": {
"english_stemmer": {
"type": "stemmer",
"name": "english"
},
"synonym_filter": {
"type": "synonym",
"synonyms": [
"quick,fast"
]
},
"multiplexer_filter": {
"type": "multiplexer",
"filters": ["english_stemmer", "synonym_filter"],
"preserve_original": true
}
},
"analyzer": {
"multiplexer_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"multiplexer_filter"
]
}
}
}
}
}
生成的词元
使用以下请求检查使用该分析器生成的词元
POST /multiplexer_index/_analyze
{
"analyzer": "multiplexer_analyzer",
"text": "The slow turtle hides from the quick dog"
}
响应包含生成的词元
{
"tokens": [
{
"token": "The",
"start_offset": 0,
"end_offset": 3,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "slow",
"start_offset": 4,
"end_offset": 8,
"type": "<ALPHANUM>",
"position": 1
},
{
"token": "turtle",
"start_offset": 9,
"end_offset": 15,
"type": "<ALPHANUM>",
"position": 2
},
{
"token": "turtl",
"start_offset": 9,
"end_offset": 15,
"type": "<ALPHANUM>",
"position": 2
},
{
"token": "hides",
"start_offset": 16,
"end_offset": 21,
"type": "<ALPHANUM>",
"position": 3
},
{
"token": "hide",
"start_offset": 16,
"end_offset": 21,
"type": "<ALPHANUM>",
"position": 3
},
{
"token": "from",
"start_offset": 22,
"end_offset": 26,
"type": "<ALPHANUM>",
"position": 4
},
{
"token": "the",
"start_offset": 27,
"end_offset": 30,
"type": "<ALPHANUM>",
"position": 5
},
{
"token": "quick",
"start_offset": 31,
"end_offset": 36,
"type": "<ALPHANUM>",
"position": 6
},
{
"token": "fast",
"start_offset": 31,
"end_offset": 36,
"type": "SYNONYM",
"position": 6
},
{
"token": "dog",
"start_offset": 37,
"end_offset": 40,
"type": "<ALPHANUM>",
"position": 7
}
]
}