代码之家  ›  专栏  ›  技术社区  ›  Ajay

在Grails Searchable插件中使用mirrorChanges=true时是否需要BulkIndexOnStartup?

  •  0
  • Ajay  · 技术社区  · 14 年前

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

    问题是我们的数据集非常大(>1m行),大容量索引器可能需要30分钟以上的时间。

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

    当设置为true时,应用程序将完成30分钟以上的初始化。

    2 回复  |  直到 14 年前
        1
  •  0
  •   Maricel    14 年前

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

        2
  •  0
  •   Aaron Saunders    14 年前

    如果要镜像更改,则不需要BulkIndexOnStartup。

    我们有一个小得多的数据集,所以我们实际上做了BulkIndexOnStartup,并将“fork”设置为一个选项,当我们做为维护任务的更多发布时。

    推荐文章