」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用Elasticsearch對電子郵件地址和電話號碼進行模糊匹配?

如何使用Elasticsearch對電子郵件地址和電話號碼進行模糊匹配?

發佈於2024-11-07
瀏覽:304

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

使用 Elasticsearch 模糊匹配電子郵件或電話

Elasticsearch 提供了模糊匹配電子郵件地址和電話號碼的內建功能。

電子郵件匹配

匹配以特定網域結尾的電子郵件地址(例如@gmail.com):

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

或者,符合包含特定字串的電子郵件:

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

電話匹配

對於電話號碼的模糊匹配,您可以使用以下模式:

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

這將符合以「136」開頭的所有電話號碼。

效能最佳化

要提高模糊匹配的效能,請考慮使用利用 n-gram 或邊緣 n 元詞法過濾器。這些過濾器將文字分解為更小的標記,使 Elasticsearch 更容易執行模糊匹配。

電子郵件分析器設定:

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

電話分析儀配置:

{
  "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"
          ]
        }
      }
    }
  }
}
最新教學 更多>
  • 介紹 simpledev.css
    介紹 simpledev.css
    simpledev.css 是一個新的 CSS 框架,我將其描述為大多數無類別框架。我稱之為無類,因為許多程式碼使用類型選擇器,因此您不必添加許多類別來設定網頁樣式。有一些類,但我們盡量將它們保持在最低限度(到目前為止只有大約 42 個類)。 讓我們回顧一下下面的一些功能! 特徵...
    程式設計 發佈於2024-11-08
  • 掌握影像分割:傳統技術如何在數位時代仍然大放異彩
    掌握影像分割:傳統技術如何在數位時代仍然大放異彩
    介绍 图像分割是计算机视觉中最基本的过程之一,它允许系统分解和分析图像内的各个区域。无论您是在处理对象识别、医学成像还是自动驾驶,分割都可以将图像分解为有意义的部分。 尽管深度学习模型在这项任务中越来越受欢迎,但数字图像处理中的传统技术仍然强大且实用。本文回顾的方法包括阈值处理、边...
    程式設計 發佈於2024-11-08
  • 系統整合測試:確保無縫軟體集成
    系統整合測試:確保無縫軟體集成
    在軟體開發的動態環境中,確保系統的各個組件或模組無縫地協同工作對於提供可靠且高效能的軟體解決方案至關重要。這篇部落格文章深入探討了系統整合測試 (SIT),這是軟體測試生命週期中的關鍵階段,用於驗證整合組件之間的交互,確保系統的整體功能和可靠性。 什麼是系統整合測試? 系統整合測試 (SIT) ...
    程式設計 發佈於2024-11-08
  • 掌握 Angular Table 中可調整大小的欄位:開發人員逐步指南
    掌握 Angular Table 中可調整大小的欄位:開發人員逐步指南
    如何在 Angular 表中创建可调整大小的列:分步指南 Angular Material 表提供了一种时尚的数据显示方式。然而,用户通常需要额外的功能,例如调整表列大小以更好地控制数据显示的能力。在本指南中,我们将逐步介绍使用自定义指令在 Angular 表中创建可调整大小的列的...
    程式設計 發佈於2024-11-08
  • 如何依子值升序對多維 PHP 陣列進行排序?
    如何依子值升序對多維 PHP 陣列進行排序?
    PHP:以子值對多維數組進行排序此問題旨在根據「mid」子值對多維 PHP 數組進行排序。為了實現這一點,響應者建議使用 usort 函數,它允許基於比較的排序。 代碼如下:function cmp($a, $b) { return $a["mid"] - $b[...
    程式設計 發佈於2024-11-08
  • 如何在 Django 中創建一個簡單的調度程序
    如何在 Django 中創建一個簡單的調度程序
    如果您需要每X 分鐘/秒等運行一個函數來進行一些清理,觸發一些操作,您可以在線程模組和django 自訂cli 的幫助下執行一個簡單的調度程序命令。 假設我想每 5 秒呼叫一個函數以在外部 API 上發布一些內容。 在您的 django 應用程式中建立一個名為 management 的資料夾/包...
    程式設計 發佈於2024-11-08
  • 引導實用程式
    引導實用程式
    Bootstrap 實用程式是一組功能強大的類,可讓您的網站樣式設定更輕鬆、更快捷,而無需編寫自訂 CSS。讓我們深入了解基礎知識! 什麼是 Bootstrap 實用程式? Bootstrap 實用程式是預先定義的 CSS 類,您可以將它們直接套用於 HTML 元素以控制其外觀或行為。這些實用程...
    程式設計 發佈於2024-11-07
  • 修復下拉式選單/工具提示等隱藏的溢出
    修復下拉式選單/工具提示等隱藏的溢出
    您是否曾嘗試為您的按鈕建立下拉列表,然後選擇但隨後被溢出隱藏阻止? 然後你該怎麼做,然後你使用javascript將元素丟到DOM的根目錄,然後根據觸發元素矩形定位元素,每次佈局更改時重新計算,發生滾動和調整視窗大小,不是很有效的。 首先我想說的是它還沒有完全支持,但現在有一個polyfill可...
    程式設計 發佈於2024-11-07
  • 如何使用中間件方法有效處理 Gin Web 應用程式中的錯誤?
    如何使用中間件方法有效處理 Gin Web 應用程式中的錯誤?
    增強 Gin 中的錯誤處理Gin 的自訂錯誤處理涉及使用中間件來處理錯誤回應。這允許錯誤邏輯與正常流程邏輯分離。 錯誤處理中介軟體type appError struct { Code int Message string } func JSONAppErrorReporter...
    程式設計 發佈於2024-11-07
  • 如何使用 Python 和 Medium API 將文章發佈到 Medium
    如何使用 Python 和 Medium API 將文章發佈到 Medium
    介紹 作為使用 Obsidian 撰寫文章的人,我經常發現自己在發佈到 Medium 時需要手動複製和格式化我的內容。此過程可能非常耗時且重複,尤其是在處理 Markdown 文件時。為了簡化我的工作流程,我決定開發一個 Python 腳本,自動將 Markdown 檔案直接發佈到...
    程式設計 發佈於2024-11-07
  • 如何使用 Unicode 字元引用來表示 CSS 類別名稱中的百分比?
    如何使用 Unicode 字元引用來表示 CSS 類別名稱中的百分比?
    .container.\31 25\25在CSS中是什麼意思? 在CSS中,標識符可以包含特殊字符,例如反斜杠 ()。反斜線字元在 CSS 中具有不同的用途,具體取決於上下文。 轉義字元在字串中,反斜線後跟換行符將被忽略。在字串之外,反斜線後跟換行符代表其自身。 轉義特殊字符反斜杠可用於轉義特殊 C...
    程式設計 發佈於2024-11-07
  • 工作追蹤應用程式
    工作追蹤應用程式
    使用 MERN Stack 构建工作跟踪应用程序 在当今竞争激烈的就业市场中,在求职过程中保持井然有序可能具有挑战性。手动管理申请、面试和后续跟进很容易变得不堪重负。为了解决这个问题,我决定使用 MERN 堆栈构建一个作业跟踪应用程序。这个项目是一次有益的经历,使我能够将我的技术技...
    程式設計 發佈於2024-11-07
  • C++ 中的「long」保證至少有 32 位元嗎?
    C++ 中的「long」保證至少有 32 位元嗎?
    long 保證有 32 位嗎? 儘管基於 C 標準的常見假設,但問題是 long 是否保證有至少 32 位。標準將基本整數型別分類為:sizeof(char) ≤ sizeof(short int) ≤ sizeof(int) ≤ sizeof(long int)然而,許多人認為基於此層次結構,lo...
    程式設計 發佈於2024-11-07
  • 加權圖類
    加權圖類
    The WeightedGraph class extends AbstractGraph. The preceding chapter designed the Graph interface, the AbstractGraph class, and the UnweightedGraph cl...
    程式設計 發佈於2024-11-07
  • 從新手到忍者:為開發人員釋放 Git 的力量
    從新手到忍者:為開發人員釋放 Git 的力量
    Git 是每个开发者工具包中不可或缺的工具。它不仅可以帮助您有效管理代码库,还可以与团队成员无缝协作。然而,开发人员常常忽视 Git 提供的一些强大的功能和工作流程。在本博客中,我们将探讨基本的 Git 提示和技巧,以帮助开发人员简化工作流程、更有效地管理分支、轻松解决冲突以及集成 GitHub A...
    程式設計 發佈於2024-11-07

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3