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