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

Linda Hamilton
發布: 2024-11-01 05:33:27
原創
735 人瀏覽過

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

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

Elasticsearch 提供用於模糊匹配電子郵件地址和電話號碼的內建功能。

電子郵件匹配

要匹配以特定域結尾的電子郵件地址(例如@gmail.com):

<code class="json">{
    "query": {
        "term": {
            "email": ".*@gmail.com"
        }
    }
}</code>
登入後複製

或者,要匹配包含特定字串的電子郵件:

<code class="json">{
    "query": {
        "match": {
            "email": {
                "query": "sales@*",
                "operator": "and"
            }
        }
    }
}</code>
登入後複製

電話匹配

對於電話號碼的模糊匹配,您可以使用以下模式:

<code class="json">{
    "query": {
        "prefix": {
            "tel": "136*"
        }
    }
}</code>
登入後複製

這將匹配所有以“136”開頭的電話號碼。

效能最佳化

要提高模糊匹配的效能,請考慮使用利用 n-gram 或邊緣 n-gram 標記過濾器的自訂分析器。這些過濾器將文字分解為更小的標記,使 Elasticsearch 更容易執行模糊匹配。

電子郵件分析器設定:

<code class="json">{
  "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"
        }
      }
    }
  }
}</code>
登入後複製

電話分析器設定:

<code class="json">{
  "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"
          ]
        }
      }
    }
  }
}</code>
登入後複製

以上是如何使用Elasticsearch對電子郵件地址和電話號碼進行模糊匹配?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!