我正在使用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存储区以便进行搜索,以便快速完成。
答案 0 :(得分:3)
使用指向blob存储的RAMDirectory创建AzureDirectory,以便更快地进行搜索。我可以加载RAMDir中的所有索引,因为我的索引大小足够小,可以加载到RAMDir.Also我使用单例,以便索引搜索器的相同实例是用户并以特定间隔重新加载RAMDir,以便它具有最新更新的索引。
答案 1 :(得分:0)
我编写了一个使用Azure共享缓存(预览版)的版本。这将更接近RAM目录的速度,但也具有在实例之间共享的额外优势......