Plone 如何重新索引特定类型的所有内容?
我想重新索引特定类型的所有内容,只需一次 我应该在zmi中创建python脚本吗 这就是我目前所拥有的Plone 如何重新索引特定类型的所有内容?,plone,Plone,我想重新索引特定类型的所有内容,只需一次 我应该在zmi中创建python脚本吗 这就是我目前所拥有的 from zope.component.hooks import getSite site = getSite() items = site.contentItems() items.reindexObject() 我不知道如何指定类型。。。或者如果我在正确的轨道上。是否有执行这种操作的示例,我可以分析?实际使用目录的最佳方法是: import plone.api catalog = p
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\u对象
方法与ZMI“更新”功能使用的API相同:
优点:修改日期不会更新,只需重新编制目录数据的索引即可
缺点:您不能从受限Python使用此API(同时可以调用obj.reindexObject
)
如果您对修改日期的更改没有问题,gforcata的答案会更简单。一般来说,您可以找到几乎所有的内容,特别是像这样的简单内容。问题:一般来说,对象在修改时已经重新编制了索引,这还不够吗?文档并没有让任何内容看起来简单。。。直到你看到API部分!我改变了索引的方式,现在它依赖于子项,因此我需要在不清除子项的情况下重新索引现有的父项。这会将修改日期设置为实际日期吗?不,您只是重新索引对象,而不是修改对象。您还可以指定要重新索引的索引以加快进程;例如,obj.reindexObject(idxs=['Title'])或obj.reindexObject(idxs=['modified'])我测试了这个解决方案(因为它看起来比我通常做的要酷得多),但不起作用:>>>catalog(portal_type='Document')[0]。reindexObject()回溯(最近一次调用):File“”,第1行,在TypeError:reindexObject()中至少接受2个参数(给定1个)@gforcada:看起来您正在调用目录中的reindexObject。你应该得到这个对象:brain.getObject().reindexObject()谢谢你的提示。这个脚本也给了我一个权限错误。