电竞比分网-中国电竞赛事及体育赛事平台

分享

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

 wb7206 2017-10-12

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

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

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

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

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

系統(tǒng)運行過程中,Everything還會監(jiān)控NTFS卷的journal日志文件,如果文件系統(tǒng)中的文件發(fā)生改變,Everything會更新它的index索引數(shù)據(jù)庫。

當(dāng)用戶搜索文件時,Everything利用字符串查找算法,在index索引數(shù)據(jù)庫中查找,可以直接搜索到文件。

那么,現(xiàn)在回答題主問題。
Q:Search Everything 這款軟件如何做到如此快速的搜索的?
A:因為Everything在搜索時,根本沒有遍歷文件系統(tǒng),它檢索的是自己組織好的索引數(shù)據(jù)庫,因此搜索速度飛快;

Q:Windows搜索時什么原理?
A:Windows搜索用的是普通的文件系統(tǒng)遍歷查找。用的應(yīng)該是標準WIN32 API,例如FindFirstFile/FindNextFile之類。當(dāng)然,Windows7之后的版本現(xiàn)在已經(jīng)內(nèi)置帶索引的搜索功能,這項功能非常復(fù)雜,不僅可以搜索文件名,還可以搜索文件內(nèi)容,而且適用任意文件系統(tǒng)。但缺點就是需要一個后臺服務(wù)爬蟲不停的對文件系統(tǒng)進行索引,比較耗資源。

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

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

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多