2

我下载 AzureDirectory 并使用最新的 Lucene.NET 根本无法编译

很多错误,比如

'Lucene.Net.Store.Azure.AzureDirectory' does not implement inherited abstract member 'Lucene.Net.Store.Directory.Dispose(bool)'

是否有任何新的 AzureDirectory 可以与 Lucene 3 一起使用?

4

4 回答 4

2

我刚刚从 Nuget 下载了 AzureDirectory 1.0.5.1 并使用 JustDecompile 对其进行了反编译。AzureDirectory 类没有实现 Lucene.net 3.0.3(发行版)中 Directory 类的几个抽象成员,例如 ListAll()。因此,AzureDirectory 1.0.5.1 无法与 Lucene.net 3.0.3 兼容

希望作者尽快升级 AzureDirectory 以支持这个新版本的 Lucene.net。与此同时,我建议自己深入研究代码......这就是我正在做的事情。虽然不确定我是否会成功,因为我不熟悉 Lucene 的内部运作。

于 2012-11-03T14:29:07.820 回答
1

感谢大家的帮助,我已经获得了带有 Lucene 3.0.3.0 和最新 Azure SDK 的 AzureDirectory。

但我有个问题。我有 4 个独特的 Lucene 索引,基本上针对不同国家的不同产品。“lucenedb-us”、“lucenedb-au”、“lucenedb-eu”等。

AzureDirectory 缓存究竟是如何工作的?

会这样:

azureDirectory = new AzureDirectory(cloudStorageAccount, "lucenedb-us", new RAMDirectory());

然后是:

azureDirectory = new AzureDirectory(cloudStorageAccount, "lucenedb-au", new RAMDirectory());

导致准确的结果,还是代码总是使用“lucenedb-us”?如果它总是使用“lucenedb-us”,删除会new RAMDirectory()解决问题吗?

于 2013-01-14T23:32:15.577 回答
0

我已经使用对我有用的 Lucene.Net 3.0.3 测试了 Lucene.Net.Store.Azure 1.0.5.1。我使用了以下步骤,因此您也可以尝试:

  1. 在 VS2010 中创建了一个 Windows Azure Worker 角色
  2. 使用 VS 包管理器从此处包含 Lucene.NET.Store.Azure (1.0.5.1) (依赖于 Lunece.NET 2.9.4.1 及更高版本)

    2.1 PM> 安装包Lucene.Net.Store.Azure

  3. 之后,我从这里将 Lucene.net 更新为 3.0.3 RC ,删除了 Lucene.net 2.9.4.1 并安装了 3.0.3 位

    3.1 PM> 安装包Lucene.Net -Pre

  4. 验证我在我的项目中设置了最新的位和所有依赖项,我在我的工作角色中添加了以下测试代码:

    Lucene.Net.Util.Version version = Lucene.Net.Util.Version.LUCENE_30;
    Microsoft.WindowsAzure.CloudStorageAccount cloudAccount = Microsoft.WindowsAzure.CloudStorageAccount.FromConfigurationSetting("CloudStorageSetting");
    var cacheDirectory = new RAMDirectory();
    AzureDirectory azureDirectory = new AzureDirectory(cloudAccount, "MyCloudIndex",cacheDirectory);
    IndexWriter indexWriter = null;
    Analyzer analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30);
    indexWriter = new IndexWriter(azureDirectory, analyzer, IndexWriter.MaxFieldLength.UNLIMITED); 
    Document doc = new Document();
    indexWriter.AddDocument(doc);
    indexWriter.Dispose();
    azureDirectory.Dispose();
    

没有编译错误,并且该角色确实可以正常工作,因此您可以尝试相同的方法来查看。

于 2012-08-15T20:48:07.283 回答
0

您可以使用这个 GitHub 存储库:https
://github.com/richorama/AzureDirectory 您必须自己构建它,但它可以与 Lucene 3.0.3 和 Azure Tools 2 一起正常工作。

于 2012-12-05T16:06:43.220 回答