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