Elasticsearch を使用して電子メール アドレスと電話番号のあいまい一致を実行するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-01 05:33:27
オリジナル
799 人が閲覧しました

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 グラムまたはエッジ N グラム トークン フィルターを活用するカスタム アナライザーの使用を検討してください。これらのフィルターはテキストを小さなトークンに分割し、Elasticsearch によるあいまい一致の実行を容易にします。

Email Analyzer 構成:

<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>
ログイン後にコピー

Telephone Analyzer構成:

<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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート