2

私が求めている質問は、特に AzureDirectory プロジェクトを使用したくないためです。私は自分で何かをしようとしているだけです。

cloudStorageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=http;AccountName=xxxx;AccountKey=xxxxx");

        blobClient=cloudStorageAccount.CreateCloudBlobClient();


        List<CloudBlobContainer> containerList = new List<CloudBlobContainer>();
        IEnumerable<CloudBlobContainer> containers = blobClient.ListContainers();
        if (containers != null)
        {
        foreach (var item in containers)
        {
            Console.WriteLine(item.Uri);
        }
        }
        /* Used to test connectivity 
        */
        //state the file location of the index

        string indexLocation = containers.Last().Name.ToString();
        Lucene.Net.Store.Directory dir =
            Lucene.Net.Store.FSDirectory.Open(indexLocation);

        //create an analyzer to process the text
        Lucene.Net.Analysis.Analyzer analyzer = new
        Lucene.Net.Analysis.Standard.StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30);

        //create the index writer with the directory and analyzer defined.

        bool findexExists = Lucene.Net.Index.IndexReader.IndexExists(dir);

        Lucene.Net.Index.IndexWriter indexWritr = new Lucene.Net.Index.IndexWriter(dir, analyzer,!findexExists, Lucene.Net.Index.IndexWriter.MaxFieldLength.UNLIMITED);
        //create a document, add in a single field
        Lucene.Net.Documents.Document doc = new  Lucene.Net.Documents.Document();
        string path="D:\\try.html";
        TextReader reader = new FilterReader("D:\\try.html");
        doc.Add(new Lucene.Net.Documents.Field("url",path,Lucene.Net.Documents.Field.Store.YES,Lucene.Net.Documents.Field.Index.NOT_ANALYZED));
        doc.Add(new Lucene.Net.Documents.Field("content",reader.ReadToEnd().ToString(),Lucene.Net.Documents.Field.Store.YES,Lucene.Net.Documents.Field.Index.ANALYZED));
        indexWritr.AddDocument(doc);
        indexWritr.Optimize();
        indexWritr.Commit();
        indexWritr.Close();

問題は、インデックス作成が完了した後、コンテナー内に作成されたファイルを表示できないことです。誰でも私を助けることができますか?

4

2 に答える 2

6

ローカル ディスクにファイルを書き込む FSDirectory を使用しています。

BLOB ストレージ内のコンテナーのリストを渡しています。BLOB ストレージは、REST API を介して利用できるサービスであり、ファイル システムから直接アドレス指定することはできません。したがって、FSDirectory はインデックスをストレージに書き込むことができません。

オプションは次のとおりです。

  1. VHD ディスクをマシンにマウントし、VHD を BLOB ストレージに格納します。ここにこれを行う方法に関するいくつかの指示があります: http://blogs.msdn.com/b/avkashchauhan/archive/2011/04/15/mount-a-page-blob-vhd-in-any-windows-azure -vm-outside-any-web-worker-or-vm-role.aspx
  2. 質問で参照している Azure ディレクトリを使用します。最新のストレージ SDK に対して AzureDirectory を再構築しました: https://github.com/richorama/AzureDirectory
于 2012-12-11T12:39:36.910 に答える
0

見回す人のための別の代替手段 - AzureDirectory の代替となることができる azure 共有キャッシュ (プレビュー) を使用するディレクトリを作成しました (ただし、境界付き検索セットの場合)。

https://github.com/ajorkowski/AzureDataCacheDirectory

于 2013-04-02T12:05:22.270 に答える