- 主题:linux中是不是没办法有everything那么快的搜索?
everything针对fat32也能用。相当于先建索引,后实时监控。
理论上linux模拟相同的应该没问题。
【 在 chunhui 的大作中提到: 】
: 猜测内核模块只能让它更多地截获文件相关信息。但仍然不能达到everything的速度。因为everything是靠文件系统带的存储结构。
: 如果文件系统没有类似mft的结构,除非plocate fsearch自己构建这种索引。但自己构造这种索引的话,会非常复杂。似乎要镜像一个文件系统的B树。或许在内核中可以避免自己镜像B树?
: 不清楚了。
: ...................
--
修改:stany FROM 27.11.145.*
FROM 27.11.145.*
everything有自己的索引文件Everything.db
不同分区类型创建方式不一样。
ntfs文件索引在mft,所以只需要监听mft。
其他分区格式就需要1次全盘扫描(慢),然后监听分区所有写入操作。
索引建好了,查询速度都是一样的。
【 在 chunhui 的大作中提到: 】
: 我搜到的是说它直接读取的ntfs的mft表。
: 如果everything也是通过自己建索引的方式,那其他文件系统也可以实现。没理由只在ntfs下才这么快。---- 这样的话,问题就是:它用的啥索引方式?为啥能这么快?
: 我只是好奇随便搜了一下。everything。不知道有没有更靠谱的资料介绍?
: ...................
--
FROM 27.11.145.*
百度回答:
Everything的工作原理主要依赖于NTFS文件系统的Master File Table(MFT)和USN Journal的特性。
Everything在第一次启动时会扫描整个磁盘,并建立一个索引库。这个索引库是通过遍历NTFS文件系统的MFT表来完成的,MFT表中存储了所有文件夹和文件的名称、路径等信息。通过读取MFT表,Everything能够获取当前磁盘中的所有文件信息,并保存在数据库中。
NTFS文件系统有一个特性,即USN Journal,它记录了所有对文件系统的修改操作。Everything通过监控这个日志文件,实时更新索引库中的信息,从而实现对文件修改的监控。
在文件查找方面,Everything使用字符串匹配算法从之前建立的索引中进行匹配,快速显示文件名称和路径。这使得Everything的搜索速度非常快,尤其是在处理大量文件时,相比Windows系统自带的搜索工具,其效率显著提高。
【 在 stany 的大作中提到: 】
: everything有自己的索引文件Everything.db
: 不同分区类型创建方式不一样。
: ntfs文件索引在mft,所以只需要监听mft。
: ...................
--
FROM 27.11.145.*
Master File Table(MFT)和USN Journal
ntfs文件系统,他所有文件修改会在usn journal日志体现。everything监听压力很小。
其他文件系统可没有这种日志给你提供服务,系统的文件索引也需要分析。
所以搞这类实时的搜索,第一次建索引慢,监听压力也大得多。
【 在 chunhui 的大作中提到: 】
: 我搜到的也是这么说的。感觉它主要还是利用mft表。否则它这么快就不止限于ntfs。其他文件系统也应该可以非常快。
--
修改:stany FROM 27.11.145.*
FROM 27.11.145.*