我们正在使用Hibernate Search(Lucene Engine)对文本进行模糊搜索,这些文本是我们存储在SQL Server数据库中并由Java 8编写的搜索服务所使用的一些数据。搜索的数据源是一个具有中等编辑能力的表/更新频率。我们需要的是,对于重建索引时进行的任何更改,我们要确保搜索功能仍在运行且可访问,而不是被正在构建的索引过程锁定。
简而言之,如何在构建新索引时临时使用现有索引,并在完成后替换它。
答案 0 :(得分:1)
不是您问题的答案,但是无论如何,它可以为您提供帮助:根据我在评论中的理解,您实际上并不需要完全重建索引,您只需要从与应用程序执行搜索查询。
如果“正在更新”的应用程序使用Hibernate ORM,则可以解决该问题而无需完全重建索引:在“正在更新”的应用程序中自动且增量地构建索引(使用"automatic indexing" mode中的Hibernate Search无需进行任何操作查询),并确保该索引可用于“搜索”应用程序。
后者可以实现:
filesystem-master
/ filesystem-slave
directory providers集成使用,这将使您能够定期(且无需停机)从“更新”应用程序(主)到“搜索”应用程序(从属)。请注意,如果有多个应用程序更新索引,则需要使用JMS or JGroups backend将所有索引更新重定向到主节点,并避免冲突。注意,配置JMS或JGroups并不是很明显。