Plone 更新灵巧类型上的SearchableText索引

Plone 更新灵巧类型上的SearchableText索引,plone,dexterity,Plone,Dexterity,我试图通过将以下内容添加到Resource.py,更新我的灵巧类型(“资源”)上的SearchableText,以包括子项中的文件内容: @indexer(IResource) def subFiles(obj): searchable_text = obj.SearchableText() for item in obj.getFolderContents({'portal_type': 'File'}, full_object=True): searchab

我试图通过将以下内容添加到Resource.py,更新我的灵巧类型(“资源”)上的SearchableText,以包括子项中的文件内容:

@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的值没有发生任何更改。我也没有看到任何错误,所以我不确定问题出在哪里

嗯,我没有意识到,你在使用灵巧

您需要
灵巧文本索引器
行为:

在容器类型上启用此选项



使用dexteritytextindexer,您可以使用不同的方法对容器上的数据进行索引。检查
DexteryTextIndexer.idynamicDexterExtender

进行zcml下列出的添加会给出:配置错误:('Invalid value for','factory','ImportError:无法导入hccrems.types.indexer,在.indexer.mySearchableExtender中没有名为indexer的模块“)我的类型是'resource',那么应该是.resource.mysearchabletextender吗?这不会引发错误,但可搜索文本也不会改变。最后一段让我困惑。我怎么知道我的灵巧内容类型是否使用“定义工厂”?你不应该混合使用zcml和grok,用zcml或grok注册你的适配器,如果你同时使用这两种类型,会有点混乱。我使用zcml,因为它更容易读取/查找组件。是的,格罗克是蟒蛇,但不在普隆核心。是否有index.py,或者是否在type.py中定义索引?您可以粘贴所有相关代码吗?resource.py:resource.xml:pastie.org/8999579 hccrems.types.resource.xml:pastie.org/8999581 configure.zcml:pastie.org/8999582