我想重新索引一个特定类型的所有内容,只需一次。如何重新索引某种类型的所有内容?
我应该在zmi中创建一个python脚本吗?
这是我迄今为止
from zope.component.hooks import getSite
site = getSite()
items = site.contentItems()
items.reindexObject()
我不知道如何指定的类型......或者如果我在正确的轨道上。我可以剖析这种操作吗?
我想重新索引一个特定类型的所有内容,只需一次。如何重新索引某种类型的所有内容?
我应该在zmi中创建一个python脚本吗?
这是我迄今为止
from zope.component.hooks import getSite
site = getSite()
items = site.contentItems()
items.reindexObject()
我不知道如何指定的类型......或者如果我在正确的轨道上。我可以剖析这种操作吗?
居然会使用目录的最好方法:
import plone.api
catalog = plone.api.portal.get_tool(name='portal_catalog')
for brain in catalog(portal_type='My portal type'):
obj = brain.getObject()
obj.reindexObject()
这将做到这一点。
请注意,我只使用plone.api调用,所以您的代码将是未来的证明。
一个解决方案,我们使用:
import plone.api
catalog = plone.api.portal.get_tool(name='portal_catalog')
for brain in catalog(portal_type='My portal type'):
obj = brain.getObject()
catalog.catalog_object(obj)
使用从ZCatalog catalog_object
方法是由ZMI “更新” 功能使用相同的API:
优点:修改日期未更新,您只需重新索引目录数据 缺点:您无法使用受限制的Python中的此API(您可以拨打obj.reindexObject
)
如果您对修改日期更改没有问题,则gforcata答案会更简单。
感谢您的提示。这个脚本也给我一个权限错误。 – 2015-03-05 03:51:59
通常在http://docs.plone.org上你可以找到几乎所有东西,特别是对于那些简单的东西。 – gforcada 2015-03-02 12:39:37
问题:通常一个对象在修改后已经重新编制索引,这不够吗? – gforcada 2015-03-02 12:40:23
这篇文档并没有让任何东西看起来简单......直到你看到API部分! 我改变了它的索引方式,它现在依赖于子项目,所以我需要重新对现有的父母进行索引而不清除子项。 – 2015-03-02 21:41:03