5

Dexterity1.1で開発されたカスタムコンテンツタイプを持つPlone4.1を実行しているサイトがあります。私のコンテンツ作成者は、[分類]タブを使用して基本的なPloneページにキーワードを追加できます。ユーザーは、キーワードの1つを使用して検索すると、これらのページを正常に見つけることができます。

私のコンテンツ作成者は、私が開発した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 に答える