Everything原理及全盘搜索研究

本文介绍了Everything这款快速文件搜索工具的工作原理,主要依赖NTFS分区的USN日志系统来实现高效搜索。虽然FAT32分区缺乏USN系统,但推测Everything可能有其他解决方案。作者提出了一种替代方案,即首次启动时建立全盘文件索引,并通过监控磁盘变动实时更新数据库。目前使用Python和sqlite3实现,暂未加入监控线程,后续将研究基于USN的实现方式。
摘要由CSDN通过智能技术生成

Everything是个十分方便的本地文件搜索软件,谁用谁知道...一般每次启动后,它会有个初始化时间,初始化完成后,每次搜索,结果秒出。

有一篇文章是讲Everything实现原理的,详情猛戳此处

大体意思是,ntfs磁盘分区会有一个觉usn的日志系统,从这个日志系统中可以拿到类似全盘索引之类的数据,然后搜索时从这个数据格式出发,效率会比较高。但有个致命点是fat32格式的分区并没有这个usn系统,而且usn系统会返回所有相关的文件信息,不灵活。我的分区全是ntfs的,没有测试everything是否支持fat32,我想应该也是支持的,不过关对于fat32,Everything应该是使用了其他的方案。

起始基于初始化+N次搜索的思想,完全可以不实用usn这个东西。在第一次启动的时候,做一次全盘扫描,建立全盘文件索引到数据库。之后开一个线程监控磁盘,当发生文件的增加、修改、删除时,同步到数据库中。在每次搜索时,从数据库中查找,也是可以的。这样就不必要求磁盘必须是usn的。另外,可以灵活的选择需要哪些文件信息。

下面先使用python实现了这个思想,数据库使用的sqlite3,暂时没有开监控线程。数据库暂时没有优化。


#coding=utf-8
import os
import sqlite3
import time

#全局变量,记录文件数目
global  file_number
文件搜索是一个广泛应用的功能,它允许用户在计算机系统中查找特定的文件或文件内容。下面是一个简单的解释搜索文件的原理: 1. 索引建立:在进行文件搜索之前,首先需要建立一个索引。索引是一个包含文件系统中所有文件及其关联信息的数据库。索引通常包括文件名、路径、大小、创建日期、修改日期等元数据。创建索引可以提高搜索速度,因为不需要遍历整个文件系统来查找文件。 2. 搜索查询:当用户输入搜索关键字或查询条件时,搜索引擎将根据这些条件在索引中进行匹配。搜索引擎可以使用不同的算法和技术来优化搜索结果的准确性和速度。 3. 匹配与排序:搜索引擎会将查询条件与索引中的文件信息进行匹配,并计算匹配度。匹配度可以根据不同的算法和权重来确定,比如关键字出现的频率、位置等。根据匹配度,搜索引擎会将搜索结果进行排序,以便用户能够更快地找到最相关的文件。 4. 结果展示:搜索引擎将排序后的搜索结果展示给用户。通常会显示文件名、路径、大小和其他相关信息。用户可以通过点击搜索结果来访问或打开所需的文件。 以上是一般文件搜索的基本原理,不同的操作系统和搜索引擎可能会有一些细微的差异。同时,一些高级的搜索引擎还支持文件内容的全文搜索,即通过搜索文件的实际内容来匹配查询条件。这需要对文件内容进行额外的处理和索引,以实现更精确的搜索结果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值