3

組み込みのクエリビルダーAPIを使用して、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));

これにより検索結果が表示されますが、過去2か月間に変更されたものに限定されません。これらのプロパティを正しく使用していますか、それとも他の値を設定する必要がありますか?

4

2 に答える 2

4

キーはrelativedaterangeである必要がありますrelativedaterange.property。これは、親クラスDateRangePredicateEvaluatorの Java ドキュメントに示されています。@また、クエリ ビルダー デバッガーを使用すると、値の先頭に符号が必要ないことがわかります。

したがって、最終的には次のようになります。

  map.put("1_relativedaterange.property", "jcr:content/cq:lastModified");
  map.put("1_relativedaterange.lowerBound", "-2M");
于 2012-08-16T11:25:53.530 に答える
0

クエリをすばやくテストするには、 http://xxxx:4502/libs/cq/search/content/querydebug.htmlにアクセス して、述語グループに追加する必要があるパラメーターを入力します。これらを述語グループに追加すると、結果が得られるはずです。

path=/content/geometrixx
type=cq:Page
1_relativedaterange.property=jcr:content/cq:lastModified
1_relativedaterange.lowerBound=-2M

ここで、" relativedaterange" はこの述語評価子の名前です

ここで 2M は 2 か月を意味し、 1s 2m 3h 4d 5w 6M 7y (1 秒、2 分、3 時間、4 日、5 週間、6 か月、7 年)のような他のオプションが利用可能です。詳細については、 http://dev.day.com/docs/en/cq/5-4/javadoc/com/day/cq/search/eval/RelativeDateRangePredicateEvaluator.htmlを参照してください。

于 2014-06-28T11:00:46.307 に答える