Elasticsearch は、あいまい一致を実装するための堅牢な機能を提供し、指定されたアドレスに部分的に一致する電子メール アドレスまたは電話番号を検索できます。価値。この目標を効率的に達成する方法は次のとおりです。
1.カスタム アナライザーを使用する
パフォーマンスを最適化するには、電子メール アドレス (index_email_analyzer、search_email_analyzer) と電話番号 (index_phone_analyzer、search_phone_analyzer) のカスタム アナライザーを作成します。これらのアナライザーは、特定のトークナイザーとフィルターを使用して、入力値を関連するトークンに分解します。
2.インデックス アナライザーによるデータのインデックス付け
データのインデックス付けを行う場合、カスタム インデックス アナライザーを利用して電子メールと電話の値を処理します。これにより、データはあいまい一致に適したトークン化された形式で保存されます。
3.検索アナライザーによる検索
検索操作中に、カスタム検索アナライザーを使用して入力検索パラメーターをトークン化します。これにより、Elasticsearch はトークン化された検索パラメーターをトークン化されたデータと比較し、部分一致も識別できるようになります。
4.インデックス定義の例
電子メールと電話番号のあいまい一致に必要なアナライザーを含むインデックス定義の例を次に示します。
<code class="json">{ "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" } } } } }</code>
5.クエリの例
あいまい一致を実行するには、クエリという用語を利用します。
<code class="json">{ "query": { "term": { "phone": "136" } } }</code>
<code class="json">{ "query": { "term": { "email": "@gmail.com" } } }</code>
このソリューションは、電子メール アドレスと電話番号の効率的かつ正確なあいまい一致を提供し、部分的または不完全な入力に基づいてデータを簡単に取得します。
以上がElasticsearch でメール アドレスと電話番号のあいまい一致を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。