我在网上看到了几条声明,NHibernate(或Hibernate)搜索“负责数据库/索引同步”。
当我阅读这些陈述时,我不禁想知道是否有隐含的“...只要您使用[N] Hibernate进行任何和所有数据访问。”
我正在使用NHibernate作为完全由不同应用程序拥有的数据库的只读数据访问层 - 因此我的应用程序永远不会直接了解外部写入。
Hibernate / NHibernate Search是否真的可以监控原始数据的变化,例如在整个或部分索引上设置查询通知和/或使用生存时间或“到期”?
或者,随着越来越多的行被外部应用程序更改,Lucene索引会随着时间的推移逐渐变得稳定吗?
如果这个工具没有进行那种同步,那么除了手动重建索引(这将很难 很难及时),还有什么我的可以做什么来保持Lucene索引与数据库同步,或者我最好只使用SQL Server中的全文功能,因为我一直在做到这一点?
答案 0 :(得分:1)
我想我已经能够从Hibernate Search Documentation推断出答案:
Hibernate Search将透明地为通过Hibernate Core持久化,更新或删除的每个实体编制索引。但是,您必须为数据库中已存在的数据创建初始Lucene索引。
如果您必须创建初始索引,那么如果在应用程序之外进行任何更改,您还必须更新该索引。
显然,除非几乎所有的数据写入都是通过会话完成的,否则HS / NHS 不是一种即发即弃的解决方案,如SQL Server FTS,Oracle Text等。