【问题标题】:How to maintain lucene indexes in azure cloud-app如何在 azure cloud-app 中维护 lucene 索引
【发布时间】:2011-04-22 22:26:00
【问题描述】:

我刚开始使用 Azure Library for Lucene.NET (http://code.msdn.microsoft.com/AzureDirectory)。到目前为止,我一直在使用自己的自定义代码在 azure blob 上编写 lucene 索引。因此,我将 blob 复制到 azure web/worker 角色的本地存储,并将文档读/写到索引。我正在使用我的自定义锁定机制来确保我们在对 blob 的读取和写入之间没有冲突。我希望 Azure 库能为我解决这些问题。

但是,在试用测试应用程序时,我调整了代码以使用复合文件选项,并且每次写入索引时都会创建一个新文件。现在,我的问题是,如果我必须维护索引 - 即保留索引文件的快照并在主索引损坏时使用它,那么我该怎么做。我应该保留所有创建的 .cfs 文件的备份还是只处理最新的文件是可以的。每次写入索引后是否有 api 调用来清理 blob 以保留最新文件?

谢谢 卡皮尔

【问题讨论】:

  • 创建另一个角色,定期从 BlobStorage 下载索引并允许通过网络服务?

标签: indexing lucene azure lucene.net azure-storage


【解决方案1】:

在我回答这个问题后,我们最终更改了搜索基础架构并使用了Windows Azure Drive。我们有一个工作角色,它将使用块存储装载一个 VHD,并在其上托管 Lucene.NET 索引。检查代码以确保首先挂载 VHD 并且索引目录存在。如果 worker 角色倒下,VHD 将在 60 秒后自动卸载,第二个 worker 角色可以将其捡起。

此后,我们再次更改了基础架构并使用 Solr 实例迁移到 Amazon 进行搜索,但 VHD 选项在开发过程中运行良好。它本可以在测试和生产中运行良好,但需求意味着我们需要迁移到 EC2。

【讨论】:

    【解决方案2】:

    我在 Azure 上使用 AzureDirectory 进行全文索引,我也得到了一些奇怪的结果......但希望这个答案对你有用......

    首先,复合文件选项:根据我正在阅读和弄清楚的内容,复合文件是一个包含所有索引数据的大文件。对此的头韵是有许多较小的文件(使用 IndexWriter 的 SetMaxMergeDocs(int) 函数配置)写入存储。这样做的问题是,一旦您获得大量文件(我愚蠢地将其设置为大约 5000),下载索引需要一段时间(在 Azure 服务器上,我的开发盒大约需要一分钟......好吧它已经跑了 20 分钟了,还没跑完……)。

    至于备份索引,我还没有遇到过这个问题,但鉴于我们目前有大约 500 万条记录,而且还会增长,我也想知道这一点。如果您使用的是单个复合文件,则可能将文件下载到工作角色,压缩它们并使用今天的日期上传它们会起作用......如果您有一组较小的文档,您可能会摆脱重新索引数据如果出现问题......但同样,取决于数量......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多