ホームページ  >  記事  >  データベース  >  Elasticsearch を使用して電子メールと電話番号のあいまい一致を実現するにはどうすればよいですか?

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

Susan Sarandon
Susan Sarandonオリジナル
2024-10-28 06:08:30279ブラウズ

 How can Elasticsearch be used to achieve fuzzy matching for email and telephone numbers?

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

特定のドメインで終わる電子メール アドレスまたは特定のプレフィックスで始まる電話番号の一致を実現できますElasticsearch のカスタム アナライザーを使用します。

効果的なソリューションには、電子メールと電話のフィールドに合わせてアナライザーを調整することが含まれます。メールについては、N-gramを利用してトークン化するインデックスアナライザーを採用しており、メールのさまざまなセクションでのマッチングが可能です。電話の場合、エッジ Ngram アナライザーはさまざまな長さのプレフィックスにインデックスを付け、効率的なプレフィックス マッチングを容易にします。

実装の詳細:

電子メールのアナライザー定義:

  • index_email_analyzer: 電子メールの値をトークン化し、さまざまな長さ (1 ~ 20 文字) の N グラム (サブシーケンス) を生成し、幅広い一致の可能性を確保します (例: 「@gmail.com」トークンには「@g」が含まれます)。 "@@"、"@gm"、"@gma" など)。
  • search_email_analyzer: 検索中に使用され、入力文字列をトークン化するだけで、インデックス付きトークンとの直接比較が可能になります (例: "@gmail.com" は、index_email_analyzer を使用してインデックス付けされた電子メールと一致します)。

電話のアナライザー定義:

  • index_phone_analyzer: 電話番号をトークン化します。考えられるすべてのプレフィックスを抽出し、部分入力の一致を保証します (例: 「136」を検索すると「1362435647」と一致します)。
  • search_phone_analyzer: 検索入力を処理し、インデックス付きの電話と照合できるトークン化された形式に変換します。数値 (例: "136" の検索はトークン化され、"136"、"13"、"1" などのインデックス付きトークンと比較されます)。

インデックスとクエリの例:

PUT myindex
{
  "settings": {
    "analysis": {
      "analyzer": {
        ...
        "index_email_analyzer": { ... },
        "search_email_analyzer": { ... },
        "index_phone_analyzer": { ... },
        "search_phone_analyzer": { ... }
        ...
      }
    }
  },
  "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"
        }
      }
    }
  }
}

POST myindex
{ 
    "query": {
        "term": 
            { "email": "@gmail.com" }
    }
}

このアプローチは、Elasticsearch の電子メールおよび電話フィールドの効率的でカスタマイズ可能なあいまい一致を提供し、柔軟な検索機能を可能にします。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。