我需要在“上个月”,“上周”,“过去3个月”,“去年”的基础上进行搜索。 我使用的代码如下。
map.put("1_relativedaterange.property", "date");
map.put("1_relativedaterange.lowerBound", "-1M");
分别放-7d,-3M,-1y。
这些适用于最后的日期范围。我希望根据这些标准,不应该搜索日期是下个月,下周还是明年。但它也在搜索,不应该。 有人请指出我在这里做错了吗?
感谢。
答案 0 :(得分:1)
当你指定lowerBound时,生成的Xpath查询是
/jcr:root/content/geometrixx/en//element(*, cq:Page)
[
(@jcr:content/cq:lastModified > xs:dateTime('2014-05-30T02:18:50.479Z'))
]
这意味着它将获取日期值大于上述值的所有项目。
您可以将upperBound值指定为0,表示现在。除了满足您的其他标准外,这将仅返回那些不超过当前日期的结果。
map.put("1_relativedaterange.property", "date");
map.put("1_relativedaterange.lowerBound", "-1M");
map.put("1_relativedaterange.upperBound", "0");
和生成的相应XPath查询是
/jcr:root/content/geometrixx/en//element(*, cq:Page)
[
(@jcr:content/cq:lastModified > xs:dateTime('2014-05-30T02:25:21.026Z')
and @jcr:content/cq:lastModified < xs:dateTime('2014-06-29T02:25:21.026Z'))
]
当您需要调试查询时,querydebug控制台(/libs/cq/search/content/querydebug.html
)可能会派上用场。
有关相对日期范围谓词评估程序的其他信息,请参阅the docs。