首先是一些背景:我目前在我的Java应用程序中使用Hibernate搜索4.2,我处理编写大量Lucene的问题,我在其中存储了相当多的数据。在使用directory-based索引管理器时,存储在最大索引中的单个对象的索引操作大约占用1秒。
为了提高性能,我将索引管理器切换到near-real-time,性能得到了改进,但是现在我想使用Tomcat并行部署来实现零停机时间部署(这允许我在一个Tomcat中并行部署两个不同版本的应用程序),并且我发现不能再使用接近实时的索引管理器了,因为它会刷新内存中的修改,避免刷新磁盘直到缓冲区内存满或应用程序关闭。
我的问题是:在这种情况下,我有什么解决办法?我希望尽可能保持索引过程的同步。
我看了一下Hibernate搜索的代码,我看到了不同的提交策略和一个名为IndexWriterHolder的类,它允许我提交和刷新写入,但我不确定这些API是否或如何公开。
我还看到Lucene 4实现了并发刷新,并且在Hibernate Search 5中发现了允许我指定每个IndexWriter并发写入线程数的标志,但我以前从未使用过它,并且我不确定并发刷新是否对我的情况有所帮助。
任何帮助都是非常感谢的。谢谢。
发布于 2017-02-28 19:38:08
https://stackoverflow.com/questions/42507019
复制相似问题