Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Melakukan Padanan Fuzzy Alamat E-mel dan Nombor Telefon Menggunakan Elasticsearch?

Bagaimana untuk Melakukan Padanan Fuzzy Alamat E-mel dan Nombor Telefon Menggunakan Elasticsearch?

Linda Hamilton
Linda Hamiltonasal
2024-11-01 05:33:27736semak imbas

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

E-mel atau Telefon Pemadanan Fuzzy Menggunakan Elasticsearch

Elasticsearch menawarkan keupayaan terbina dalam untuk pemadanan kabur alamat e-mel dan nombor telefon.

Pemadanan E-mel

Untuk memadankan alamat e-mel yang berakhir dengan domain tertentu (cth., @gmail.com):

<code class="json">{
    "query": {
        "term": {
            "email": ".*@gmail.com"
        }
    }
}</code>

Atau, untuk memadankan e-mel yang mengandungi rentetan tertentu:

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

Pemadanan Telefon

Untuk padanan kabur nombor telefon, anda boleh menggunakan corak berikut:

<code class="json">{
    "query": {
        "prefix": {
            "tel": "136*"
        }
    }
}</code>

Ini akan sepadan dengan semua nombor telefon bermula dengan "136".

Pengoptimuman Prestasi

Untuk meningkatkan prestasi bagi padanan kabur, pertimbangkan untuk menggunakan penganalisis tersuai yang memanfaatkan penapis token n-gram atau tepi n-gram. Penapis ini memecahkan teks kepada token yang lebih kecil, menjadikannya lebih mudah untuk Elasticsearch melakukan pemadanan kabur.

Konfigurasi Penganalisis E-mel:

<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>

Penganalisis Telefon Konfigurasi:

<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>

Atas ialah kandungan terperinci Bagaimana untuk Melakukan Padanan Fuzzy Alamat E-mel dan Nombor Telefon Menggunakan Elasticsearch?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn