好吧,我一直试图让这个工作2天:我希望对Azure工作者角色进行全文搜索。我认为Lucene.NET对此有好处。我使用过这个例子:Use AzureDirectory with Lucene.NET 3.0.3.0。
我正在使用以下代码:
CloudStorageAccount cloudAccount = CloudStorageAccount.FromConfigurationSetting("CloudStorageSetting");
var cacheDirectory = new RAMDirectory();
AzureDirectory azureDirectory = new AzureDirectory(cloudAccount, "MyCloudIndex", cacheDirectory);
Analyzer analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30);
IndexWriter indexWriter = new IndexWriter(azureDirectory, analyzer, IndexWriter.MaxFieldLength.UNLIMITED);
使用Lucene.Net 3.0.3.0和Lucene.Net.Store.Azure 1.0.5.1,在Azure SDK 1.8上。我也尝试过较旧的Lucene.NET(2.9.xxx),但这也无效。我更新了Windows.Azure.Storage:仍然无效。
问题是:Visual Studio给出了一个错误,即插入azureDirectory
的{{1}}需要是IndexWriter
类型而不是Directory
。当我将其类型更改为AzureDirectory
时,它会说Directory
不是AzureDirectory
的子类型。
为什么互联网上的所有示例都是错误的,当我真正复制粘贴它们时不起作用?
更新:问题已修复,我写了一篇关于它的博文:http://leoncullens.nl/post/2012/11/18/Full-Text-Search-on-Azure-with-LuceneNET.aspx
答案 0 :(得分:2)
我已经“分叉”了这个project,将Lucene引用更新为3.0.3,并将Azure存储客户端更新为2.0(v1.8 SDK附带的版本),并将代码放在此处:
https://github.com/richorama/AzureDirectory
复制“TestApp”中的示例代码以确定如何使用此版本的Lucene.NET应该相对简单。
*免责声明,我不是Lucene专家,我没有正确测试过 - 使用风险自负!
答案 1 :(得分:0)
它不能正常工作......以下是我为什么不能和你能做什么的答案: How to implement Lucene .Net search on Azure webrole
这是另一个可能有帮助的答案,但我不同意这种方法: https://azuredirectory.codeplex.com/discussions/402913
编辑:我应该澄清,当我说“工作”时,我的意思是在生产环境中工作。
答案 2 :(得分:0)
几个月前,这个设置适用于LUCENE版本2.9和较旧的Azure SDK。工作和非工作之间的主要区别是不使用RAMDirectory,因为它最终耗尽了RAM。在不使用RAMDirectory之后,我成功地索引了25 GB的数据。
_azureDirectory = new AzureDirectory
( storageAccount
, catalogName
//, new RAMDirectory());
_version = Lucene.Net.Util.Version.LUCENE_29;
_analyzer = new StandardAnalyzer(_version);
IndexWriter
writer = new IndexWriter(
_azureDirectory,
_analyzer,
newIndex, // new index or update
IndexWriter.MaxFieldLength.UNLIMITED);
writer.SetUseCompoundFile(false);
writer.SetRAMBufferSizeMB(800);
writer.SetMergeFactor(10);