刷新 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 传递给相同的方法。)
Zope 目录包含具有 index 属性(用作查询参数)和 metadata 属性(访问搜索结果时可用)的目录对象).对于索引属性,当索引的计算逻辑发生变化时,有重新索引的可能。
我注意到我的 getThumbnailPath
元数据 字段对于我的一种基于原型的内容类型不正确。当然,元数据字段内容不会在方法更改时自动更改;因此,我想在升级步骤中解决这个问题。
但是,对于元数据字段,似乎没有记录在案的方法; catalog reindexing documentation对此没有多说。
最先进的方法是什么?
- 我有办法刷新某个元数据字段吗?
- 我是否需要对受影响的类型进行目录搜索并为每个项目重新编制索引(也重新计算所有其他索引和元数据字段)?
- 我是否应该创建一个同名索引,然后删除该索引,还是无所谓?
更新:目前,我选择了第二种可能性,但该类型的 1069 个对象花费了大约 100 秒,而所有其他对象很容易花费数小时也受影响;如果有一个更有选择性的方式就好了。
只要对象被索引,目录元数据就会更新。我认为更新它的最快方法是重新索引每个对象,指定要更新的单个索引:
portal_catalog.catalog_object(obj, idxs=['getId'])
所需时间取决于元数据中包含的对象数量和字段数量。
(在其他情况下,如果您想索引 而 不花时间更新目录元数据,请将 update_metadata=False 传递给相同的方法。)