Link Search Menu Expand Document Documentation Menu

多路复用器 token 过滤器

multiplexer token 过滤器允许您通过应用不同的过滤器来创建同一 token 的多个版本。当您想要以多种方式分析同一 token 时,这非常有用。例如,您可能希望使用不同的词干提取、同义词或 n-gram 过滤器来分析一个 token,并将所有生成的 token 一起使用。此 token 过滤器通过复制 token 流并对每个副本应用不同的过滤器来工作。

multiplexer token 过滤器会从 token 流中移除重复的 token。

multiplexer token 过滤器不支持多词 synonymsynonym_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
    }
  ]
}
剩余 350 字符

有问题?

想贡献吗?