9

私は現在、多数のファイル (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 データフロー ライブラリと非同期プログラミングを使用してください。

いくつかの質問を聞きたいんです:

  1. TPL を使用するとパフォーマンスが向上しますか? これは主に I/O プロセスであり、私が理解していることから、TPL は I/O を頻繁に使用する場合にはあまりメリットがありません。

  2. プロデューサー/コンシューマー アプローチは、このタイプのファイル処理に対処するための最良の方法でしょうか、それとも他に優れたモデルはありますか? ブロッキングコレクションを使用して、複数のコンシューマーを持つ 1 つのプロデューサーを作成することを考えていました。

  3. TPL データフロー ライブラリは、この種のプロセスに役立ちますか? TPL Dataflow は、ある種のメッセージング システムで使用するのが最適なようです...

  4. この場合、非同期プログラミングを使用するか、同期に固執する必要がありますか?

4

2 に答える 2

0

Everything Searchを使用できます。SDK はオープン ソースであり、C# の例があります。これは、私が見た Windows でファイルをインデックス化する最速の方法です。

よくある質問から:

1.2 ファイルのインデックス作成にかかる時間は?

"Everything" はファイル名とフォルダー名のみを使用し、データベースの構築には通常数秒かかります。Windows XP SP2 (約 20,000 ファイル) の新規インストールでは、インデックス作成に約 1 秒かかります。1,000,000 ファイルの場合、約 1 分かかります。

ただし、TPLを使用できるかどうかはわかりません。

于 2012-05-16T19:55:34.073 に答える