Maison  >  Article  >  base de données  >  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
Linda Hamiltonoriginal
2024-11-01 05:33:27811parcourir

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>

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

<code class="json">{
    "query": {
        "match": {
            "email": {
                "query": "sales@*",
                "operator": "and"
            }
        }
    }
}</code>

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>

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>

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>

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:
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