如何使用SymSpell將模糊搜尋速度提高五倍以上 - lnx
這是對相當令人難以置信的 SymSpell 演算法以及我們如何在 lnx 中實現它的一個相當普遍的看法。
我在開發 lnx 時遇到的最酷的功能之一是一種稱為 SymSpell 的演算法:https://github.com/lnx-search/lnx
每當您希望搜尋引擎解決使用者的輸入錯誤時,您都必須計算應用到某個單詞所需的更改以獲得目標單詞。
例如,如果我要糾正Beer到Bree我們必須應用兩詞取代過程,兩個步驟分解為:
- - Beer -> Brer+1 替換e為r.
- - Brer -> Bree +1 替換r為e.
現在,這是一個相對簡單的過程,當您有數百萬個單詞要搜尋並與整個句子進行比較時,問題就來了。突然間,您發現自己進行了數百萬次迭代來實現這種錯字容忍度。當檢視更大的索引時,尤其是當您有很多使用者要搜尋請求時,這就是事情開始變得非常緩慢、非常快的地方。
現在,大多數情況下,搜尋引擎都採用根據字長計算最大編輯距離的策略,這有助於通過不過度寬容匹配相似詞來提高相關性,而且還有助於提高效能,因為大多數詞的編輯距離為 0或 1 比允許每個單詞的最大編輯距離為 2 節省大量計算。這同樣是一種權衡,然而,即使一個非常常見的錯誤是 helo 或類似的錯誤,像 hello 這樣的詞只會被賦予 0 的編輯距離,與純全文搜尋相比,它仍然相當慢。
當我們增長到更大的索引(在本例中為 20GB 的文字)時,當在我的本地機器上以相當高的 5GHz 時鐘速度和 NVMe 隨時僅執行 1 個併發客戶端時,我們的驅動器延遲會猛增。
因此,在這種情況下,我們只剩下三個選項:
- 增加單機或分片搜尋請求的計算能力。
- 刪除可搜尋文字的數量。
- 摒棄錯別字容忍度。
。。。。
什麼是 SymSpell
SymSpell 分解為對稱刪除拼寫校正演算法:
從每個字典術語生成具有編輯距離(僅刪除)的術語,並將它們與原始術語一起新增到字典中。這必須在預計算步驟中僅執行一次。生成與輸入術語具有編輯距離(僅刪除)的術語並在字典中搜尋它們。對於長度為 n 的單詞、字母大小為 a、編輯距離為 1 的單詞,將只有 n 個刪除,在搜尋時總共有 n 個術語。 - 有關更多資訊,請檢視Wolf Garbe 的部落格。
總的來說,這使得更正的成本大大降低,代價是一些預先計算和記憶體使用(預先計算的字典儲存在記憶體中)但是,這使得它很難在搜尋引擎中使用,並且需要這樣做許多嘗試和設計迭代使其在 lnx 中工作。
更多點選標題
相關文章
- FuzzyScore與模糊搜尋
- 自然搜尋排名該如何提高?
- 如何使用QCompleter和QLineEdit實現支援模糊匹配的搜尋欄
- Vim模糊檔案搜尋fzf
- Elasticsearch:使用同義詞 synonyms 來提高搜尋效率Elasticsearch
- 如何提高MySQL DELETE 速度MySqldelete
- 谷歌搜尋用上BERT,10%搜尋結果將改善谷歌
- 最佳化拼多多關鍵詞搜尋介面:提高查詢響應速度的技巧
- 基於SSH框架專案使用模糊查詢的搜尋功能開發框架
- 如何使用Docker將PostgreSQL、MySQL、MariaDB 上的整合測試執行速度提高20倍?DockerMySql
- 【搜尋引擎】 PostgreSQL 10 實時全文檢索和分詞、相似搜尋、模糊匹配實現類似Google搜尋自動提示SQL分詞Go
- 如何解決使用mac聚焦搜尋無法搜尋軟體的情況Mac
- 如何提高 Xcode 的編譯速度XCode編譯
- 解決element-ui2.10.x版本以上使用遠端搜尋的BugUI
- win10系統下小娜cortana搜尋速度很慢如何解決Win10
- 讀書APP原始碼,搜尋欄模糊處理實現APP原始碼
- OpenAI新AI搜尋將顛覆谷歌等傳統搜尋引擎OpenAI谷歌
- bt引擎-螞蟻磁力搜尋教程大全,如何使用搜尋引擎查詢磁力連結
- 小程式雲開發模糊查詢,實現資料庫多欄位的模糊搜尋資料庫
- 如何提高網站的開啟速度?網站
- 直播軟體開發,實現模糊搜尋的程式碼分析
- [WPF] 離線環境實現支援拼音模糊搜尋的AutoCompleteBox
- 高效的使用搜尋引擎
- ACL 2018使用知識蒸餾提高基於搜尋的結構預測
- 使用Google百度等搜尋引擎的常用搜尋技巧Go
- 直播系統搭建,可自動模糊匹配的搜尋下拉框
- 如何使用 Find 和 Locate 在 Linux 中搜尋檔案Linux
- NeurIPS 2020 | 百裡挑一:如何加速超網訓練的收斂和搜尋速度
- 使用grep搜尋多個字串字串
- Laravel 使用 Elasticsearch 全域性搜尋LaravelElasticsearch
- 最佳路徑搜尋(二):啟發式搜尋(代價一致搜尋(Dijkstra search),貪心搜尋,A*搜尋)
- win10搜尋框卡死怎麼辦_win10搜尋框卡死無法使用如何解決Win10
- see-world雲搜|輕鬆使用谷歌搜尋谷歌
- 海量資料搜尋---搜尋引擎
- 如何使用ABAP Restful API進行程式碼的全文搜尋RESTAPI行程
- Win10 Pro春季更新本地搜尋將預設載入網路搜尋結果Win10
- 搜尋
- Sojern:英國和法國旅遊搜尋量同比下降80%以上