AzureDirectory ライブラリを使用して、Azure Cloud Storage アカウントに Lucene.NET インデックスを格納しようとしています。
次のバージョンを使用しています。
- Microsoft.Windows.Azure.Storage 4.3.0.0
- Lucene.Net 3.0.3.0
- Lucene.Net.Store.Azure 3.0.5553.21100
そして、次のメソッドを呼び出します。
public void UpdateDocument(Term keyTerm, Document document, string indexName)
{
using (var analyser = new StandardAnalyzer(LuceneVersion))
{
using (var directory = new AzureDirectory(cloudStorage.GetStorageAccount(), indexName, new RAMDirectory()))
{
using (var indexWriter = new IndexWriter(directory, analyser, true, IndexWriter.MaxFieldLength.UNLIMITED))
{
indexWriter.UpdateDocument(keyTerm, document);
}
}
}
}
メソッドを 10 回 (単体テストから) 呼び出しただけでも、全体の時間は約 30 秒です。
インデックスライターでさまざまな変更を試みて、パフォーマンスが向上するかどうかを確認しましたが、今のところ何もありません. インデックス ライターとディレクトリ クラスを再利用するようにコードを変更しようとしましたが、ファイルがロックされてしまいます。また、Lucene を分離しておくために、呼び出し元からインデックス コードを抽象化しておきたいと考えていました。コメントアウトするindexWriter.UpdateDocument(keyTerm, document);
と、応答が遅くなり、これが遅さの原因であることがわかります。
ここで何か間違ったことをしているのか、何かが欠けているのか知りたいですか?