Frage

Ihre Anwendung erfordert möglicherweise eine Suche basierend auf Datumsbereichen, zum Beispiel eine Suche nach allen Knoten, die in den letzten 3 Tagen erstellt wurden.

Wie ist es möglich, eine Datumsbereichsuche durchzuführen?

Antwort

CRX bietet die Möglichkeit, Datumsbereiche mithilfe der xs:dateTime-Zuordnung auszudrücken. Das folgende Beispiel zeigt, wie nach Knoten unter /content/mypage gesucht wird, die zwischen dem 24.04.2009 und 28.04.2009 erstellt wurden:

/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')] 

Die Lucene-Suchmaschine indiziert das tatsächliche Datum in Millisekunden. Aus diesem Grund ist die Zuordnung mit der Funktion xs:dateTime in der Datumsbereichsuche erforderlich. Die formatierte Zeichenfolge, die an diese Funktion übergeben wird, sollte in der Form erhalten werden, wie im folgenden Codeausschnitt gezeigt:

// 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();