【发布时间】:2019-01-09 12:30:17
【问题描述】:
我们正在使用 Hibernate Search(Lucene 引擎)对我们存储在 SQL Server 数据库中并由用 Java 8 编写的搜索服务使用的一些数据启用文本模糊搜索。搜索的数据源是经过适度编辑的表/更新频率。我们需要的是,对于重建索引时所做的任何更改,我们希望确保搜索功能仍在运行且可访问,而不是被正在构建的索引进程锁定。
简而言之,如何在构建新索引时临时使用现有索引并在完成时替换它。
【问题讨论】:
-
让我们问一个最重要的问题:为什么需要重建索引?是否已损坏?你更新你的映射了吗?或者您可能出于某种原因不想或无法启用automatic indexing?根据这一点,有些策略有意义,有些则没有。
-
@YoannRodière 我们的系统是按照多个服务使用相同数据库表的方式构建的。对所述表进行写操作的服务和使用休眠搜索进行搜索操作的服务彼此完全隔离。所以 Hibernate 建立的索引对于搜索服务来说是陈旧的,因此需要重建,因为我们发现添加到表中的新数据不会被我们的搜索服务返回。
标签: java hibernate lucene microservices hibernate-search