hibernate - NHibernate Search 会意识到底层数据的变化吗?

标签 hibernate nhibernate hibernate-search nhibernate-search

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

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

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

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

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

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

最佳答案

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

Hibernate Search will transparently index every entity persisted, updated or removed through Hibernate Core. However, you have to create an initial Lucene index for the data already present in your database.



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

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

关于hibernate - NHibernate Search 会意识到底层数据的变化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8981599/

相关文章:

Spring JPA 存储库 findBy IN 列表 - 允许 null

Java 空对象还是对象创建?

nhibernate - 代码生成器不好吗?

java - 使用 Hibernate Search 对短语进行模糊搜索

java - hibernate 搜索/Lucene : String field cannot be used for sorting "indexed with multiple values per document, use SORTED_SET instead"

java - Hibernate 尝试获取用户时出现 Spring 安全错误

sql - Hibernate HQL 相当于 Oracle 并行关键字

c# - 有没有办法在 nhibernate 中进行反向查找?

asp.net - 哪一种最适合 3 层架构; Linq to SQL 还是 Nhibernate?

java - Hibernate Search - 即使 Elasticsearch 集群关闭也启动应用程序