Indexing 如何在azure云应用程序中维护lucene索引

Indexing 如何在azure云应用程序中维护lucene索引,indexing,lucene,azure,lucene.net,azure-storage,Indexing,Lucene,Azure,Lucene.net,Azure Storage,我刚开始玩Lucene.NET()的Azure库。直到现在,我一直在使用自己的自定义代码在azure blob上编写lucene索引。因此,我将blob复制到azure web/worker角色的localstorage,并将文档读/写到索引中。我使用自定义锁定机制来确保对blob的读写之间没有冲突。我希望Azure Library能为我解决这些问题 然而,在试用测试应用程序时,我调整了代码以使用复合文件选项,这样每次我写入索引时都会创建一个新文件。现在,我的问题是,如果我必须维护索引,即保留索

我刚开始玩Lucene.NET()的Azure库。直到现在,我一直在使用自己的自定义代码在azure blob上编写lucene索引。因此,我将blob复制到azure web/worker角色的localstorage,并将文档读/写到索引中。我使用自定义锁定机制来确保对blob的读写之间没有冲突。我希望Azure Library能为我解决这些问题

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

谢谢
Kapil

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

首先,复合文件选项:据我所阅读和理解,复合文件是一个包含所有索引数据的单个大文件。它的头韵是将大量较小的文件(使用IndexWriter的SetMaxMergeDocs(int)函数配置)写入存储器。问题是,一旦你访问了很多文件(我愚蠢地将其设置为5000左右),下载索引需要一段时间(在Azure服务器上,我的dev box大约需要一分钟的时间…,它已经运行了20分钟,但仍然没有完成…)


至于备份索引,我还没有遇到过这个问题,但考虑到我们目前有大约500万条记录,而且这一数字还会增加,我也很想知道这一点。如果您使用的是单个复合文件,那么可能将这些文件下载到工作人员角色,压缩这些文件并将其与今天的日期一起上载就可以了。。。如果您有一个较小的文档集,如果出现问题,您可能可以通过重新索引数据来解决问题。。。但同样,取决于数字……

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

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

创建另一个角色,定期从BlobStorage下载索引并允许通过Web服务搜索,这不是更好吗(就像他们在Azure Library for Lucene.Net中写的那样)?