1

我正在使用 Azure Library for Lucene.Net 来索引和搜索数据。我的 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 角色配置本地存储资源。

我正在使用小型 VM 角色大小。

我的问题是当我搜索任何单词时,搜索结果的检索速度都没有达到应有的速度......它有点慢。

我不确定我是否缺少任何配置......或者我是否需要创建一个带有指向 blob 存储的 RAMDirectory 的 AzureDirectory 以进行搜索,以便它更快。

4

2 回答 2

3

创建一个带有指向 Blob 存储的 RAMDirectory 的 AzureDirectory 以加快搜索速度。我可以在 RAMDir 中加载所有索引,因为我的索引大小足够小,可以在 RAMDir 中加载。此外,我使用单例,以便索引搜索器的同一实例是用户并以特定间隔重新加载 RAMDir,以便它具有最新更新的索引。

于 2012-04-09T10:00:54.853 回答
0

我编写了一个使用 Azure 共享缓存的版本(预览版)。这将更接近 RAM 目录的速度,但还具有在实例之间共享它的额外优势......

https://github.com/ajorkowski/AzureDataCacheDirectory

于 2013-04-02T12:00:25.080 回答