Sql Azure不支持全文索引的,所以微软官方推荐的做法是基于lucene来做全文索引,而且也有一个基于Azure Storage的Lucene.Net开源组件,已经支持到了最新的lucene.net 3.0.3。可以在CodePlex上下载到最新代码“AzureDirectory Library for Lucene.Net” http://azuredirectory.codeplex.com/ ,也可以通过NuGet获取。
在使用过程中,发现检索速度还可以,虽然是基于同一区的Azure Storage远程的存储,但是基本都能在1秒内,还是可以接受的。
建索引的过程也可以,配置好Storage Account和Catalog Name (其实就是Storage的Container),就会将索引文件同步到Storage。在使用过程中,被坑过一次,最开始我一次索引1000个帖子(一次indexwriter打开和关闭之间),还是比较顺利,后来贪快,一次索引10000帖子,过了半天才发现压根就没索引上,索引文件没写入,去看了一下文档,才发现它建索引实际上上是先建在本地,本地好了后,在close的时候,就同步到Storage上去,如果本地的文件太大,所以根本就同步不上去。另外它也建议不要去调用indexWriter的optimize()优化操作(Calling Optimize() is a really bad idea because it causes ALL SEGMENTS to be merged into ONE SEGMENT),因为这会将索引文件会合并成为一个很大的索引文件,而这样会导致整个索引文件都要重建,重新下载上传。
详细说明还是请参考其文档:http://azuredirectory.codeplex.com/
如果有兴趣体验,可以访问:http://www.openlab.co/search?q=%E8%A5%BF%E5%B7%A5%E5%A4%A7
目前已经将我自己的网站全部迁移到Azure: Web Role + Sql Azure + Azure Storage + Service Bus
后面会分享一些迁移过程中遇到的问题和心得。
