特定のカテゴリ/キーワードで分類された数千のコンポーネント プレゼンテーションが公開されているシナリオがありますが、コンポーネントには上位nを定義するためのカスタム メタデータ フィールドもあります。それが表示されます。基本的に、キーワードに基づいて一連のコンポーネントをフィルタリングし、カスタム メタデータに基づいてそれらを並べ替え、上位 N 個のみを選択する必要があります。
アイテムを一覧表示し、(API のフィルター アイテムのリストから) 基本的なフィルターを作成する方法は理解していますが、メタデータ フィールド (たとえば、最新のメタデータ "priorityDate" を持つ 3 つのアイテム) でフィルター処理する必要があります。
私が読んでいるものから、タクソノミー検索からすべてのレコードを取得し (TaxonomyKeywordCriteria を使用)、手動で (QueryRunner に対して SQL を実行)、すべてのコンポーネントのメタデータを取得してフィルター処理/並べ替えを行うことが期待されます。
私は確かに何かを逃したに違いありません (1/2 API 呼び出しとページ内 SQL スクリプトがあるのは適切ではないと感じています)...そうでない場合は、Taxonomy Query.executeQuery() の結果と一緒に QueryRunner クエリがキャッシュされます。
コード例:
ItemTypeCriteria isComponent = new ItemTypeCriteria(16);
TaxonomyKeywordCriteria taxonomyKeywordCriteria = new TaxonomyKeywordCriteria(taxURI, taxKeywordURI, true);
Criteria[] allCriteria = {isComponent, isTDIPublication, isArticle, taxonomyKeywordCriteria};
AndCriteria andCriteria = CriteriaFactory.And(allCriteria);
Query query = new Query();
query.setCriteria(andCriteria);