我有一个场景,我发布了数千个按特定类别/关键字分类的组件演示文稿,但这些组件还具有与定义前n相关的自定义元数据字段。将显示。本质上,我需要根据关键字过滤一组组件,根据自定义元数据对它们进行排序,并且只选择前 N 个。
我了解如何列出项目并创建基本过滤器(来自 API 中的过滤器项目列表),但我需要过滤元数据字段(例如,具有最新元数据“priorityDate”的三个项目)。
从我正在阅读的内容来看,我应该从分类搜索中获取所有记录(使用 TaxonomyKeywordCriteria),然后手动(对 QueryRunner 执行 SQL)检索所有组件的元数据以进行过滤/排序。
我肯定错过了一些东西(感觉不对,有 1/2 API 调用,然后在页面 SQL 脚本中)......如果没有,QueryRunner 查询是否会与分类 Query.executeQuery() 的结果一起缓存
示例代码:
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);