Maison > Article > base de données > Comment puis-je obtenir une correspondance floue efficace pour les adresses e-mail et les numéros de téléphone dans Elasticsearch ?
Correspondance floue d'e-mails ou de téléphones d'Elasticsearch
Question :
Comment la correspondance floue peut-elle être mise en œuvre des adresses e-mail ou des numéros de téléphone à l'aide d'Elasticsearch ? Plus précisément, comment faire correspondre tous les e-mails se terminant par « @gmail.com » ou tous les numéros de téléphone commençant par « 136 » ?
Réponse :
Utiliser des analyseurs personnalisés pour l'indexation et la recherche peuvent faciliter la correspondance floue pour les données de courrier électronique et téléphoniques.
Email Fuzzy Correspondance :
Configurez un analyseur avec les paramètres suivants :
Analyseur d'index : index_email_analyzer
Analyseur de recherche : search_email_analyzer
Numéro de téléphone flou Correspondance :
Configurez un analyseur avec les paramètres suivants :
Analyseur d'index : index_phone_analyzer
Analyseur de recherche : search_phone_analyzer
Exemple d'index :
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" } } } } }
Requêtes de recherche :
POST myindex { "query": { "term": { "email": "@gmail.com" } } }
POST myindex { "query": { "term": { "phone": "136" } } }
En utilisant ces analyseurs personnalisés, Elasticsearch peut effectuer efficacement une correspondance floue pour les adresses e-mail et les numéros de téléphone.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!