"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como realizar correspondência difusa de endereços de e-mail e números de telefone usando o Elasticsearch?

Como realizar correspondência difusa de endereços de e-mail e números de telefone usando o Elasticsearch?

Publicado em 2024-11-07
Navegar:562

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

Correspondência difusa de e-mail ou telefone usando o Elasticsearch

O Elasticsearch oferece recursos integrados para correspondência difusa de endereços de e-mail e números de telefone.

Correspondência de e-mail

Para corresponder endereços de e-mail que terminam com um domínio específico (por exemplo, @gmail.com):

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

Ou, para corresponder e-mails contendo uma string específica:

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

Correspondência telefônica

Para correspondência difusa de números de telefone, você pode usar o seguinte padrão:

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

Isso corresponderá a todos os números de telefone começando com "136".

Otimização de desempenho

Para melhorar o desempenho da correspondência difusa, considere usar analisadores personalizados que aproveitam n-gram ou filtros de token de n-grama de borda. Esses filtros dividem o texto em tokens menores, tornando mais fácil para o Elasticsearch realizar correspondência difusa.

Configuração do Email Analyzer:

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

Configuração do analisador de telefone:

{
  "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"
          ]
        }
      }
    }
  }
}
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3