Link Search Menu Expand Document Documentation Menu

模式捕获词元过滤器

pattern_capture 词元过滤器是一个功能强大的过滤器,它使用正则表达式根据特定模式捕获和提取文本部分。当您希望提取词元的特定部分(例如电子邮件域、话题标签或数字),并将其用于进一步分析或索引时,此过滤器会非常有用。

参数

pattern_capture 词元过滤器可以使用以下参数进行配置。

参数 必需/可选 数据类型 描述
模式 必需 字符串数组 用于捕获文本部分的正则表达式数组。
preserve_original 必需 布尔型 是否在输出中保留原始词元。默认值为 true

示例

以下示例请求创建一个名为 email_index 的新索引,并使用 pattern_capture 过滤器配置分析器,以从电子邮件地址中提取本地部分和域名。

PUT /email_index
{
  "settings": {
    "analysis": {
      "filter": {
        "email_pattern_capture": {
          "type": "pattern_capture",
          "preserve_original": true,
          "patterns": [
            "^([^@]+)",
            "@(.+)$"
          ]
        }
      },
      "analyzer": {
        "email_analyzer": {
          "tokenizer": "uax_url_email",
          "filter": [
            "email_pattern_capture",
            "lowercase"
          ]
        }
      }
    }
  }
}

生成的词元

使用以下请求检查使用该分析器生成的词元

POST /email_index/_analyze
{
  "text": "john.doe@example.com",
  "analyzer": "email_analyzer"
}

响应包含生成的词元

{
  "tokens": [
    {
      "token": "john.doe@example.com",
      "start_offset": 0,
      "end_offset": 20,
      "type": "<EMAIL>",
      "position": 0
    },
    {
      "token": "john.doe",
      "start_offset": 0,
      "end_offset": 20,
      "type": "<EMAIL>",
      "position": 0
    },
    {
      "token": "example.com",
      "start_offset": 0,
      "end_offset": 20,
      "type": "<EMAIL>",
      "position": 0
    }
  ]
}
剩余 350 字符

有问题?

想要贡献?