У меня есть сценарий, когда у меня есть несколько тысяч опубликованных презентаций компонентов, которые классифицируются по определенной категории/ключевому слову, но у компонентов также есть поля пользовательских метаданных, относящиеся к определению верхнего n. который будет отображаться. По сути, мне нужно отфильтровать набор компонентов на основе ключевых слов, отсортировать их на основе пользовательских метаданных и выбрать только верхний N.
Я понимаю, как перечислять элементы и создавать базовые фильтры (из списка элементов фильтра в API), но мне нужно отфильтровать поле метаданных (например, три элемента с последними метаданными "priorityDate" ).
Из того, что я читаю, мне следовало бы взять все записи из поиска таксономии (используя TaxonomyKeywordCriteria), а затем вручную (SQL, выполненный против QueryRunner), чтобы получить все метаданные компонентов для фильтрации/сортировки.
Я, должно быть, что-то пропустил (не так уж хорошо, что есть вызов API 1/2, а затем на странице SQL script)..., и если бы запрос QueryRunner не был кэширован вместе с результатами таксономического запроса .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);