4

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

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

谢谢卡皮尔

4

2 回答 2

2

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

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

于 2011-07-04T11:53:37.490 回答
0

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

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

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

于 2011-01-06T09:35:09.237 回答