質問

アプリケーションが日付範囲に基づいて検索を必要とする場合があります。例:過去3日間に作成されたすべてのノードの検索

日付範囲内で検索を行うにはどうすればよいですか。

回答

CRX は xs:dateTime マッピングを使用して日付範囲を表現する可能性があります。2009/04/24 〜 2009/04/28に作成された/content/mypage の下のノードを検索する方法を以下に示します。

/jcr:root/content/mypage//*[@jcr:created >= xs:dateTime('2009-04-24T00:00:00.000+02:00') and @jcr:created < xs:dateTime('2009-04-28T00:00:00.000+02:00')] 

Lucene の検索エンジンはミリ秒単位で実際の日付にインデックスをつけるため、日付範囲の検索において xs:dateTime 機能を使用するマッピングが必要とされるのです。この機能に送られたフォーマット済みの文字列は、次に示されたのコードの抜粋にて取得できます。

// obtain javax.jcr.ValueFactory from JCR session ValueFactory factory = session.getValueFactory(); // obtain Calendar object Calendar cal = Calendar.getInstance(); // create javax.jcr.Value object of PropertyType.DATE Value dateValue = factory.createValue(cal); // finally, get string representation of the DATE-value which can be used in xs:dateTime function String dateString = dateValue.getString(); 

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー