在为lucene.net使用azure库时,在lucene索引中搜索有点慢

时间:2012-04-05 06:07:32

标签: lucene.net azure-storage

我正在使用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角色。

我的问题是,当我在搜索任何单词时,搜索结果的检索速度不应该快。它有点慢。

我不确定我是否缺少任何配置......或者我是否需要创建一个AzureDirectory,其中RAMDirectory指向blob存储区以便进行搜索,以便快速完成。

2 个答案:

答案 0 :(得分:3)

使用指向blob存储的RAMDirectory创建AzureDirectory,以便更快地进行搜索。我可以加载RAMDir中的所有索引,因为我的索引大小足够小,可以加载到RAMDir.Also我使用单例,以便索引搜索器的相同实例是用户并以特定间隔重新加载RAMDir,以便它具有最新更新的索引。

答案 1 :(得分:0)

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

https://github.com/ajorkowski/AzureDataCacheDirectory