Bagaimanakah saya boleh melaksanakan padanan kabur untuk alamat e-mel dan nombor telefon dalam Elasticsearch?

Barbara Streisand
Lepaskan: 2024-10-28 16:25:30
asal
666 orang telah melayarinya

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

Fuzzy Matching untuk E-mel dan Telefon dalam Elasticsearch

Elasticsearch menyediakan keupayaan teguh untuk melaksanakan padanan kabur, membolehkan anda mencari alamat e-mel atau nombor telefon yang sebahagiannya sepadan dengan yang diberikan nilai. Begini cara untuk mencapai matlamat ini dengan cekap:

1. Gunakan Penganalisis Tersuai

Untuk mengoptimumkan prestasi, buat penganalisis tersuai untuk alamat e-mel (index_email_analyzer, search_email_analyzer) dan nombor telefon (index_phone_analyzer, search_phone_analyzer). Penganalisis ini menggunakan tokenizer dan penapis khusus untuk memecahkan nilai input kepada token yang berkaitan.

2. Data Indeks dengan Penganalisis Indeks

Apabila mengindeks data, gunakan penganalisis indeks tersuai untuk memproses nilai e-mel dan telefon. Ini memastikan bahawa data disimpan dalam bentuk token yang sesuai untuk padanan kabur.

3. Cari dengan Penganalisis Carian

Semasa operasi carian, gunakan penganalisis carian tersuai untuk menandakan parameter carian input. Ini membolehkan Elasticsearch membandingkan parameter carian token dengan data token, mengenal pasti padanan separa.

4. Contoh Definisi Indeks

Berikut ialah contoh definisi indeks dengan penganalisis yang diperlukan untuk pemadanan kabur e-mel dan nombor telefon:

<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>
Salin selepas log masuk

5. Contoh Pertanyaan

Untuk melaksanakan padanan kabur, gunakan istilah pertanyaan:

<code class="json">{ 
    "query": {
        "term": 
            { "phone": "136" }
    }
}</code>
Salin selepas log masuk
<code class="json">{ 
    "query": {
        "term": 
            { "email": "@gmail.com" }
    }
}</code>
Salin selepas log masuk

Penyelesaian ini menawarkan padanan kabur yang cekap dan tepat untuk alamat e-mel dan nombor telefon, memperkasakan anda untuk mendapatkan semula data dengan mudah berdasarkan input separa atau tidak lengkap.

Atas ialah kandungan terperinci Bagaimanakah saya boleh melaksanakan padanan kabur untuk alamat e-mel dan nombor telefon dalam Elasticsearch?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!