Link Search Menu Expand Document Documentation Menu

模式替换词元过滤器

pattern_replace 词元过滤器允许您使用正则表达式修改词元。该过滤器将词元中的模式替换为指定值,使您能够灵活地在索引词元之前对其进行转换或标准化。当您需要在分析期间清理或标准化文本时,它特别有用。

参数

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

参数 必需/可选 数据类型 描述
模式 必需 字符串 匹配需要替换文本的正则表达式模式。
all 可选 布尔型 是否替换所有模式匹配项。如果为 false,则只替换第一个匹配项。默认值为 true
replacement 可选 字符串 用于替换匹配模式的字符串。默认为空字符串。

示例

以下示例请求创建一个名为 text_index 的新索引,并使用 pattern_replace 过滤器配置一个分析器,将包含数字的词元替换为字符串 [NUM]

PUT /text_index
{
  "settings": {
    "analysis": {
      "filter": {
        "number_replace_filter": {
          "type": "pattern_replace",
          "pattern": "\\d+",
          "replacement": "[NUM]"
        }
      },
      "analyzer": {
        "number_analyzer": {
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "number_replace_filter"
          ]
        }
      }
    }
  }
}

生成的词元

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

POST /text_index/_analyze
{
  "text": "Visit us at 98765 Example St.",
  "analyzer": "number_analyzer"
}

响应包含生成的词元

{
  "tokens": [
    {
      "token": "visit",
      "start_offset": 0,
      "end_offset": 5,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "us",
      "start_offset": 6,
      "end_offset": 8,
      "type": "<ALPHANUM>",
      "position": 1
    },
    {
      "token": "at",
      "start_offset": 9,
      "end_offset": 11,
      "type": "<ALPHANUM>",
      "position": 2
    },
    {
      "token": "[NUM]",
      "start_offset": 12,
      "end_offset": 17,
      "type": "<NUM>",
      "position": 3
    },
    {
      "token": "example",
      "start_offset": 18,
      "end_offset": 25,
      "type": "<ALPHANUM>",
      "position": 4
    },
    {
      "token": "st",
      "start_offset": 26,
      "end_offset": 28,
      "type": "<ALPHANUM>",
      "position": 5
    }
  ]
}
剩余 350 字符

有问题?

想要贡献?