我下載AzureDirectory,並與最新的Lucene.NET 根本無法編譯使用AzureDirectory與Lucene.NET 3.0.3.0
許多錯誤像
'Lucene.Net.Store.Azure.AzureDirectory' does not implement inherited abstract member 'Lucene.Net.Store.Directory.Dispose(bool)'
是否有任何新的AzureDirectory,可以工作與Lucene 3?
我下載AzureDirectory,並與最新的Lucene.NET 根本無法編譯使用AzureDirectory與Lucene.NET 3.0.3.0
許多錯誤像
'Lucene.Net.Store.Azure.AzureDirectory' does not implement inherited abstract member 'Lucene.Net.Store.Directory.Dispose(bool)'
是否有任何新的AzureDirectory,可以工作與Lucene 3?
我用Lucene.Net 3.0.3測試了Lucene.Net.Store.Azure 1.0.5.1,它爲我工作。我用下面的步驟,所以你可以嘗試,以及:在VS2010
包括來自here Lucene.NET.Store.Azure(1.0.5.1)(其上具有依賴性
下午2時01>安裝,包裝Lucene.Net.Store.Azure
,我從here更新Lucene.net 3.0.3 RC之後,刪除了Lucene.net 2.9.4.1並安裝了3.0.3位
下午3時01>安裝,包裝Lucene.Net - 預
已驗證我有最新位和所有的依賴在我的項目設置,我添加了以下的測試代碼在我的輔助角色:
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();
這是沒有編譯錯誤和角色確實工作正常,所以你可以嘗試相同,看看。
我剛剛從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的內部工作不感興趣。
行之有效最新的東西,你可以用這個GitHub的庫:https://github.com/richorama/AzureDirectory
你必須建立它自己,但它的工作原理是使用Lucene 3.0的預期。 3和Azure工具2.
感謝您的幫助大家,我已經得到AzureDirectory與Lucene 3.0.3.0和最新的Azure SDK。
雖然我有一個問題。我有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美」?如果它總是使用「lucenedb-us」,將刪除new RAMDirectory()
修復該問題?
好的,你下載的DLLs,我下載了源代碼,也許就是這個差別,會試試你的方式 – 2012-08-15 20:55:57
你的例子不起作用。我安裝了完全相同的包,但無法將azureDirectory插入到IndexWriter()中,因爲它需要目錄的子類(並且AzureDirectory不是目錄的子類型)。 – 2012-11-13 20:00:34
那些對這個答案投下贊成票的人請理解,當我回答這個問題時,Lucene 3.0.3在RC中,它的確如上面所寫的那樣工作。在Lucene 3.0.3發佈之後,發生了一些可能使上面的答案不適用的變化,但它一次適用。 – AvkashChauhan 2012-11-27 08:06:29