4

Lucene.NET用のAzureライブラリ( http://code.msdn.microsoft.com/AzureDirectory )を使い始めたところです。これまで、紺碧のブロブにluceneインデックスを書き込むために独自のカスタムコードを使用していました。そのため、私はblobを紺碧のWeb /ワーカーロールのローカルストレージにコピーし、ドキュメントをインデックスに読み書きしていました。カスタムロックメカニズムを使用して、blobへの読み取りと書き込みの間に衝突が発生しないようにしました。AzureLibraryがこれらの問題を処理してくれることを期待しています。

ただし、テストアプリを試しているときに、複合ファイルオプションを使用するようにコードを微調整したところ、インデックスに書き込むたびに新しいファイルが作成されました。さて、私の質問は、インデックスを維持する必要がある場合、つまり、インデックスファイルのスナップショットを保持し、メインインデックスが破損した場合にそれを使用する必要がある場合、これを行うにはどうすればよいですか。作成されたすべての.cfsファイルのバックアップを保持するか、最新のものだけを処理する必要があります。インデックスに書き込むたびに最新のファイルを保持するためにBLOBをクリーンアップするためのAPI呼び出しはありますか?

ありがとうカピル

4

2 に答える 2

2

これに答えた後、検索インフラストラクチャを変更し、WindowsAzureドライブを使用することになりました。ブロックストレージを使用してVHDをマウントし、その上でLucene.NETインデックスをホストするワーカーロールがありました。コードは、VHDが最初にマウントされ、インデックスディレクトリが存在することを確認するためにチェックされました。ワーカーの役割が失敗した場合、VHDは60秒後に自動的にマウント解除され、2番目のワーカーの役割がそれを取得する可能性があります。

その後、インフラストラクチャを再度変更し、検索用にSolrインスタンスを使用してAmazonに移行しましたが、開発中はVHDオプションが適切に機能しました。テストと本番環境ではうまく機能した可能性がありますが、要件により、EC2に移行する必要がありました。

于 2011-07-04T11:53:37.490 に答える
0

Azureでフルテキストインデックスを作成するためにAzureDirectoryを使用していますが、奇妙な結果も得られています...しかし、この回答がお役に立てば幸いです...

まず、複合ファイルオプション:私が読んで理解していることから、複合ファイルは、すべてのインデックスデータが含まれている単一の大きなファイルです。これに対する頭韻法は、多くの小さなファイル(IndexWriterのSetMaxMergeDocs(int)関数を使用して構成された)をストレージに書き込むことです。これに伴う問題は、大量のファイルを取得すると(愚かにもこれを約5000に設定)、インデックスをダウンロードするのに時間がかかることです(Azureサーバーでは、開発ボックスの約1分かかります...まあその現在20分間実行されていますが、まだ終了していません...)。

インデックスのバックアップについては、まだ気づいていませんが、現在約500万件のレコードがあり、今後も増えていくので、これも気になります。単一の複合ファイルを使用している場合は、ファイルをワーカーロールにダウンロードし、圧縮して今日の日付でアップロードすると機能します...ドキュメントのセットが少ない場合は、データのインデックスを再作成する必要があります。何かがうまくいかない場合...しかし、繰り返しますが、数によって異なります...。

于 2011-01-06T09:35:09.237 に答える