我正在尝试在我的敏捷类型(“资源”)上更新SearchableText,以包含子项目中的文件内容,方法是将其添加到resource.py:
@indexer(IResource)
def subFiles(obj):
searchable_text = obj.SearchableText()
for item in obj.getFolderContents({'portal_type': 'File'}, full_object=True):
searchable_text += item.SearchableText()
return searchable_text
grok.global_adapter(subFiles, name="SearchableText")
我知道我需要一个事件来更新它,但相信我应该能够通过从ZMI手动“清除和重建”来查看修改索引,但是对于此内容的对象,SearchableText的值不会发生任何变化类型。我也没有看到任何错误,所以我不确定问题出在哪里。
答案 0 :(得分:2)
好吧,我没有认出here,你正在使用灵巧。
您需要dexteritytextindexer
行为:
https://github.com/collective/collective.dexteritytextindexer
在容器类型上启用此功能。
<property name="behaviors">
<element value="collective.dexteritytextindexer.behavior.IDexterityTextIndexer" />
</property>
使用dexteritytextindexer,您可以采用不同的方法来索引容器上的数据。检查dexteritytextindexer.IDynamicTextIndexExtender
。