在Directories和SubDirectories中搜索文件的最快方法

时间:2014-02-20 14:32:26

标签: c# asp.net performance full-text-search

我需要以最快的方式搜索目录和子目录中的文件。文件数量超过140万。文件大小介于5到50 KB之间。每个文件夹包含5到10000个文件。

目前我正在使用:

foreach (string file in Directory.GetFiles(path, "*.*", SearchOption.AllDirectories))
{
    if (file.Contains(searchkeyword))
    {
        string AnchorText = Path.GetFileNameWithoutExtension(file);
    }
}

1 个答案:

答案 0 :(得分:1)

最佳解决方案

我会add an index to that directory并使用Windows Search to find files in it。这里的优点不仅在于它不是您需要维护的代码,而且Windows索引服务还能够索引文件的内容(.doc,.pdf,.txt等)。

家庭成长解决方案

数据库内部的本地缓存(* Sql,Redis,Mongo,Lucene,无论你喜欢什么)。

  1. 在您的应用程序启动时订阅FileSystemWatcher到目录。
  2. 然后对目录执行一次(根据原始代码示例)执行枚举,以确保在应用程序未运行时没有添加/删除/更改文件。
  3. 将这两者中的任何数据存储在数据库中的适当索引表中。
  4. 当您需要搜索文件时,只需查询数据库。