1

我正在尝试创建一个 Azure 辅助角色来索引 Lucene.NET 中的文档。

但是,当我创建一个 时IndexWriter,它会失败并出现以下异常:

System.ExecutionEngineException was unhandled
Message: An unhandled exception of type 'System.ExecutionEngineException'
         occurred in mscorlib.dll

如果我将项目构建为.exe,则一切正常 - 不会引发异常。我正在使用 .NET Framework 4.0。

我的代码:

var cloudAccount = CloudStorageAccount.FromConfigurationSetting("LuceneBlobStorage");
var cacheDirectory = new RAMDirectory();
var azureDirectory = new AzureDirectory(
                                cloudAccount,"SnowballIndex", cacheDirectory);
var analyzer = new SnowballAnalyzer("English");

// !-- Exception thrown after this call
this.indexWriter = new IndexWriter(
             azureDirectory, analyzer, IndexWriter.MaxFieldLength.UNLIMITED);

任何想法,将不胜感激。我在网上搜索,一无所获。

谢谢。

4

2 回答 2

0

鉴于 blob 容器名称应为小写http://msdn.microsoft.com/en-us/library/windowsazure/dd135715.aspx

尝试将目录/索引名称从“SnowballIndex”更改为“snowball-index”。

于 2012-06-29T15:57:05.997 回答
0

我刚刚用我的工人角色用确切的代码进行了测试(只是使用标准分析器并且工人角色 DLL 是没有任何问题创建的。如果这可能是使用自定义分析器的问题,请您尝试隔离一下吗?也碰巧,你有.net 4.5 安装在同一台机器上?

如果你能提供你的工人角色项目,我很想看看,看看可能有什么问题。

2012 年 6 月 28 日已编辑

在我的基于 SDK 1.6 的辅助角色中,我只安装了Lucene.Net.Store.Azure包,然后在 OnStart() 函数中添加了以下代码,并且没有错误:

StorageCredentialsAccountAndKey creds = new StorageCredentialsAccountAndKey(_azure_storage_name_, _azure_storage_key);
CloudStorageAccount cloudAccount = new CloudStorageAccount(creds, true);
Lucene.Net.Util.Version version = Lucene.Net.Util.Version.LUCENE_29;
var cacheDirectory = new RAMDirectory();
IndexWriter indexWriter = null;
AzureDirectory azureDirectory = new AzureDirectory(cloudAccount, "SnowballIndex", cacheDirectory);
Analyzer analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29);
indexWriter = new IndexWriter(azureDirectory, analyzer, IndexWriter.MaxFieldLength.UNLIMITED); 

我认为您的问题可能是特定于机器的,因为没有错误并且工作人员角色运行良好。

于 2012-06-28T06:23:12.853 回答