Elasticsearch には、電子メール アドレスと電話番号のあいまい一致のための組み込み機能が用意されています。
特定のドメインで終わる電子メール アドレスと一致する場合 (例: @gmail.com):
<code class="json">{ "query": { "term": { "email": ".*@gmail.com" } } }</code>
または、特定の文字列を含む電子メールと一致する場合:
<code class="json">{ "query": { "match": { "email": { "query": "sales@*", "operator": "and" } } } }</code>
電話番号のあいまい一致には、次のパターンを使用できます:
<code class="json">{ "query": { "prefix": { "tel": "136*" } } }</code>
これは、「136」で始まるすべての電話番号と一致します。
あいまい一致のパフォーマンスを向上させるには、N グラムまたはエッジ N グラム トークン フィルターを活用するカスタム アナライザーの使用を検討してください。これらのフィルターはテキストを小さなトークンに分割し、Elasticsearch によるあいまい一致の実行を容易にします。
Email Analyzer 構成:
<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>
Telephone Analyzer構成:
<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>
以上がElasticsearch を使用して電子メール アドレスと電話番号のあいまい一致を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。