私は現在、多数のファイル (240k) のインデックス作成を含む研究プロジェクトに取り組んでいます。それらはほとんどが html、xml、doc、xls、zip、rar、pdf、およびテキストで、ファイルサイズは数 KB から 100 MB 以上に及びます。
すべての zip ファイルと rar ファイルを抽出すると、最終的に合計 100 万個のファイルが得られます。
TPL Dataflow と Async CTP V3 をサポートする Visual Studio 2010、C#、および .NET 4.0 を使用しています。これらのファイルからテキストを抽出するために、Apache Tika (ikvm で変換) を使用し、Lucene.net 2.9.4 をインデクサーとして使用します。新しい TPL データフロー ライブラリと非同期プログラミングを使用してください。
いくつかの質問を聞きたいんです:
TPL を使用するとパフォーマンスが向上しますか? これは主に I/O プロセスであり、私が理解していることから、TPL は I/O を頻繁に使用する場合にはあまりメリットがありません。
プロデューサー/コンシューマー アプローチは、このタイプのファイル処理に対処するための最良の方法でしょうか、それとも他に優れたモデルはありますか? ブロッキングコレクションを使用して、複数のコンシューマーを持つ 1 つのプロデューサーを作成することを考えていました。
TPL データフロー ライブラリは、この種のプロセスに役立ちますか? TPL Dataflow は、ある種のメッセージング システムで使用するのが最適なようです...
この場合、非同期プログラミングを使用するか、同期に固執する必要がありますか?