Maison > base de données > tutoriel mysql > Comment effectuer une correspondance floue des adresses e-mail et des numéros de téléphone à l'aide d'Elasticsearch ?

Comment effectuer une correspondance floue des adresses e-mail et des numéros de téléphone à l'aide d'Elasticsearch ?

Linda Hamilton
Libérer: 2024-11-01 05:33:27
original
902 Les gens l'ont consulté

How to Perform Fuzzy Matching of Email Addresses and Telephone Numbers Using Elasticsearch?

Correspondance floue d'adresses e-mail ou de téléphone à l'aide d'Elasticsearch

Elasticsearch offre des fonctionnalités intégrées pour la correspondance floue d'adresses e-mail et de numéros de téléphone.

Correspondance d'e-mails

Pour faire correspondre les adresses e-mail se terminant par un domaine spécifique (par exemple, @gmail.com) :

<code class="json">{
    "query": {
        "term": {
            "email": ".*@gmail.com"
        }
    }
}</code>
Copier après la connexion

Ou, pour faire correspondre les e-mails contenant une chaîne spécifique :

<code class="json">{
    "query": {
        "match": {
            "email": {
                "query": "sales@*",
                "operator": "and"
            }
        }
    }
}</code>
Copier après la connexion

Correspondance téléphonique

Pour une correspondance floue des numéros de téléphone, vous pouvez utiliser le modèle suivant :

<code class="json">{
    "query": {
        "prefix": {
            "tel": "136*"
        }
    }
}</code>
Copier après la connexion

Cela correspondra à tous les numéros de téléphone commençant par « 136 ».

Optimisation des performances

Pour améliorer les performances de correspondance floue, envisagez d'utiliser des analyseurs personnalisés qui exploitent les filtres de jetons n-gram ou Edge n-gram. Ces filtres décomposent le texte en jetons plus petits, ce qui permet à Elasticsearch d'effectuer plus facilement une correspondance floue.

Configuration de l'analyseur d'e-mail :

<code class="json">{
  "settings": {
    "analysis": {
      "analyzer": {
        "email_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "name_ngram_filter",
            "trim"
          ]
        }
      },
      "filter": {
        "name_ngram_filter": {
          "type": "ngram",
          "min_gram": "3",
          "max_gram": "20"
        }
      }
    }
  }
}</code>
Copier après la connexion

Analyseur téléphonique Configuration :

<code class="json">{
  "settings": {
    "analysis": {
      "analyzer": {
        "phone_analyzer": {
          "type": "custom",
          "char_filter": [
            "digit_only"
          ],
          "tokenizer": "digit_edge_ngram_tokenizer",
          "filter": [
            "trim"
          ]
        }
      },
      "char_filter": {
        "digit_only": {
          "type": "pattern_replace",
          "pattern": "\D+",
          "replacement": ""
        }
      },
      "tokenizer": {
        "digit_edge_ngram_tokenizer": {
          "type": "edgeNGram",
          "min_gram": "3",
          "max_gram": "15",
          "token_chars": [
            "digit"
          ]
        }
      }
    }
  }
}</code>
Copier après la connexion

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