Zope目录包含具有索引属性(用作查询参数)和元数据属性(在访问搜索结果时可用)的目录对象。对于索引属性,当索引的计算逻辑发生变化时,可以重新编制索引。
我注意到我的getThumbnailPath
元数据字段对于我的一种基于Archetypes的内容类型不正确。当然,元数据字段内容在方法改变时不会自动改变;因此,我想在升级步骤中解决这个问题。
但是,似乎没有记录的方法来为元数据字段执行此操作; catalog reindexing documentation对此并没有太多说明。
最先进的方法是什么?
更新:目前,我选择了第二种可能性,但是对于那种类型的1069个对象花费了大约100秒,并且对于所有其他受影响的对象也很容易花费数小时;有一个更有选择性的方式会很好。
答案 0 :(得分:5)
只要对象编入索引,就会更新目录元数据。我认为更新它的最快方法是重新索引每个对象,指定要更新的单个索引:
portal_catalog.catalog_object(obj, idxs=['getId'])
所需时间取决于元数据中包含的对象数和字段数。
(在其他情况下,如果您希望索引而不花时间更新目录元数据,请将update_metadata = False传递给同一方法。)