QueryBuilder API в CQ5 — запрос на основе диапазона дат

Мне нужно искать на основе «Последний месяц», «Последняя неделя», «Последние 3 месяца», «Последний год». Я использую код, как показано ниже.

map.put("1_relativedaterange.property", "date");
map.put("1_relativedaterange.lowerBound", "-1M");

Соответственно поставив -7д, -3М, -1у.

Они работают для последних диапазонов дат. Я ожидаю, что с этими критериями он не должен искать даты в следующем месяце, на следующей неделе или в следующем году. Но ищет и того, чего не должно. Кто-нибудь, пожалуйста, укажите, что я делаю неправильно здесь?

Спасибо.


person Parvathy    schedule 28.06.2014    source источник


Ответы (1)


Когда вы указываете нижнюю границу, результирующий запрос 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')) 
]

Консоль отладки запросов (/libs/cq/search/content/querydebug.html) может пригодиться, когда вам нужно отладить ваши запросы.

Дополнительные сведения об оценщике предикатов относительного диапазона дат см. на странице документы.

person rakhi4110    schedule 29.06.2014
comment
@MOneAtt Спасибо. Обновил ссылку. - person rakhi4110; 30.09.2016