Rumah >pangkalan data >tutorial mysql >Bagaimanakah saya boleh melaksanakan padanan kabur untuk alamat e-mel dan nombor 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>
5. Contoh Pertanyaan
Untuk melaksanakan padanan kabur, gunakan istilah pertanyaan:
<code class="json">{ "query": { "term": { "phone": "136" } } }</code>
<code class="json">{ "query": { "term": { "email": "@gmail.com" } } }</code>
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!