【问题标题】:cq5 orderby clause for whole result set整个结果集的 cq5 orderby 子句
【发布时间】:2025-11-22 00:20:03
【问题描述】:

我正在尝试对查询结果进行排序,它正在对每一页进行排序。如果我每页设置 10 个结果,则仅在此页面上排序。相反,我希望对所有结果集进行排序 这是我的谓词查询 map.put("1_orderby", "@jcr:content/pageTitle"); map.put("1_orderby.sort", "asc"); map.put("1_orderby.index", "true"); map.put("2_orderby", "@jcr:content/jcr:description"); map.put("2_orderby.sort", "asc"); map.put("2_orderby.index", "true");

【问题讨论】:

  • 您能否解释一下“每页上的排序”是什么意思。据我所知,它对整个结果集进行排序,但只显示第一个“x”结果,其中 x 是每页配置的结果数(默认为 10)。
  • 每一页都有从 A 到 z 的排序,假设我得到 30 个结果,每页有 10 个结果,在第一页上我从 A 到 z 排序,在第二页上它又从a 到 z 等等。

标签: sorting pagination aem


【解决方案1】:

order by 对整个结果集进行排序,而不仅仅是单个页面上的结果。 但是您无法获得所需结果的原因是,它对结果集进行了区分大小写的比较,因此 A 到 Z 的所有结果都首先出现,然后是 a 到 z。即,Batapple 之前,Zebracat 之前。

如果您想要执行不区分大小写的排序,那么您可能需要实现自定义谓词评估器并提供自定义比较器来对结果集进行排序(这可能很昂贵)。

【讨论】:

    最近更新 更多