【发布时间】:2015-01-20 16:16:47
【问题描述】:
我们有一个包含大约 130 个表的 Oracle 数据库。其中,只有两个表用于全文搜索(它们是 cms 表)。这些表使用 Hibernate/Lucene 注释正确配置。
问题在于,每当对任何表进行 crud 操作时,Hibernate 都会对这两个 cms 表进行一些查询(我们认为这会减慢操作速度)。我们从hibernatedocumentation了解到这一点:
3.1.2. Automatic indexing
By default, every time an object is inserted, updated or deleted through Hibernate, Hibernate Search updates the according Lucene index....
我们也知道可以通过使用手动索引 (Doc link) 来避免这种情况。但是我们不想手动使用索引(因为我们不想通过代码这样做)。
我们喜欢自动索引,但我们需要以这样一种方式配置 hibernate,即只有在 两个 cms 表中的任何一个被插入/更新/删除时,索引才应该更新/检查/插入。有什么方法可以开箱即用吗?我认为这是一个非常有效的用例。
我们正在使用:
- hibernate.core.version - 4.2.15.Final
- hibernate.search.version - 4.3.0.Final
- lucene-core - 3.6.2
2015 年 1 月 21 日更新 - 格林威治标准时间 17:44
我做了更多的测试,我可以清楚地看到索引 当更新/插入不相关的实体时更新。我们正在使用 @ClassBridge (用于提取 word/pdf 等),我可以看到 call 进入 ClassBridge 实现并调用 文档.add(...)。这很奇怪!
【问题讨论】:
标签: hibernate lucene hibernate-search