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

Susan Sarandon
Lepaskan: 2024-10-31 09:19:01
asal
811 orang telah melayarinya

How can I achieve efficient fuzzy matching for email addresses and phone numbers within Elasticsearch?

Elasticsearch Fuzzy Email atau Telephone Matching

Soalan:

Bagaimanakah padanan kabur boleh dilaksanakan untuk alamat e-mel atau nombor telefon menggunakan Elasticsearch? Secara khusus, bagaimanakah seseorang boleh memadankan semua e-mel yang berakhir dengan "@gmail.com" atau semua nombor telefon bermula dengan "136"?

Jawapan:

Menggunakan penganalisis tersuai untuk pengindeksan dan carian boleh memudahkan pemadanan fuzzy untuk data e-mel dan telefon.

Pemadanan Fuzzy E-mel:

Konfigurasikan penganalisis dengan tetapan berikut:

  • Penganalisis indeks: index_email_analyzer

    • Tokenizer standard
    • Penapis huruf kecil dan nama-ngram
    • Gm maks: 20
  • Penganalisis carian: search_email_analyzer

    • Tokenizer standard
    • Penapis huruf kecil

Nombor Telefon Padanan Kabur:

Konfigurasikan penganalisis dengan tetapan berikut:

  • Penganalisis indeks: index_phone_analyzer

    • Penapis digit sahaja
    • Tokenizer tepi-ngram (3-15 gram)
    • Min gram: 1
    • Gram maks: 15
  • Penganalisis carian: search_phone_analyzer

    • Penapis digit sahaja
    • Tokenizer kata kunci

Contoh Indeks:

PUT myindex
{
  "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"
        }
      }
    }
  }
}
Salin selepas log masuk

Pertanyaan Carian:

  • Padankan semua e-mel yang berakhir dengan "@gmail.com":
POST myindex
{ 
    "query": {
        "term": 
            { "email": "@gmail.com" }
    }
}
Salin selepas log masuk
  • Padankan semua nombor telefon bermula dengan "136":
POST myindex
{ 
    "query": {
        "term": 
            { "phone": "136" }
    }
}
Salin selepas log masuk

Dengan menggunakan penganalisis tersuai ini, Elasticsearch boleh melakukan pemadanan kabur untuk alamat e-mel dan nombor telefon dengan cekap.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mencapai padanan kabur yang cekap 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