如何让 SimpleLucene.Net 使用 Azure

本文关键字:使用 Azure Net SimpleLucene | 更新日期: 2023-09-27 18:36:43

我们在整个应用程序中使用SimpleLucene进行搜索。一切正常。我们将应用程序上传到 azure,它工作正常,但是,每次我进行任何更改并且必须重新上传到 Azure 时,我都必须重新创建索引以确保它是最新的。我想将我的 Azure 索引移动到 Azure 上的 Blob 存储,但是我不知道如何让 Azure Lucene 目录与 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 存储创建索引编写器?我知道可以使用AzureDirectory dll,但它不适用于SimpleLucene

如何让 SimpleLucene.Net 使用 Azure

我想说的是,Simple Lucene 可能不是与 Windows Azure 一起使用的好选择,因为我不确定它是否有代码将索引存储在 Windows Azure Blob Storage 上。您确定它可以保存到Windows Azure Blob存储上的索引吗?

我已经为Windows Azure使用了 Lucene.NET,您可以通过设置Azure Blob存储直接在Windows Azure Blob存储上存储索引。

步骤 1:配置 Azure Blob 存储

<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:使用索引编写器在 Azure Blob 存储上存储索引:

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

因此,如果您决定将 Lucene.net 用于Windows Azure,那将是相对容易和最好的行动方案。