处理大量文件

Mar*_*ijn 9 c# file-io task-parallel-library async-ctp tpl-dataflow

我目前正在研究一个涉及索引大量文件的研究项目(240k); 它们主要是html,xml,doc,xls,zip,rar,pdf和文本大小从几KB到超过100 MB的文本.

在提取了所有zip和rar文件后,我最终得到了一百万个文件.

我正在使用Visual Studio 2010,C#和.NET 4.0,支持TPL Dataflow和Async CTP V3.要从这些文件中提取文本,我使用Apache Tika(使用ikvm转换),并使用Lucene.net 2.9.4作为索引器.我想使用新的TPL数据流库和异步编程.

我有几个问题:

  1. 如果我使用TPL,我会获得性能优势吗?它主要是一个I/O过程,据我所知,当您大量使用I/O时,TPL并没有提供太多好处.

  2. 生产者/消费者方法是否是处理此类文件处理的最佳方式,还是有更好的其他模型?我正在考虑使用blockingcollections创建一个包含多个使用者的生产者.

  3. TPL数据流库是否适用于此类流程?看来TPL Dataflow最适合用于某种消息传递系统......

  4. 在这种情况下,我应该使用异步编程还是坚持同步?

ble*_*lez 0

您可以使用一切搜索。该 SDK 是开源的,并且有 C# 示例。这是我见过的 Windows 上索引文件最快的方法。

来自常见问题解答

1.2 索引我的文件需要多长时间?

“Everything”仅使用文件和文件夹名称,通常需要几秒钟来构建其数据库。全新安装的 Windows XP SP2(大约 20,000 个文件)将需要大约 1 秒的时间来建立索引。1,000,000 个文件大约需要 1 分钟。

我不确定你是否可以使用 TPL。