Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在CQ5中对过去2个月内修改的内容进行全文搜索?_Java_Search_Jcr_Aem - Fatal编程技术网

Java 如何在CQ5中对过去2个月内修改的内容进行全文搜索?

Java 如何在CQ5中对过去2个月内修改的内容进行全文搜索?,java,search,jcr,aem,Java,Search,Jcr,Aem,我正在尝试使用内置的搜索引擎对CQ中的内容进行全文搜索。这很好,但现在我想把搜索结果限制在过去2个月内修改过的搜索结果。我已经研究了如何使用。我使用的属性是: QueryBuilder builder = sling.getService(QueryBuilder.class); String fulltextSearchTerm = request.getParameter("q"); Map<String, String> map = new HashMap&

我正在尝试使用内置的搜索引擎对CQ中的内容进行全文搜索。这很好,但现在我想把搜索结果限制在过去2个月内修改过的搜索结果。我已经研究了如何使用。我使用的属性是:

   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));
QueryBuilder builder=sling.getService(QueryBuilder.class);
字符串fulltextSearchTerm=request.getParameter(“q”);
Map Map=newhashmap();
map.put(“relativeDataRange”,“@jcr:content/cq:lastModified”);
地图放置(“相对三角形下边界”,“-2M”);
map.put(“全文”,全文搜索术语);
map.put(“路径”、“/content/test/”;
地图放置(“类型”,“cq:页面”);
map.put(“orderby”,“@jcr:content/cq:lastModified”);
map.put(“orderby.sort”、“desc”);
queryquery=builder.createQuery(PredicateGroup.create(map)、resourcesolver.adapto(Session.class));

这会给我搜索结果,但不限于在过去2个月内修改的结果。我是正确使用这些属性还是需要设置其他值?

需要将
relativedTerange
键设置为
relativedTerange.property
。这在父类的java文档中显示。通过使用querybuilder调试器,它显示在请求值时不需要
@
符号

因此,最终结果是:

  map.put("1_relativedaterange.property", "jcr:content/cq:lastModified");
  map.put("1_relativedaterange.lowerBound", "-2M");

为了快速测试您的查询,您可以访问 并输入需要添加到谓词组的参数。将这些添加到谓词组,您应该会得到结果

path=/content/geometrixx
type=cq:Page
1_relativedaterange.property=jcr:content/cq:lastModified
1_relativedaterange.lowerBound=-2M
此处“
relativeDataRange
”是此谓词求值器的名称

此处2M表示2个月,其他可用选项如1s 2M 3h 4d 5w 6M 7y(1秒、2分钟、3小时、4天、5周、6个月、7年)。有关更多详细信息,请参阅