Elasticsearch 提供了模糊匹配電子郵件地址和電話號碼的內建功能。
匹配以特定網域結尾的電子郵件地址(例如@gmail.com):
{
"query": {
"term": {
"email": ".*@gmail.com"
}
}
}
或者,符合包含特定字串的電子郵件:
{
"query": {
"match": {
"email": {
"query": "sales@*",
"operator": "and"
}
}
}
}
對於電話號碼的模糊匹配,您可以使用以下模式:
{
"query": {
"prefix": {
"tel": "136*"
}
}
}
這將符合以「136」開頭的所有電話號碼。
要提高模糊匹配的效能,請考慮使用利用 n-gram 或邊緣 n 元詞法過濾器。這些過濾器將文字分解為更小的標記,使 Elasticsearch 更容易執行模糊匹配。
電子郵件分析器設定:
{
"settings": {
"analysis": {
"analyzer": {
"email_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"name_ngram_filter",
"trim"
]
}
},
"filter": {
"name_ngram_filter": {
"type": "ngram",
"min_gram": "3",
"max_gram": "20"
}
}
}
}
}
電話分析儀配置:
{
"settings": {
"analysis": {
"analyzer": {
"phone_analyzer": {
"type": "custom",
"char_filter": [
"digit_only"
],
"tokenizer": "digit_edge_ngram_tokenizer",
"filter": [
"trim"
]
}
},
"char_filter": {
"digit_only": {
"type": "pattern_replace",
"pattern": "\\D ",
"replacement": ""
}
},
"tokenizer": {
"digit_edge_ngram_tokenizer": {
"type": "edgeNGram",
"min_gram": "3",
"max_gram": "15",
"token_chars": [
"digit"
]
}
}
}
}
}
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3