1

Lucene.Net用のAzureLibraryを使用して、データのインデックス作成と検索を行っています。私のwebroleインデックスデータは、以下のコードを使用してインデックスを作成します。

AzureDirectory azureDirectory = new AzureDirectory(CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("AzureStorageConnectionString")), pIndexDir);

IndexWriter indexWriter  = indexWriter = new IndexWriter(azureDirectory, null, findexExists, IndexWriter.MaxFieldLength.UNLIMITED);
indexWriter.SetRAMBufferSizeMB(10.0);
indexWriter.SetUseCompoundFile(false);
indexWriter.SetMaxMergeDocs(10000);
indexWriter.SetMergeFactor(100);

そして、私の同じwebroleがデータを検索します。以下のコードは、インデックスの検索に使用されます。

 AzureDirectory azureDirectory = new AzureDirectory(CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("AzureStorageConnectionString")), pIndexToSearch);
 IndexSearcher searcher = new IndexSearcher(azureDirectory,true); 

デフォルトでは、AzureDirectoryはローカルの一時フォルダーにキャッシュを格納するため、上記のコードはローカルのtenpフォルダーを使用してキャッシュします。

サービス定義ファイルで、Webロールのローカルストレージリソースを構成していません。

SmallVMロールサイズを使用しています。

私の問題は、単語を検索しているときに、検索結果が本来あるべき速度で取得されないことです。少し遅いです。

構成が不足しているかどうかはわかりません...または、高速になるように、検索用のBLOBストレージを指すRAMDirectoryを使用してAzureDirectoryを作成する必要があります。

4

2 に答える 2

3

検索を高速化するために、ブロブ ストレージを指す RAMDirectory を使用して AzureDirectory を作成します。インデックスのサイズが RAMDir にロードするのに十分なほど小さいため、すべてのインデックスを RAMDir にロードできます。

于 2012-04-09T10:00:54.853 に答える