我有一个运行 Plone 4.1 的站点,它具有使用 Dexterity 1.1 开发的自定义内容类型。我的内容作者可以使用“分类”选项卡将关键字添加到基本的 Plone 页面,如果用户使用其中一个关键字进行搜索,他们将成功找到这些页面。
我的内容作者还使用我开发的 Dexterity 自定义内容类型制作了页面。这是使用基于 Python 的文件系统架构定义的。如果用户在 Dexterity 内容类型的标题和描述中搜索术语,他们会在搜索结果中返回 Dexterity 页面。如果他们在关键字字段中使用查询词进行搜索,则不会得到任何结果。但是,在高级搜索表单下,如果他们突出显示标签列表中的适当标签,他们可以找到敏捷页面。
我已经使用 ZMI 中的 portal_catalog 工具检查了搜索索引的内容。似乎关键字被添加到 SearchableText 字段,用于基本内容类型,例如 Page,但对于我的基于灵巧的自定义内容类型,它们没有。
我是否需要编写额外的代码来将关键字字段的内容插入到 SearchableText 索引中?
最佳答案
假设您的 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")
关于plone - 如何将关键字添加到 SearchableText 以获取 Dexterity 内容类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8852132/