2012-01-13 29 views
4

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

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

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

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

回答

5

假设您的敏捷内容类型实现了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") 
+1

大。这是有效的!我不得不稍作修改,关键字在我的内容类型中显示为context.subject。谢谢你的帮助。 :) – 2012-01-16 09:54:05

+0

是在ifoo.py或其他地方定义的? – 2014-02-09 21:25:41

相关问题