2012-08-15 53 views
2

我下載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?

回答

1

我用Lucene.Net 3.0.3測試了Lucene.Net.Store.Azure 1.0.5.1,它爲我工作。我用下面的步驟,所以你可以嘗試,以及:在VS2010

  • 包括來自here Lucene.NET.Store.Azure(1.0.5.1)(其上具有依賴性

    1. 創建一個Windows Azure的工作者角色使用VS包管理器Lunece.NET 2.9.4.1及以上)

      下午2時01>安裝,包裝Lucene.Net.Store.Azure

    2. ,我從here更新Lucene.net 3.0.3 RC之後,刪除了Lucene.net 2.9.4.1並安裝了3.0.3位

      下午3時01>安裝,包裝Lucene.Net - 預

    3. 已驗證我有最新位和所有的依賴在我的項目設置,我添加了以下的測試代碼在我的輔助角色:

      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(); 
      

    這是沒有編譯錯誤和角色確實工作正常,所以你可以嘗試相同,看看。

  • +0

    好的,你下載的DLLs,我下載了源代碼,也許就是這個差別,會試試你的方式 – 2012-08-15 20:55:57

    +0

    你的例子不起作用。我安裝了完全相同的包,但無法將azureDirectory插入到IndexWriter()中,因爲它需要目錄的子類(並且AzureDirectory不是目錄的子類型)。 – 2012-11-13 20:00:34

    +0

    那些對這個答案投下贊成票的人請理解,當我回答這個問題時,Lucene 3.0.3在RC中,它的確如上面所寫的那樣工作。在Lucene 3.0.3發佈之後,發生了一些可能使上面的答案不適用的變化,但它一次適用。 – AvkashChauhan 2012-11-27 08:06:29

    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的內部工作不感興趣。

    2

    This環節都有其使用Lucene 3.0.3和最新的SDK月

    +0

    感謝您分享我的博客文章! :-) 很開心你喜歡。 – 2012-11-22 22:31:39

    +0

    @LeonCullens任何一天的人!那個鏈接拯救了我的寶貴時光......否則直到我到處尋找那個解決方案的日子到處都是:D – Mandy 2012-11-23 02:44:31

    1

    感謝您的幫助大家,我已經得到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()修復該問題?