Querybuilder を使用して、特定のタグでタグ付けされたページを検索しています。問題は、Querybuilder が、タグのすべての子タグとメイン タグを検索する xpath クエリを作成していることです。子タグではなく、親タグのみを検索したい。PredicateGroup を使用してすべてのタグを組み合わせる --
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:apparel および geometrixx-media:events タグを検索するように構成されている場合。次に、geometrixx-outdoors:apparel/coats および geometrixx-media:events/festivals でタグ付けされたページも返します。querybuilder を使用して、子タグではなく親タグのみを検索するにはどうすればよいですか?