Java 如何在CQ5中对过去2个月内修改的内容进行全文搜索?
我正在尝试使用内置的搜索引擎对CQ中的内容进行全文搜索。这很好,但现在我想把搜索结果限制在过去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&
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年)。有关更多详细信息,请参阅