«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как выполнить нечеткое сопоставление адресов электронной почты и номеров телефонов с помощью Elasticsearch?

Как выполнить нечеткое сопоставление адресов электронной почты и номеров телефонов с помощью Elasticsearch?

Опубликовано 7 ноября 2024 г.
Просматривать:697

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

Нечеткое сопоставление адресов электронной почты или телефонов с использованием Elasticsearch

Elasticsearch предлагает встроенные возможности нечеткого сопоставления адресов электронной почты и номеров телефонов.

Сопоставление адресов электронной почты

Чтобы сопоставить адреса электронной почты, оканчивающиеся на определенный домен (например, @gmail.com):

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

Или, чтобы сопоставить электронные письма, содержащие определенную строку:

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

Сопоставление телефонных номеров

Для нечеткого сопоставления телефонных номеров можно использовать следующий шаблон:

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

Это будет соответствовать всем телефонным номерам, начинающимся с «136».

Оптимизация производительности

Чтобы повысить производительность нечеткого сопоставления, рассмотрите возможность использования пользовательских анализаторов, использующих n-граммы или фильтры токенов Edge n-gram. Эти фильтры разбивают текст на более мелкие токены, упрощая Elasticsearch выполнение нечеткого сопоставления.

Конфигурация анализатора электронной почты:

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

Конфигурация анализатора телефона:

{
  "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"
          ]
        }
      }
    }
  }
}
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3