0

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);と、応答が遅くなり、これが遅さの原因であることがわかります。

ここで何か間違ったことをしているのか、何かが欠けているのか知りたいですか?

4

1 に答える 1