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

Barbara Streisand
リリース: 2024-10-28 16:25:30
オリジナル
666 人が閲覧しました

How can I implement fuzzy matching for email addresses and telephone numbers in Elasticsearch?

Elasticsearch での電子メールと電話のあいまい一致

Elasticsearch は、あいまい一致を実装するための堅牢な機能を提供し、指定されたアドレスに部分的に一致する電子メール アドレスまたは電話番号を検索できます。価値。この目標を効率的に達成する方法は次のとおりです。

1.カスタム アナライザーを使用する

パフォーマンスを最適化するには、電子メール アドレス (index_email_analyzer、search_email_analyzer) と電話番号 (index_phone_analyzer、search_phone_analyzer) のカスタム アナライザーを作成します。これらのアナライザーは、特定のトークナイザーとフィルターを使用して、入力値を関連するトークンに分解します。

2.インデックス アナライザーによるデータのインデックス付け

データのインデックス付けを行う場合、カスタム インデックス アナライザーを利用して電子メールと電話の値を処理します。これにより、データはあいまい一致に適したトークン化された形式で保存されます。

3.検索アナライザーによる検索

検索操作中に、カスタム検索アナライザーを使用して入力検索パラメーターをトークン化します。これにより、Elasticsearch はトークン化された検索パラメーターをトークン化されたデータと比較し、部分一致も識別できるようになります。

4.インデックス定義の例

電子メールと電話番号のあいまい一致に必要なアナライザーを含むインデックス定義の例を次に示します。

<code class="json">{
  "settings": {
    "analysis": {
      "analyzer": {
        "email_url_analyzer": {
          "type": "custom",
          "tokenizer": "uax_url_email",
          "filter": [ "trim" ]
        },
        "index_phone_analyzer": {
          "type": "custom",
          "char_filter": [ "digit_only" ],
          "tokenizer": "digit_edge_ngram_tokenizer",
          "filter": [ "trim" ]
        },
        "search_phone_analyzer": {
          "type": "custom",
          "char_filter": [ "digit_only" ],
          "tokenizer": "keyword",
          "filter": [ "trim" ]
        },
        "index_email_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [ "lowercase", "name_ngram_filter", "trim" ]
        },
        "search_email_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [ "lowercase", "trim" ]
        }
      },
      "char_filter": {
        "digit_only": {
          "type": "pattern_replace",
          "pattern": "\D+",
          "replacement": ""
        }
      },
      "tokenizer": {
        "digit_edge_ngram_tokenizer": {
          "type": "edgeNGram",
          "min_gram": "1",
          "max_gram": "15",
          "token_chars": [ "digit" ]
        }
      },
      "filter": {
        "name_ngram_filter": {
          "type": "ngram",
          "min_gram": "1",
          "max_gram": "20"
        }
      }
    }
  },
  "mappings": {
    "your_type": {
      "properties": {
        "email": {
          "type": "string",
          "analyzer": "index_email_analyzer",
          "search_analyzer": "search_email_analyzer"
        },
        "phone": {
          "type": "string",
          "analyzer": "index_phone_analyzer",
          "search_analyzer": "search_phone_analyzer"
        }
      }
    }
  }
}</code>
ログイン後にコピー

5.クエリの例

あいまい一致を実行するには、クエリという用語を利用します。

<code class="json">{ 
    "query": {
        "term": 
            { "phone": "136" }
    }
}</code>
ログイン後にコピー
<code class="json">{ 
    "query": {
        "term": 
            { "email": "@gmail.com" }
    }
}</code>
ログイン後にコピー

このソリューションは、電子メール アドレスと電話番号の効率的かつ正確なあいまい一致を提供し、部分的または不完全な入力に基づいてデータを簡単に取得します。

以上がElasticsearch でメール アドレスと電話番号のあいまい一致を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!