我们有一个相当大的磁盘阵列,上面大约有 2-3 百万个 XML 文件。磁盘采用 NTFS 格式,我们想使用通配符搜索文件系统。因此,像 * SomePartOfTheFilename * 这样的内容将是典型的搜索查询。
我们正在使用 .Net,并且发现使用 DirectoryInfo 似乎很慢。
DirectoryInfo directoryInfo = new DirectoryInfo(directory);
List<FileInfo> fileInfos = directoryInfo.GetFiles(searchString, SearchOption.AllDirectories).ToList();
使用循环和递归也非常慢。
是否有一个较低级别的 API 调用可以用来直接搜索 NTFS 索引?
从命令行使用 dir * SomePartOfTheFilename * /s 几乎是即时的。有什么东西可以利用吗?
我不确定您是否可以使用索引服务,但它可能对您想要做的事情很方便:
http://msdn.microsoft.com/en-us/library/ee805985%28VS.85%29.aspx http://msdn.microsoft.com/en-us/library/ee805985%28VS.85%29.aspx
http://www.codeproject.com/KB/database/Indexing_Service_HOW-TO.aspx http://www.codeproject.com/KB/database/Indexing_Service_HOW-TO.aspx
它允许您针对计算机上文件的 NTFS 索引创建复杂的查询。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)