模式替换词元过滤器
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
}
]
}