3

我在网上看到了几条关于NHibernate(或Hibernate)搜索“负责数据库/索引同步”的声明。

当我阅读这些陈述时,我不禁想知道是否隐含“……只要您使用 [N]Hibernate 进行任何和所有数据访问”。

我使用 NHibernate 作为只读数据访问层,针对完全由不同应用程序拥有的数据库 - 所以我的应用程序永远不会直接知道外部写入。

Hibernate/NHibernate Search 是否真的做任何事情来监控原始数据的变化,例如设置查询通知和/或对全部或部分索引使用生存时间或“到期”?

或者随着越来越多的行被外部应用程序更改,Lucene 索引是否会随着时间的推移而变得越来越陈旧?

如果这个工具没有进行那种同步,那么除了手动重新索引(这将很难正确计时)之外,我还能做些什么来保持 Lucene 索引与数据库同步,还是我更好只使用 SQL Server 中的全文功能,就像我到目前为止一直在做的那样?

4

1 回答 1

1

我想我已经能够从Hibernate Search Documentation中推断出答案:

Hibernate Search 将透明地索引通过 Hibernate Core 持久化、更新或删除的每个实体。但是,您必须为数据库中已经存在的数据创建一个初始 Lucene 索引。

如果您必须创建一个初始索引,那么如果在应用程序之外进行任何更改,您也必须更新该索引。

显然,HS/NHS不像SQL Server FTS、Oracle Text 等那样是一劳永逸的解决方案,除非几乎所有数据写入都是通过会话完成的。

于 2012-01-25T13:34:22.310 回答