java-如何在CQ5中对最近2个月内修改的内容进行全文搜索?
作者:互联网
我正在尝试使用内置的query builder api对CQ中的内容进行全文搜索.这很好,但是现在我希望将搜索结果限制为最近两个月内已修改的结果.我已经看过使用relative date time predicate.我正在使用的属性是:
QueryBuilder builder = sling.getService(QueryBuilder.class);
String fulltextSearchTerm = request.getParameter("q");
Map<String, String> map = new HashMap<String, String>();
map.put("relativedaterange", "@jcr:content/cq:lastModified");
map.put("relativedaterange.lowerBound", "-2M");
map.put("fulltext", fulltextSearchTerm);
map.put("path", "/content/test/");
map.put("type", "cq:Page");
map.put("orderby", "@jcr:content/cq:lastModified");
map.put("orderby.sort", "desc");
Query query = builder.createQuery(PredicateGroup.create(map), resourceResolver.adaptTo(Session.class));
这给了我搜索结果,但并不限于最近2个月内修改的结果.我是否正确使用这些属性,还是需要设置其他值?
解决方法:
relativedaterange键必须是relativedaterange.property.这在父类DateRangePredicateEvaluator的Java文档上显示.通过使用查询生成器调试器,它表明您不需要在值开头使用@符号.
因此最终它最终变成:
map.put("1_relativedaterange.property", "jcr:content/cq:lastModified");
map.put("1_relativedaterange.lowerBound", "-2M");
标签:aem,jcr,search,java 来源: https://codeday.me/bug/20191101/1980043.html