2012-01-13 62 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

相關問題