Mar*_*ino 12 c# lucene lucene.net sitecore
我是Lucene.NET的新手,但我使用的是为Sitecore CMS构建的开源工具,它使用Lucene.NET来索引来自CMS的大量内容.我昨天确认,当我重建我的索引时,当前索引文件擦除干净,所以任何依赖于索引的东西都没有大约30-60秒的数据(完整索引重建的时间).是否有最佳实践或方法使Lucene.NET在完全重建新索引之前不会覆盖当前索引文件?我基本上认为我希望它写入新的临时索引文件,当重建完成时,这些文件会覆盖当前索引.
我在说什么的例子:
提前致谢
我没有"Sitecore"本身的经验,但这是我的故事.
我们最近将基于索引的搜索(使用Lucene.Net)整合到我们的电子商务子系统中.我们案例的索引更新过程可能需要大约半个小时(大约50,000个产品本身+大量相关信息).为了防止在更新索引期间出现"拒绝服务"响应,我们首先创建它的"备份"版本(只需将索引目录复制到另一个位置),所有进一步的请求都被重定向到使用此"备份"版本.索引更新完成后,我们删除备份,以便客户端开始使用索引的更新(或"实时")版本.如果在更新过程中可能发生任何未处理的异常,这也有帮助,因为您可能最终处于根本没有索引的情况下(在我们的情况下,客户端总是可以使用"备份"版本).
该对象的API参考(Lucene 2.4)Lucene.Net.Index.IndexWriter声明如下:
请注意,
create=true即使读者正在使用索引,您也可以打开 索引.旧读者将继续搜索他们打开的"时间点"快照,并且在重新打开之前不会看到新创建的索引.
所以至少你不应该担心目前在索引中搜索的客户端.
希望这能帮助您做出正确的决定.
| 归档时间: |
|
| 查看次数: |
2083 次 |
| 最近记录: |