"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo realizar una coincidencia aproximada de direcciones de correo electrónico y números de teléfono utilizando Elasticsearch?

¿Cómo realizar una coincidencia aproximada de direcciones de correo electrónico y números de teléfono utilizando Elasticsearch?

Publicado el 2024-11-07
Navegar:731

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

Correo electrónico o teléfono de coincidencia aproximada mediante Elasticsearch

Elasticsearch ofrece capacidades integradas para la coincidencia aproximada de direcciones de correo electrónico y números de teléfono.

Coincidencia de correo electrónico

Para hacer coincidir direcciones de correo electrónico que terminan con un dominio específico (por ejemplo, @gmail.com):

{
    "query": {
        "term": {
            "email": ".*@gmail.com"
        }
    }
}

O, para hacer coincidir correos electrónicos que contienen una cadena específica:

{
    "query": {
        "match": {
            "email": {
                "query": "sales@*",
                "operator": "and"
            }
        }
    }
}

Coincidencia telefónica

Para una coincidencia aproximada de números de teléfono, puede utilizar el siguiente patrón:

{
    "query": {
        "prefix": {
            "tel": "136*"
        }
    }
}

Esto coincidirá con todos los números de teléfono que comiencen con "136".

Optimización del rendimiento

Para mejorar el rendimiento de la coincidencia aproximada, considere usar analizadores personalizados que aprovechen n-gram o filtros de token de n-gramas de borde. Estos filtros dividen el texto en tokens más pequeños, lo que facilita que Elasticsearch realice coincidencias aproximadas.

Configuración del analizador de correo electrónico:

{
  "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"
        }
      }
    }
  }
}

Configuración del analizador telefónico:

{
  "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"
          ]
        }
      }
    }
  }
}
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3