„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie führt man mit Elasticsearch einen Fuzzy-Abgleich von E-Mail-Adressen und Telefonnummern durch?

Wie führt man mit Elasticsearch einen Fuzzy-Abgleich von E-Mail-Adressen und Telefonnummern durch?

Veröffentlicht am 07.11.2024
Durchsuche:632

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

Fuzzy-Matching von E-Mails oder Telefonnummern mit Elasticsearch

Elasticsearch bietet integrierte Funktionen für den Fuzzy-Matching von E-Mail-Adressen und Telefonnummern.

E-Mail-Matching

Um E-Mail-Adressen abzugleichen, die mit einer bestimmten Domain enden (z. B. @gmail.com):

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

Oder, um E-Mails abzugleichen, die eine bestimmte Zeichenfolge enthalten:

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

Telefonabgleich

Für den Fuzzy-Abgleich von Telefonnummern können Sie das folgende Muster verwenden:

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

Hiermit werden alle Telefonnummern abgeglichen, die mit „136“ beginnen.

Leistungsoptimierung

Um die Leistung für Fuzzy-Matching zu verbessern, sollten Sie benutzerdefinierte Analysetools verwenden, die N-Gramm oder nutzen Edge-N-Gram-Token-Filter. Diese Filter zerlegen den Text in kleinere Token, sodass Elasticsearch den Fuzzy-Abgleich einfacher durchführen kann.

Email Analyzer-Konfiguration:

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

Telefonanalysator-Konfiguration:

{
  "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"
          ]
        }
      }
    }
  }
}
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3