Plone 如何向SearchableText中添加关键字以获得灵活的内容类型?

Plone 如何向SearchableText中添加关键字以获得灵活的内容类型?,plone,dexterity,Plone,Dexterity,我有一个运行Plone 4.1的网站,它有一个使用Dextrity 1.1开发的自定义内容类型。“我的内容”作者可以使用“分类”选项卡将关键字添加到基本Plone页面,如果用户使用其中一个关键字进行搜索,则可以成功找到这些页面 我的内容作者还使用我开发的灵活定制内容类型生成了页面。这是使用基于Python的文件系统模式定义的。如果用户在敏捷内容类型的标题和描述中搜索术语,他们会在搜索结果中返回敏捷页面。如果他们在关键字字段中使用查询词进行搜索,则不会得到任何结果。但是,在高级搜索表单下,如果他们

我有一个运行Plone 4.1的网站,它有一个使用Dextrity 1.1开发的自定义内容类型。“我的内容”作者可以使用“分类”选项卡将关键字添加到基本Plone页面,如果用户使用其中一个关键字进行搜索,则可以成功找到这些页面

我的内容作者还使用我开发的灵活定制内容类型生成了页面。这是使用基于Python的文件系统模式定义的。如果用户在敏捷内容类型的标题和描述中搜索术语,他们会在搜索结果中返回敏捷页面。如果他们在关键字字段中使用查询词进行搜索,则不会得到任何结果。但是,在高级搜索表单下,如果他们突出显示标签列表中的相应标签,则可以找到“灵活性”页面

我已经使用ZMI中的门户目录工具检查了搜索索引的内容。对于基本内容类型(如页面),似乎正在将关键字添加到SearchableText字段中,但对于基于灵活度的自定义内容类型,则没有添加关键字


我是否需要编写额外的代码来将关键字字段的内容插入SearchableText索引?

假设您的Dextrity内容类型实现了IFoo,并且模式中定义的关键字属性是一个字符串列表

您可以这样定义索引器:

from five import grok
from plone.indexer.decorator import indexer
from my.dexteritycontent.foo import IFoo

@indexer(IFoo)
def searchableIndexer(context):
    keywords = " ".join(context.keywords)
    return "%s %s %s" % (context.title, context.description, keywords)

grok.global_adapter(searchableIndexer, name="SearchableText")

伟大的成功了!我不得不做一个小小的改动,关键字在我的内容类型中显示为context.subject。谢谢你的帮助。:)是在ifoo.py中定义的还是在其他地方定义的?对于记录,希望此链接也有帮助: