刷新Plone ZCatalog中的非索引元数据

时间:2017-05-15 09:37:56

标签: plone plone-4.x archetypes

Zope目录包含具有索引属性(用作查询参数)和元数据属性(在访问搜索结果时可用)的目录对象。对于索引属性,当索引的计算逻辑发生变化时,可以重新编制索引。

我注意到我的getThumbnailPath 元数据字段对于我的一种基于Archetypes的内容类型不正确。当然,元数据字段内容在方法改变时不会自动改变;因此,我想在升级步骤中解决这个问题。

但是,似乎没有记录的方法来为元数据字段执行此操作; catalog reindexing documentation对此并没有太多说明。

最先进的方法是什么?

  • 我有办法刷新某个元数据字段吗?
  • 我是否需要对受影响的类型进行目录搜索并重新索引每个项目(重新计算每个其他索引和元数据字段)?
  • 我应该创建一个同名的索引,之后是否应该删除该索引,或者无论如何都不会重要?

更新:目前,我选择了第二种可能性,但是对于那种类型的1069个对象花费了大约100秒,并且对于所有其他受影响的对象也很容易花费数小时;有一个更有选择性的方式会很好。

1 个答案:

答案 0 :(得分:5)

只要对象编入索引,就会更新目录元数据。我认为更新它的最快方法是重新索引每个对象,指定要更新的单个索引:

portal_catalog.catalog_object(obj, idxs=['getId'])

所需时间取决于元数据中包含的对象数和字段数。

(在其他情况下,如果您希望索引而不花时间更新目录元数据,请将update_metadata = False传递给同一方法。)