如何为SexchableText添加Dexterity内容类型的关键字?

时间:2012-01-13 14:34:39

标签: plone dexterity

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

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

我使用ZMI中的portal_catalog工具检查了搜索索引的内容。似乎关键字被添加到SearchableText字段中以获取基本内容类型(例如Page),但对于基于Dexterity的自定义内容类型,它们不是。

我是否需要编写其他代码才能将关键字字段的内容插入SearchableText索引?

1 个答案:

答案 0 :(得分:6)

假设你的Dexterity内容类型实现了IFoo,你的模式中定义的keywords属性是一个字符串列表。

您可以通过以下方式定义索引器:

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")