Query di esempio
Questi esempi sono forniti nella notazione di stile delle proprietà Java™. Per utilizzarli con l'API Java™, utilizzare un Java™ HashMap
come nell'esempio di API seguente.
Per il servlet JSON QueryBuilder
, ogni esempio include un collegamento all'installazione locale di CQ (nel percorso predefinito, http://localhost:4502
). Accedi all’istanza CQ prima di utilizzare questi collegamenti.
p.limit=-1
Restituzione di tutti i risultati
La seguente query restituisce dieci risultati (o, per essere precisi, un massimo di dieci), ma ti informa del numero di hit: che sono disponibili:
http://localhost:4502/bin/querybuilder.json?path=/content&1_property=sling:resourceType&1_property.value=foundation/components/text&1_property.operation=like&orderby=path
path=/content
1_property=sling:resourceType
1_property.value=foundation/components/text
1_property.operation=like
orderby=path
La stessa query (con il parametro p.limit=-1
) restituirà tutti i risultati (potrebbe essere un numero elevato a seconda dell'istanza):
http://localhost:4502/bin/querybuilder.json?path=/content&1_property=sling:resourceType&1_property.value=foundation/components/text&1_property.operation=like&p.limit=-1&orderby=path
path=/content
1_property=sling:resourceType
1_property.value=foundation/components/text
1_property.operation=like
p.limit=-1
orderby=path
Utilizzo di p.guessTotal per restituire i risultati
Lo scopo del parametro p.guessTotal
è restituire il numero appropriato di risultati che possono essere visualizzati combinando i valori p.offset e p.limit vitali minimi. L'utilizzo di questo parametro offre il vantaggio di migliorare le prestazioni con set di risultati di grandi dimensioni. Questo evita di calcolare il totale completo (ad esempio, chiamando result.getSize()) e di leggere l’intero set di risultati, ottimizzato fino al motore e all’indice di Oak. Questa può essere una differenza significativa quando ci sono 100 migliaia di risultati, sia nel tempo di esecuzione che nell'utilizzo della memoria.
Lo svantaggio del parametro è che gli utenti non vedono il totale esatto. Ma puoi impostare un numero minimo come p.guessTotal=1000 in modo che legga sempre fino a 1000, così da ottenere i totali esatti per set di risultati più piccoli, ma se è più di quello, puoi solo mostrare "e altro".
Aggiungi p.guessTotal=true
alla query per vedere come funziona:
http://localhost:4502/bin/querybuilder.json?path=/content&1_property=sling:resourceType&1_property.value=foundation/components/text&1_property.operation=like&p.guessTotal=true&orderby=path
path=/content
1_property=sling:resourceType
1_property.value=foundation/components/text
1_property.operation=like
p.guessTotal=true
orderby=path
La query restituisce il valore predefinito p.limit
di 10
risultati con un offset 0
:
"success": true,
"results": 10,
"total": 10,
"more": true,
"offset": 0,
A partire da AEM 6.0 SP2, è anche possibile utilizzare un valore numerico per contare fino a un numero personalizzato di risultati massimi. Utilizzare la stessa query di cui sopra, ma modificare il valore di p.guessTotal
in 50
:
http://localhost:4502/bin/querybuilder.json?path=/content&1_property=sling:resourceType&1_property.value=foundation/components/text&1_property.operation=like&p.guessTotal=50&orderby=path
Restituisce un numero con lo stesso limite predefinito di dieci risultati con un offset pari a 0, ma visualizza solo un massimo di 50 risultati:
"success": true,
"results": 10,
"total": 50,
"more": true,
"offset": 0,