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

Refresh non-index metadata in a Plone ZCatalog

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

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

但是,对于元数据字段,似乎没有记录在案的方法; catalog reindexing documentation对此没有多说。

最先进的方法是什么?

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

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

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

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

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