Domanda

La tua applicazione potrebbe richiedere una ricerca basata su intervalli di date, ad esempio, la ricerca di tutti i nodi che sono stati creati negli ultimi 3 giorni.

Come è possibile effettuare una ricerca nell’intervallo di date?

Risposta

CRX offre la possibilità di indicare intervalli di date utilizzando la mappatura xs:dateTime. L’esempio seguente mostra come cercare i nodi sotto /content/mypage che sono stati creati tra il 24/04/2009 e il 28/04/2009:

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

Il motore di ricerca Lucene indicizza la data effettiva in millisecondi, per questo motivo è richiesta la mappatura con la funzione xs:dateTime nella ricerca dell’intervallo di date. La stringa formattata passata a questa funzione dovrebbe essere ottenuta come mostrato nell’estratto di codice seguente:

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

Questo prodotto è concesso in licenza in base alla licenza di Attribuzione-Non commerciale-Condividi allo stesso modo 3.0 Unported di Creative Commons.  I post su Twitter™ e Facebook non sono coperti dai termini di Creative Commons.

Note legali   |   Informativa sulla privacy online