Everything Search Engine這款軟件如何做到如此快速的搜索的

Everything和Windows搜索是有區別的,以下列幾點:

1. Everything只能搜索文件名和文件夾名,Windows搜索可以搜索文件名和文件內容;
2. Everything只能搜索NTFS格式的文件系統,Windows搜索可以搜索任意文件系統(例如FAT32,exFAT,NTFS);

但有時我們需要的恰好就是快速搜索文件名,那麼Everything的工作原理是如何呢?
先簡單介紹一下NTFS的兩個功能,MFT和USN journal。

Master File Table (MTF)
在NTFS文件系統中,有一個特殊的表,稱爲MTF表。所有文件夾和文件的名稱都被存儲在該表中,訪問該表的速度非常快,使應用程序可以不遍歷文件系統就能獲取當前卷(磁盤)中的所有文件的名稱和路徑。

USN journal
NTFS還有一個日誌功能。所有對文件系統有修改的操作都被記錄在了一個journal日誌文件中。

Everything的原理
程序啓動時,掃描系統所有NTFS卷(磁盤)的MTF表,將文件名稱以一種利於字符串檢索的算法形式存儲在Everything的index索引數據庫中。

系統運行過程中,Everything還會監控NTFS卷的journal日誌文件,如果文件系統中的文件發生改變,Everything會更新它的index索引數據庫。

當用戶搜索文件時,Everything利用字符串查找算法,在index索引數據庫中查找,可以直接搜索到文件。

那麼,現在回答題主問題。
Q:Search Everything 這款軟件如何做到如此快速的搜索的?
A:因爲Everything在搜索時,根本沒有遍歷文件系統,它檢索的是自己組織好的索引數據庫,因此搜索速度飛快;

Q:Windows搜索時什麼原理?
A:Windows搜索用的是普通的文件系統遍歷查找。用的應該是標準WIN32 API,例如FindFirstFile/FindNextFile之類。當然,Windows7之後的版本現在已經內置帶索引的搜索功能,這項功能非常複雜,不僅可以搜索文件名,還可以搜索文件內容,而且適用任意文件系統。但缺點就是需要一個後臺服務爬蟲不停的對文件系統進行索引,比較耗資源。

Q:爲何微軟不使用這種原理?
A:個人覺得是因爲這種方法不具備普適性,無法應用與非NTFS文件系統,所以無法集成到Windows中。

Q:爲何微軟不收購這家公司?
A: 個人感覺還是技術含量不太高,而且微軟自家的ActiveDirectory早就在使用MTF快速檢索文件了。

文章轉自:Everything Search Engine這款軟件如何做到如此快速的搜索的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章