编程语言
首页 > 编程语言> > java-如何在CQ5中对最近2个月内修改的内容进行全文搜索?

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