我正在使用Querybuilder搜索使用特定標記標記的頁面。問題是,Querybuilder正在創建一個xpath查詢,該查詢沿着主標籤搜索標籤的所有子標籤。我希望它僅搜索父標記而不搜索子標記。服裝和geometrixx媒體:使用PredicateGroup如果組件配置爲搜索geometrixx,戶外所有tags--Querybuilder僅搜索單個標記
map.put("path", searchPath);
map.put("type", "cq:Page");
map.put("orderby", "@jcr:content/cq:lastModified");
PredicateGroup tagsPredicateGroup = new PredicateGroup();
PredicateGroup searchGroup = PredicateGroup.create(map);
PredicateGroup tagsPredicateGroup = new PredicateGroup();
tagsPredicateGroup.setAllRequired(false);
if (tagsArray != null && tagsArray.length > 0) {
for (Tag tag : tagsArray) {
tagsPredicateGroup.add(createSingleTagPredicate(tag));
}
}
searchGroup.add(tagsPredicateGroup);
Query query = queryBuilder.createQuery(searchGroup, session);
query.setHitsPerPage(10);
query.setStart(0);
private PredicateGroup createSingleTagPredicate(Tag tag) {
Map<String, String> tagMap = new HashMap<String, String>();
tagMap.put("tagid.property", "jcr:content/cq:tags");
tagMap.put("tagid", tag.getTagID());
return PredicateGroup.create(tagMap);
}
結合事件標籤;那麼它還會返回那些標記爲geometrixx-outdoors的頁面:服裝/大衣和geometrixx-media:活動/節日。我如何才能使用querybuilder僅搜索父標記而不搜索子標記?
我會考慮使用TagManager對象https://docs.adobe.com/docs/en/cq/5-6-1/javadoc/com/day/cq/tagging/TagManager.html find(java。 lang.String,java.lang.String [])獲取與特定路徑下的tagID相匹配的所有頁面 – bfitzpatrick