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倍。
詳細點選標題
相關文章
- 用不到 50 行的 Python 程式碼構建最小的區塊鏈Python區塊鏈
- ORACLE ORA600之SQL隱碼攻擊一OracleSQL
- Lucene原始碼解析--Lucene中的CloseableThreadLocal類原始碼thread
- 如何用不到 30 行程式碼寫一個模板引擎?行程
- 我是如何擊敗Java自帶排序演算法的Java排序演算法
- 自己寫個網盤系列:② 看我用不到700行程式碼,完成了個網盤後端編碼行程後端
- 看Lucene原始碼必須知道的基本規則和演算法原始碼演算法
- Lucene原始碼解析--Field類原始碼
- 平時程式碼中用不到設計模式?Are you kidding me?設計模式
- git push程式碼失敗,鑑權失敗Git
- Lucene原始碼解析--Lock檔案原始碼
- 利用Lucene搜尋Java原始碼Java原始碼
- 12行JS程式碼的DoS攻擊分析及防禦JS
- PHP 終將擊敗 Python ?PHPPython
- 30 行 Python 程式碼搞定 X 演算法Python演算法
- 免費的Lucene 原理與程式碼分析完整版下載
- 擊敗二分檢索演算法——插值檢索、快速檢索演算法
- Lucene原始碼解析--搜尋過程<二>原始碼
- 刪除SQL隱碼攻擊的程式碼SQL
- 初探Lucene
- Lucene教程
- 40行程式碼實現React核心Diff演算法行程React演算法
- Hacking Team攻擊程式碼分析
- Lucene可以對MYSQL進行全文檢索嗎?MySql
- DEDECMS資料庫執行原理、CMS程式碼層SQL隱碼攻擊防禦思路資料庫SQL
- 【Lucene&&Solr】Lucene索引和搜尋流程Solr索引
- lucene(一) lucene一些概念的理解
- 問題+原始碼,一流程式設計師進擊BAT的演算法合集原始碼程式設計師BAT演算法
- 如何用不到200行程式碼寫一款屬於自己的js類庫行程JS
- SQL隱碼攻擊原理及程式碼分析(一)SQL
- SQL隱碼攻擊原理及程式碼分析(二)SQL
- Lucene原始碼解析--刪除文件檔案(.del)原始碼
- 15行Python程式碼,幫你理解令牌桶演算法Python演算法
- lucene中文分片語件(詞典全切分演算法)下載演算法
- 擊敗GPT-4的那群人GPT
- 新的PHP高危漏洞可導致黑客執行遠端程式碼攻擊PHP黑客
- Lucene學習
- 我的天!這是史上最爛的專案:苦撐12年,600多萬行程式碼...行程