【问题标题】:Is bulkIndexOnStartup needed when using mirrorChanges = true in Grails Searchable plugin?在 Grails Searchable 插件中使用 mirrorChanges = true 时是否需要 bulkIndexOnStartup?
【发布时间】:2010-11-24 20:50:18
【问题描述】:

mirrorChanges 选项将镜像通过 GORM/Hibernate 所做的所有更改,所以如果我没有对数据库进行任何外部更改,那么是否需要 bulkIndexOnStartup?

问题是我们的数据集非常大(>1M 行),批量索引器可能需要 30 多分钟。

当设置为“fork”时,如果通过 GORM 进行任何更改,lucene 将崩溃,因为 lucene 不是线程安全的,并且 GORM 事务将在分叉的批量索引线程运行时尝试更新索引。

设置为 true 时,应用程序将在 30 多分钟内完成初始化。

【问题讨论】:

  • 您是否真的看到批量索引器在启动时分叉时崩溃?

标签: grails lucene grails-orm searchable compass-lucene


【解决方案1】:

如果您不修改来自其他来源的数据,则不需要将 bulkIndexOnStartup 设置为 true,特别是如果您将 mirrorChanges 设置为 true。这几乎就是我们在应用程序中处理它的方式。我们有一个控制器操作,它为特定类调用索引器,分叉,因此我们可以在需要时按需调用它,例如,如果由于某种原因我们需要直接更新数据库。然后我们为特定类而不是整个类集调用索引器,这样如果我们需要调用它就不会花费那么长时间。

【讨论】:

    【解决方案2】:

    如果您正在镜像更改,则不需要bulkIndexOnStartup。

    我们有一个小得多的数据集,所以当我们将发布作为更多维护任务时,我们实际上会使用“fork”设置为一个选项来执行 bulkIndexOnStartup

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多