首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate搜索(Lucene)几乎实时索引管理器和Tomcat并行部署

Hibernate搜索(Lucene)几乎实时索引管理器和Tomcat并行部署
EN

Stack Overflow用户
提问于 2017-02-28 11:04:19
回答 1查看 164关注 0票数 1

首先是一些背景:我目前在我的Java应用程序中使用Hibernate搜索4.2,我处理编写大量Lucene的问题,我在其中存储了相当多的数据。在使用directory-based索引管理器时,存储在最大索引中的单个对象的索引操作大约占用1秒

为了提高性能,我将索引管理器切换到near-real-time,性能得到了改进,但是现在我想使用Tomcat并行部署来实现零停机时间部署(这允许我在一个Tomcat中并行部署两个不同版本的应用程序),并且我发现不能再使用接近实时的索引管理器了,因为它会刷新内存中的修改,避免刷新磁盘直到缓冲区内存满或应用程序关闭。

我的问题是:在这种情况下,我有什么解决办法?我希望尽可能保持索引过程的同步。

我看了一下Hibernate搜索的代码,我看到了不同的提交策略和一个名为IndexWriterHolder的类,它允许我提交和刷新写入,但我不确定这些API是否或如何公开。

我还看到Lucene 4实现了并发刷新,并且在Hibernate Search 5中发现了允许我指定每个IndexWriter并发写入线程数的标志,但我以前从未使用过它,并且我不确定并发刷新是否对我的情况有所帮助。

任何帮助都是非常感谢的。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-02-28 19:38:08

问得好。简单地说,这是目前不可能的。

IndexWriterHolder确实不是公共API,当它在后台线程中处理队列时会很难公开:直接调用它而不是将事件调度到队列中就很容易了。

当安全时,可以自动使用Lucene的并发刷新功能;例如,在MassIndexing期间;我不认为max_thread_states属性会对您有多大帮助,但值得尝试其他调优选项。

我是Hibernate搜索开发人员之一,不知道Tomcat的并行部署:它听起来像是一个有趣的特性,我们可以探索支持它。请在JIRA上打开一个特性请求,或者在论坛上开始对话,以便更好地帮助我们理解这是如何工作的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42507019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档