Elasticsearch bietet integrierte Funktionen für den Fuzzy-Matching von E-Mail-Adressen und Telefonnummern.
Um E-Mail-Adressen abzugleichen, die mit einer bestimmten Domain enden (z. B. @gmail.com):
<code class="json">{ "query": { "term": { "email": ".*@gmail.com" } } }</code>
Oder um E-Mails abzugleichen, die eine bestimmte Zeichenfolge enthalten:
<code class="json">{ "query": { "match": { "email": { "query": "sales@*", "operator": "and" } } } }</code>
Für den Fuzzy-Abgleich von Telefonnummern können Sie das folgende Muster verwenden:
<code class="json">{ "query": { "prefix": { "tel": "136*" } } }</code>
Dadurch werden alle Telefonnummern abgeglichen, die mit „136“ beginnen.
Um die Leistung für Fuzzy-Matching zu verbessern, sollten Sie die Verwendung benutzerdefinierter Analysatoren in Betracht ziehen, die N-Gramm- oder Edge-N-Gramm-Tokenfilter nutzen. Diese Filter zerlegen den Text in kleinere Token, was es Elasticsearch erleichtert, Fuzzy-Matching durchzuführen.
E-Mail-Analysator-Konfiguration:
<code class="json">{ "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" } } } } }</code>
Telefonanalysator Konfiguration:
<code class="json">{ "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" ] } } } } }</code>
Das obige ist der detaillierte Inhalt vonWie führt man mit Elasticsearch einen Fuzzy-Abgleich von E-Mail-Adressen und Telefonnummern durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!