Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie kann ich in Elasticsearch ein effizientes Fuzzy-Matching für E-Mail-Adressen und Telefonnummern erreichen?

Susan Sarandon
Freigeben: 2024-10-31 09:19:01
Original
810 Leute haben es durchsucht

How can I achieve efficient fuzzy matching for email addresses and phone numbers within Elasticsearch?

Elasticsearch Fuzzy-E-Mail- oder Telefon-Matching

Frage:

Wie kann Fuzzy-Matching implementiert werden? für E-Mail-Adressen oder Telefonnummern mit Elasticsearch? Wie kann man konkret alle E-Mails abgleichen, die mit „@gmail.com“ enden, oder alle Telefonnummern, die mit „136“ beginnen?

Antwort:

Verwendung benutzerdefinierter Analysetools für Indizierung und Suche können den Fuzzy-Abgleich für E-Mail- und Telefondaten erleichtern.

E-Mail-Fuzzy-Abgleich:

Konfigurieren Sie einen Analysator mit den folgenden Einstellungen:

  • Indexanalysator: index_email_analyzer

    • Standard-Tokenizer
    • Kleinbuchstaben- und Name-Ngram-Filter
    • Max. Gramm: 20
  • Suchanalysator: search_email_analyzer

    • Standard-Tokenizer
    • Kleinbuchstabenfilter

Telefonnummer Fuzzy Matching:

Konfigurieren Sie einen Analysator mit den folgenden Einstellungen:

  • Indexanalysator: index_phone_analyzer

    • Nur ​​Ziffernfilter
    • Edge-ngram-Tokenizer (3-15 Gramm)
    • Min. Gramm: 1
    • Max. Gramm: 15
  • Suchanalysator: search_phone_analyzer

    • Nur ​​Ziffernfilter
    • Keyword-Tokenizer

Indexbeispiel:

PUT myindex
{
  "settings": {
    "analysis": {
      "analyzer": {
        "email_url_analyzer": {
          "type": "custom",
          "tokenizer": "uax_url_email",
          "filter": [ "trim" ]
        },
        "index_phone_analyzer": {
          "type": "custom",
          "char_filter": [ "digit_only" ],
          "tokenizer": "digit_edge_ngram_tokenizer",
          "filter": [ "trim" ]
        },
        "search_phone_analyzer": {
          "type": "custom",
          "char_filter": [ "digit_only" ],
          "tokenizer": "keyword",
          "filter": [ "trim" ]
        },
        "index_email_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [ "lowercase", "name_ngram_filter", "trim" ]
        },
        "search_email_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [ "lowercase", "trim" ]
        }
      },
      "char_filter": {
        "digit_only": {
          "type": "pattern_replace",
          "pattern": "\D+",
          "replacement": ""
        }
      },
      "tokenizer": {
        "digit_edge_ngram_tokenizer": {
          "type": "edgeNGram",
          "min_gram": "1",
          "max_gram": "15",
          "token_chars": [ "digit" ]
        }
      },
      "filter": {
        "name_ngram_filter": {
          "type": "ngram",
          "min_gram": "1",
          "max_gram": "20"
        }
      }
    }
  },
  "mappings": {
    "your_type": {
      "properties": {
        "email": {
          "type": "string",
          "analyzer": "index_email_analyzer",
          "search_analyzer": "search_email_analyzer"
        },
        "phone": {
          "type": "string",
          "analyzer": "index_phone_analyzer",
          "search_analyzer": "search_phone_analyzer"
        }
      }
    }
  }
}
Nach dem Login kopieren

Suchanfragen:

  • Alle E-Mails abgleichen, die mit „@gmail.com“ enden:
POST myindex
{ 
    "query": {
        "term": 
            { "email": "@gmail.com" }
    }
}
Nach dem Login kopieren
  • Alle Telefonnummern abgleichen, die mit „136“ beginnen:
POST myindex
{ 
    "query": {
        "term": 
            { "phone": "136" }
    }
}
Nach dem Login kopieren

Durch die Verwendung dieser benutzerdefinierten Analysatoren kann Elasticsearch einen effizienten Fuzzy-Abgleich für E-Mail-Adressen und Telefonnummern durchführen.

Das obige ist der detaillierte Inhalt vonWie kann ich in Elasticsearch ein effizientes Fuzzy-Matching für E-Mail-Adressen und Telefonnummern erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage