0

検索用にアプリケーション全体で SimpleLucene を使用しています。すべて正常に動作します。アプリケーションを Azure にアップロードすると正常に動作しますが、変更を加えて Azure に再アップロードする必要があるたびに、インデックスを再作成して最新であることを確認する必要があります。Azure インデックスを Azure 上の Blob Storage に移動したいのですが、Azure Lucene Directory を SimpleLucene と連携させる方法がわかりません。サンプルコードをいただければ幸いです。

私はこのようなインデックスを構築しています。

var path = @"my path to the index";
var indexWriter = new SimpleLucene.Impl.DirectoryIndexWriter(new System.IO.DirectoryInfo(path), true);
var definitions = GetDefinitions().ToList();

using (var indexService = new SimpleLucene.Impl.IndexService(indexWriter))
{
     try
     {
         indexService.IndexEntities(definitions, new DefinitionsIndexDefinition());
     }
     catch { }
}

Azure BLOB ストレージから indexWriter を作成するにはどうすればよいですか? 使用できる AzureDirectory dll があることは知っていますが、SimpleLucene では機能しません

4

1 に答える 1

1

Simple Lucene は、Windows Azure Blob Storage にインデックスを格納するコードがあるかどうかわからないため、Windows Azure で使用するのに適したオプションではない可能性があります。Windows Azure Blob ストレージのインデックスに保存できると確信していますか?

Lucene.NET for Windows Azureを使用しました。これを使用して、Azure Blob Storage を設定することにより、Windows Azure Blob ストレージに直接インデックスを格納できます。

ステップ 1: Azure Blob Storage を構成する

<configuration>
  <appSettings>
    <!-- azure SETTINGS -->
    <add key="BlobStorageEndpoint" value="http://YOURACCOUNT.blob.core.windows.net"/>
    <add key="AccountName" value="YOURACCOUNTNAME"/>
    <add key="AccountSharedKey" value="YOURACCOUNTKEY"/>
  </appSettings>
</configuration>

手順 2: IndexWriter を使用して Azure Blob Storage にインデックスを格納します。

AzureDirectory azureDirectory = new AzureDirectory("TestCatalog");
IndexWriter indexWriter = new IndexWriter(azureDirectory, new StandardAnalyzer(), true);
Document doc = new Document();
doc.Add(new Field("id", DateTime.Now.ToFileTimeUtc().ToString(), Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.NO));
doc.Add(new Field("Title", “this is my title”, Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.NO));
doc.Add(new Field("Body", “This is my body”, Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.NO));
indexWriter.AddDocument(doc);
indexWriter.Close();

そのため、Windows Azure に Lucene.net を使用することに決めた場合、それが比較的簡単で最善の方法です。

于 2012-06-11T15:48:36.787 に答える