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

Tob*_*ias 3 plone archetypes plone-4.x

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

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

但是,似乎没有记录的方法来为元数据字段执行此操作; 该目录编制索引的文档并没有说太多关于这一点.

最先进的方法是什么?

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

更新:目前,我选择了第二种可能性,但是对于这种类型的1069个物体花费了大约100秒,而且所有其他物体也可能需要数小时才能受到影响; 有一个更有选择性的方式会很高兴.

Dav*_*ick 6

每当对象编制索引时,都会更新目录元数据.我认为更新它的最快方法是重新索引每个对象,指定要更新的单个索引:

portal_catalog.catalog_object(obj, idxs=['getId'])
Run Code Online (Sandbox Code Playgroud)

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

(在你想索引其他情况下没有采取更新目录元数据的时间,通过update_metadata = FALSE此相同的方法.)