Maison > base de données > tutoriel mysql > Comment puis-je obtenir une correspondance floue efficace pour les adresses e-mail et les numéros de téléphone dans Elasticsearch ?

Comment puis-je obtenir une correspondance floue efficace pour les adresses e-mail et les numéros de téléphone dans Elasticsearch ?

Susan Sarandon
Libérer: 2024-10-31 09:19:01
original
864 Les gens l'ont consulté

How can I achieve efficient fuzzy matching for email addresses and phone numbers within 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

    • Tokenizer standard
    • Filtres minuscules et nom-ngram
    • Max gramme : 20
  • Analyseur de recherche : search_email_analyzer

    • Tokenizer standard
    • Filtre minuscule

Numéro de téléphone flou Correspondance :

Configurez un analyseur avec les paramètres suivants :

  • Analyseur d'index : index_phone_analyzer

    • Filtre à chiffres uniquement
    • Tokenizer Edge-ngram (3-15 grammes)
    • Min gramme : 1
    • Max gramme : 15
  • Analyseur de recherche : search_phone_analyzer

    • Filtre à chiffres uniquement
    • Mot clé tokenizer

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"
        }
      }
    }
  }
}
Copier après la connexion

Requêtes de recherche :

  • Faire correspondre tous les e-mails se terminant par "@gmail.com":
POST myindex
{ 
    "query": {
        "term": 
            { "email": "@gmail.com" }
    }
}
Copier après la connexion
  • Faire correspondre tous les numéros de téléphone commençant par "136":
POST myindex
{ 
    "query": {
        "term": 
            { "phone": "136" }
    }
}
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal