」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用Elasticsearch對電子郵件地址和電話號碼進行模糊匹配?

如何使用Elasticsearch對電子郵件地址和電話號碼進行模糊匹配?

發佈於2024-11-07
瀏覽:322

How to Perform Fuzzy Matching of Email Addresses and Telephone Numbers Using Elasticsearch?

使用 Elasticsearch 模糊匹配電子郵件或電話

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