5

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

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

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

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

4

1 回答 1

6

假设您的 Dexterity 内容类型实现了 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")
于 2012-01-13T15:45:01.893 回答