我想重新索引一個特定類型的所有內容,只需一次。如何重新索引某種類型的所有內容?
我應該在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