T-Wand演算法用不到 600 行程式碼擊敗 Lucene - yyhh
Lucene 速度非常快,因為它使用了一種最先進的搜尋演算法WAND [1]。這是WAND 的工作原理。
它作弊。
好吧,任何足夠先進的演算法看起來都像是作弊。WAND也不例外。基本上,它跳過了大部分文件集合,並且安全地跳過它們,這意味著如果在不跳過的情況下詳盡地進行完整計算,結果將是相同的。它能夠通過使用兩個技巧安全地跳過文件。
第一個技巧是最巧妙的。我仍然不知道我在 IBM Research 的前同事是如何想出它的。我向他們致敬。讓我從後續文章 [2] 中竊取一張圖片來說明這一點。
第二個技巧是使用假設的最大可能分數來過濾潛在候選人而無需全面檢查他們的想法
.....
我說輕鬆擊敗 Lucene,因為我們沒有做任何 Lucene 中豐富的極端優化。我們的程式碼是慣用的 Clojure,在關鍵效能熱點處有一些 Java 資料結構的額外幫助。程式碼少於 600 行,包括註釋。
這是向Datalevin新增全文搜尋功能,這是我們去年開源的 Datalog 資料庫。今天完成了搜尋引擎的主要工作,和老牌的Java搜尋庫Apache Lucene進行了一些基準比較,發現Datalevin搜尋引擎平均比Lucene快75%,平均快3倍。
詳細點選標題
相關文章
- 平時程式碼中用不到設計模式?Are you kidding me?設計模式
- 自己寫個網盤系列:② 看我用不到700行程式碼,完成了個網盤後端編碼行程後端
- 如何用不到200行程式碼寫一款屬於自己的js類庫行程JS
- git push程式碼失敗,鑑權失敗Git
- 今年供應鏈攻擊增加了600%以上
- PHP 終將擊敗 Python ?PHPPython
- Hacking Team攻擊程式碼分析
- 15行Python程式碼,幫你理解令牌桶演算法Python演算法
- 40行程式碼實現React核心Diff演算法行程React演算法
- 我的天!這是史上最爛的專案:苦撐12年,600多萬行程式碼...行程
- lucene入門使用
- Lucene學習一
- Lucene查詢原理
- Lucene 中的 VInt
- 問題+原始碼,一流程式設計師進擊BAT的演算法合集原始碼程式設計師BAT演算法
- 單個應用失敗程式碼存檔
- SQL隱碼攻擊原理及程式碼分析(二)SQL
- SQL隱碼攻擊原理及程式碼分析(一)SQL
- 用6行Python程式碼實現選擇性排序演算法Python排序演算法
- 新的PHP高危漏洞可導致黑客執行遠端程式碼攻擊PHP黑客
- jenkins -pipeline 執行 jmeter 指令碼 publish report 失敗JenkinsJMeter指令碼
- 因Fortinet VPN漏洞,超600個日本組織被黑客攻擊黑客
- Lucene建立索引流程索引
- 程式碼執行
- 擊敗GPT-4的那群人GPT
- 面試不再怕,20行Python程式碼幫你搞懂LRU演算法面試Python演算法
- 攻擊者使用SQLite資料庫中的惡意程式碼攻擊應用程式SQLite資料庫
- 程式設計師:學校教的數學知識,程式設計根本用不到!程式設計師
- 單行程式碼演算法解答行程演算法
- nms 演算法演示(附程式碼)演算法
- 網站搜尋功能lucene網站
- 速度秒掉GPT-4o、22B擊敗Llama 3 70B,Mistral AI開放首個程式碼模型GPTAI模型
- Akamai:65.1%的Web應用程式攻擊來自SQL隱碼攻擊AIWebSQL
- 20行程式碼實現,使用Tarjan演算法求解強連通分量行程演算法
- 【原創】分散式之一行程式碼解決快取擊穿問題分散式行程快取
- 演算法專題 | 10行程式碼實現的最短路演算法——Bellman-ford與SPFA演算法行程
- 攻擊JavaWeb應用————6、程式架構與程式碼審計JavaWeb架構
- 攻擊JavaWeb應用[6]-程式架構與程式碼審計JavaWeb架構