我有一个案例,我必须从文本中找到的电子邮件中提取域名部分。我使用uax_url_email tokenizer来创建单个电子邮件。我有一个pattern_capture过滤器,它会发出" @(。+)"模式字符串。但是uax_url_email也会返回不是电子邮件的单词,而模式捕获过滤器也不会对其进行过滤。有什么建议吗?
"custom_analyzer":{
"tokenizer": "uax_url_email",
"filter": [
"email_domain_filter"
]
}
"filter": {
"email_domain_filter":{
"type": "pattern_capture",
"preserve_original": false,
"patterns": [
"@(.+)"
]
}
}
输入字符串:" 我的电子邮件ID是xyz@gmail.com "
输出代币: my,email,id,is,gmail.com
但我只需要 gmail.com
答案 0 :(得分:1)
“如果没有任何模式匹配,或者如果preserveOriginal为true,则将保留原始令牌。”
尝试添加与其他令牌匹配但不包含捕获组的模式(例如“。*”)
答案 1 :(得分:0)
我遇到了同样的问题。我可以完全不使用pattern_capture来解决此问题,而是使用其他标记器:
"pattern_capture_tokenizer": {
"type": "pattern",
"pattern": "^[^>]*>(?:[^>]*>){3}([^>]*)",
"group": 1
}
如果pattern为空,则不像pattern_capture过滤器那样发出令牌