Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 如何在AEM或CQ中检查搜索结果页面中的属性?_Search_Aem - Fatal编程技术网

Search 如何在AEM或CQ中检查搜索结果页面中的属性?

Search 如何在AEM或CQ中检查搜索结果页面中的属性?,search,aem,Search,Aem,我正在使用查询生成器执行一个查询,得到的结果是页面。现在我想检查包含属性“branch”且值为“true”的页数,我不能将其包含在查询中,也不能将其作为谓词,因为我需要所有页面的结果,无论它是否包含分支属性true或false。但是对于另一个任务,我需要包含分支属性值true的页面数,并且由于性能原因,我无法再进行查询。是否有其他方法满足此要求,以便我可以获得结果中包含分支属性true的页数。实现这一点的最佳方法是什么,这样性能也不会受到影响。这听起来像是运行一个查询,然后根据属性对给定属性/谓

我正在使用查询生成器执行一个查询,得到的结果是页面。现在我想检查包含属性“branch”且值为“true”的页数,我不能将其包含在查询中,也不能将其作为谓词,因为我需要所有页面的结果,无论它是否包含分支属性true或false。但是对于另一个任务,我需要包含分支属性值true的页面数,并且由于性能原因,我无法再进行查询。是否有其他方法满足此要求,以便我可以获得结果中包含分支属性true的页数。实现这一点的最佳方法是什么,这样性能也不会受到影响。

这听起来像是运行一个查询,然后根据属性对给定属性/谓词的结果进行二分法。您还没有描述为什么只需要一个查询

由于我习惯于利用函数式编程风格(在Groovy和Java8中),我会将查询结果收集到一个资源集合中,然后使用一个谓词groupBy测试属性的值

PredicateGroup predicates = PredicateGroup.create(map)
Query query = queryBuilder.createQuery(predicates, session)
Map results = query.getResult().getResources()
    .collect { it as Resource }
    .groupBy { it.adaptTo(ValueMap).get("branch", false).equals() }

您好,我尝试使用这种方法,但在.getResources之后没有找到任何collect和groupBy方法。你能提供这种方法的详细描述吗?这两种方法都是帮助函数式编程的groovy“秘方”方法。如果您使用Java,您可以遍历迭代器并构建一个资源列表。然后,您可以使用filters/finds/which(取决于您使用的Java版本)将单个列表拆分为2,您应该知道如何根据谓词将列表拆分为2。