Enviar búsqueda
Cargar
CQ5 QueryBuilder - .adaptTo(Berlin) 2011
•
12 recomendaciones
•
14,956 vistas
Alexander Klimetschek
Seguir
Tecnología
Empresariales
Denunciar
Compartir
Denunciar
Compartir
1 de 25
Descargar ahora
Descargar para leer sin conexión
Recomendados
HTL(Sightly) - All you need to know
HTL(Sightly) - All you need to know
Prabhdeep Singh
AEM Rich Text Editor (RTE) Deep Dive
AEM Rich Text Editor (RTE) Deep Dive
Hanish Bansal
slingmodels
slingmodels
Ankur Chauhan
Sightly - Part 2
Sightly - Part 2
Prabhdeep Singh
Understanding Sling Models in AEM
Understanding Sling Models in AEM
Accunity Software
Heap Dump Analysis - AEM: Real World Issues
Heap Dump Analysis - AEM: Real World Issues
Kanika Gera
Adobe Experience Manager Core Components
Adobe Experience Manager Core Components
Gabriel Walt
Osgi
Osgi
Heena Madan
Recomendados
HTL(Sightly) - All you need to know
HTL(Sightly) - All you need to know
Prabhdeep Singh
AEM Rich Text Editor (RTE) Deep Dive
AEM Rich Text Editor (RTE) Deep Dive
Hanish Bansal
slingmodels
slingmodels
Ankur Chauhan
Sightly - Part 2
Sightly - Part 2
Prabhdeep Singh
Understanding Sling Models in AEM
Understanding Sling Models in AEM
Accunity Software
Heap Dump Analysis - AEM: Real World Issues
Heap Dump Analysis - AEM: Real World Issues
Kanika Gera
Adobe Experience Manager Core Components
Adobe Experience Manager Core Components
Gabriel Walt
Osgi
Osgi
Heena Madan
Aem sling resolution
Aem sling resolution
Gaurav Tiwari
Adobe AEM - From Eventing to Job Processing
Adobe AEM - From Eventing to Job Processing
Carsten Ziegeler
Aem Training Tutorials for Beginners
Aem Training Tutorials for Beginners
Shrinivas AEM Online Training
Sling Models Using Sightly and JSP by Deepak Khetawat
Sling Models Using Sightly and JSP by Deepak Khetawat
AEM HUB
AEM Best Practices for Component Development
AEM Best Practices for Component Development
Gabriel Walt
Spring Boot and REST API
Spring Boot and REST API
07.pallav
AEM Sightly Deep Dive
AEM Sightly Deep Dive
Gabriel Walt
AEM - Client Libraries
AEM - Client Libraries
Prabhdeep Singh
AEM 6.1 User Interface Customization
AEM 6.1 User Interface Customization
Christian Meyer
Cours 1 introduction
Cours 1 introduction
Aymen Sellaouti
JCR, Sling or AEM? Which API should I use and when?
JCR, Sling or AEM? Which API should I use and when?
connectwebex
Spring boot jpa
Spring boot jpa
Hamid Ghorbani
Sling models by Justin Edelson
Sling models by Justin Edelson
AEM HUB
Asp.net caching
Asp.net caching
Mindfire Solutions
Quiery builder
Quiery builder
Devireddy Ravindrareddy
Introduction to Sightly
Introduction to Sightly
Ankit Gubrani
Mongodb
Mongodb
Apurva Vyas
How to make APEX print through Node.js
How to make APEX print through Node.js
Dimitri Gielis
Rest and Sling Resolution
Rest and Sling Resolution
DEEPAK KHETAWAT
Oracle reports
Oracle reports
Lacc Corona
Apache SOLR in AEM 6
Apache SOLR in AEM 6
Yash Mody
Basics of Solr and Solr Integration with AEM6
Basics of Solr and Solr Integration with AEM6
DEEPAK KHETAWAT
Más contenido relacionado
La actualidad más candente
Aem sling resolution
Aem sling resolution
Gaurav Tiwari
Adobe AEM - From Eventing to Job Processing
Adobe AEM - From Eventing to Job Processing
Carsten Ziegeler
Aem Training Tutorials for Beginners
Aem Training Tutorials for Beginners
Shrinivas AEM Online Training
Sling Models Using Sightly and JSP by Deepak Khetawat
Sling Models Using Sightly and JSP by Deepak Khetawat
AEM HUB
AEM Best Practices for Component Development
AEM Best Practices for Component Development
Gabriel Walt
Spring Boot and REST API
Spring Boot and REST API
07.pallav
AEM Sightly Deep Dive
AEM Sightly Deep Dive
Gabriel Walt
AEM - Client Libraries
AEM - Client Libraries
Prabhdeep Singh
AEM 6.1 User Interface Customization
AEM 6.1 User Interface Customization
Christian Meyer
Cours 1 introduction
Cours 1 introduction
Aymen Sellaouti
JCR, Sling or AEM? Which API should I use and when?
JCR, Sling or AEM? Which API should I use and when?
connectwebex
Spring boot jpa
Spring boot jpa
Hamid Ghorbani
Sling models by Justin Edelson
Sling models by Justin Edelson
AEM HUB
Asp.net caching
Asp.net caching
Mindfire Solutions
Quiery builder
Quiery builder
Devireddy Ravindrareddy
Introduction to Sightly
Introduction to Sightly
Ankit Gubrani
Mongodb
Mongodb
Apurva Vyas
How to make APEX print through Node.js
How to make APEX print through Node.js
Dimitri Gielis
Rest and Sling Resolution
Rest and Sling Resolution
DEEPAK KHETAWAT
Oracle reports
Oracle reports
Lacc Corona
La actualidad más candente
(20)
Aem sling resolution
Aem sling resolution
Adobe AEM - From Eventing to Job Processing
Adobe AEM - From Eventing to Job Processing
Aem Training Tutorials for Beginners
Aem Training Tutorials for Beginners
Sling Models Using Sightly and JSP by Deepak Khetawat
Sling Models Using Sightly and JSP by Deepak Khetawat
AEM Best Practices for Component Development
AEM Best Practices for Component Development
Spring Boot and REST API
Spring Boot and REST API
AEM Sightly Deep Dive
AEM Sightly Deep Dive
AEM - Client Libraries
AEM - Client Libraries
AEM 6.1 User Interface Customization
AEM 6.1 User Interface Customization
Cours 1 introduction
Cours 1 introduction
JCR, Sling or AEM? Which API should I use and when?
JCR, Sling or AEM? Which API should I use and when?
Spring boot jpa
Spring boot jpa
Sling models by Justin Edelson
Sling models by Justin Edelson
Asp.net caching
Asp.net caching
Quiery builder
Quiery builder
Introduction to Sightly
Introduction to Sightly
Mongodb
Mongodb
How to make APEX print through Node.js
How to make APEX print through Node.js
Rest and Sling Resolution
Rest and Sling Resolution
Oracle reports
Oracle reports
Destacado
Apache SOLR in AEM 6
Apache SOLR in AEM 6
Yash Mody
Basics of Solr and Solr Integration with AEM6
Basics of Solr and Solr Integration with AEM6
DEEPAK KHETAWAT
Implementing Site Search in CQ5 / AEM
Implementing Site Search in CQ5 / AEM
rtpaem
Virus and antivirus
Virus and antivirus
Harshal Joshi
AEM (CQ) Dispatcher Caching Webinar 2013
AEM (CQ) Dispatcher Caching Webinar 2013
Andrew Khoury
Query Analyser , SQL Server Groups, Transact –SQL
Query Analyser , SQL Server Groups, Transact –SQL
Komal Batra
Addmi 10-query builder
Addmi 10-query builder
odanyboy
Addmi 09.5-analysis ui-host-grouping
Addmi 09.5-analysis ui-host-grouping
odanyboy
Do you need an external search platform for Adobe Experience Manager?
Do you need an external search platform for Adobe Experience Manager?
therealgaston
Omnisearch in AEM 6.2 - Search All the Things
Omnisearch in AEM 6.2 - Search All the Things
Justin Edelson
Introduction to Sightly and Sling Models
Introduction to Sightly and Sling Models
Stefano Celentano
Aem dispatcher – tips & tricks
Aem dispatcher – tips & tricks
Ashokkumar T A
AEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser Caching
Andrew Khoury
Dell cod.scr--
Dell cod.scr--
professional2016
Kanban boards step by step
Kanban boards step by step
Giulio Roggero
Introduction of Cloud computing
Introduction of Cloud computing
Rkrishna Mishra
Slideshare ppt
Slideshare ppt
Mandy Suzanne
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & Tricks
SlideShare
Getting Started With SlideShare
Getting Started With SlideShare
SlideShare
Destacado
(19)
Apache SOLR in AEM 6
Apache SOLR in AEM 6
Basics of Solr and Solr Integration with AEM6
Basics of Solr and Solr Integration with AEM6
Implementing Site Search in CQ5 / AEM
Implementing Site Search in CQ5 / AEM
Virus and antivirus
Virus and antivirus
AEM (CQ) Dispatcher Caching Webinar 2013
AEM (CQ) Dispatcher Caching Webinar 2013
Query Analyser , SQL Server Groups, Transact –SQL
Query Analyser , SQL Server Groups, Transact –SQL
Addmi 10-query builder
Addmi 10-query builder
Addmi 09.5-analysis ui-host-grouping
Addmi 09.5-analysis ui-host-grouping
Do you need an external search platform for Adobe Experience Manager?
Do you need an external search platform for Adobe Experience Manager?
Omnisearch in AEM 6.2 - Search All the Things
Omnisearch in AEM 6.2 - Search All the Things
Introduction to Sightly and Sling Models
Introduction to Sightly and Sling Models
Aem dispatcher – tips & tricks
Aem dispatcher – tips & tricks
AEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser Caching
Dell cod.scr--
Dell cod.scr--
Kanban boards step by step
Kanban boards step by step
Introduction of Cloud computing
Introduction of Cloud computing
Slideshare ppt
Slideshare ppt
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & Tricks
Getting Started With SlideShare
Getting Started With SlideShare
Similar a CQ5 QueryBuilder - .adaptTo(Berlin) 2011
GlassFish REST Administration Backend
GlassFish REST Administration Backend
Arun Gupta
GlassFish REST Administration Backend at JavaOne India 2012
GlassFish REST Administration Backend at JavaOne India 2012
Arun Gupta
Writing Plugged-in Java EE Apps: Jason Lee
Writing Plugged-in Java EE Apps: Jason Lee
jaxconf
UEMB200: Next Generation of Endpoint Management Architecture and Discovery Se...
UEMB200: Next Generation of Endpoint Management Architecture and Discovery Se...
Ivanti
BP-6 Repository Customization Best Practices
BP-6 Repository Customization Best Practices
Alfresco Software
Java EE 6 workshop at Dallas Tech Fest 2011
Java EE 6 workshop at Dallas Tech Fest 2011
Arun Gupta
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
mfrancis
Cloud Best Practices
Cloud Best Practices
Eric Bottard
Play framework
Play framework
Andrew Skiba
Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6
Arun Gupta
SXSW 2012 JavaScript MythBusters
SXSW 2012 JavaScript MythBusters
Elena-Oana Tabaranu
Gradle Introduction
Gradle Introduction
Dmitry Buzdin
Gradleintroduction 111010130329-phpapp01
Gradleintroduction 111010130329-phpapp01
Tino Isnich
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC
Alive Kuo
HTTP Caching and PHP
HTTP Caching and PHP
David de Boer
Gradle talk, Javarsovia 2010
Gradle talk, Javarsovia 2010
Tomek Kaczanowski
Plugin-based software design with Ruby and RubyGems
Plugin-based software design with Ruby and RubyGems
Sadayuki Furuhashi
Google AppEngine (GAE/J) - Introduction and Overview from a Java Guy
Google AppEngine (GAE/J) - Introduction and Overview from a Java Guy
Max Völkel
12 core technologies you should learn, love, and hate to be a 'real' technocrat
12 core technologies you should learn, love, and hate to be a 'real' technocrat
Jonathan Linowes
Greach 2019 - Creating Micronaut Configurations
Greach 2019 - Creating Micronaut Configurations
Iván López Martín
Similar a CQ5 QueryBuilder - .adaptTo(Berlin) 2011
(20)
GlassFish REST Administration Backend
GlassFish REST Administration Backend
GlassFish REST Administration Backend at JavaOne India 2012
GlassFish REST Administration Backend at JavaOne India 2012
Writing Plugged-in Java EE Apps: Jason Lee
Writing Plugged-in Java EE Apps: Jason Lee
UEMB200: Next Generation of Endpoint Management Architecture and Discovery Se...
UEMB200: Next Generation of Endpoint Management Architecture and Discovery Se...
BP-6 Repository Customization Best Practices
BP-6 Repository Customization Best Practices
Java EE 6 workshop at Dallas Tech Fest 2011
Java EE 6 workshop at Dallas Tech Fest 2011
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
Cloud Best Practices
Cloud Best Practices
Play framework
Play framework
Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6
SXSW 2012 JavaScript MythBusters
SXSW 2012 JavaScript MythBusters
Gradle Introduction
Gradle Introduction
Gradleintroduction 111010130329-phpapp01
Gradleintroduction 111010130329-phpapp01
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC
HTTP Caching and PHP
HTTP Caching and PHP
Gradle talk, Javarsovia 2010
Gradle talk, Javarsovia 2010
Plugin-based software design with Ruby and RubyGems
Plugin-based software design with Ruby and RubyGems
Google AppEngine (GAE/J) - Introduction and Overview from a Java Guy
Google AppEngine (GAE/J) - Introduction and Overview from a Java Guy
12 core technologies you should learn, love, and hate to be a 'real' technocrat
12 core technologies you should learn, love, and hate to be a 'real' technocrat
Greach 2019 - Creating Micronaut Configurations
Greach 2019 - Creating Micronaut Configurations
Último
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
Hervé Boutemy
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
Lonnie McRorey
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
hariprasad279825
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
LoriGlavin3
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
HarshalMandlekar2
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
Nathaniel Shimoni
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
Fwdays
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
Lars Bell
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
Rick Flair
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
BkGupta21
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
Lorenzo Miniero
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
BookNet Canada
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
UiPathCommunity
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
Fwdays
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
gvaughan
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Mark Simos
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
DianaGray10
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
Curtis Poe
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
Sergiu Bodiu
Último
(20)
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
CQ5 QueryBuilder - .adaptTo(Berlin) 2011
1.
.adaptTo(Berlin)
CQ5 QueryBuilder Alexander Klimetschek | Senior Developer, Day | @alexkli © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 1
2.
Agenda
(1) What it looks like & Use Cases (2) Philosophy & Consequences (3) Debugging (4) Queries & Samples (5) Running Queries (6) Facets (7) Extending © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 2
3.
QueryBuilder - What
it looks like § Search for jar files, and order them newest first: type=nt:file nodename=*.jar orderby=@jcr:content/jcr:lastModified orderby.sort=desc § As URL: http://localhost:4502/bin/querybuilder.json? type=nt:file&nodename=*.jar& orderby=@jcr:content/jcr:lastModified&orderby.sort=desc § Result as JSON: { success: true, results: 10, total: 155, offset: 0, hits: [{ path: "/apps/cloudmgr/install/cq-change-admin-pwd-1.0.1-SNAPSHOT.jar" excerpt: "application/java-archive" name: "cq-change-admin-pwd-1.0.1-SNAPSHOT.jar" .... },{...} ] } © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 3 QueryBuilder - AdaptTo(Berlin) 2011
4.
Use Cases!? §
Advanced query forms § DAM Asset share § form-based elements § „querybuilder UI components“ § author can add/remove them individually § normal form POST or via AJAX § Content Finder would be cool.... § Search component in CQ (for facets) § Quick AJAX json query from the client side © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 4 QueryBuilder - AdaptTo(Berlin) 2011
5.
Philosophy §
QueryBuilder is... § an API to build queries for a query engine (JCR XPath underneath) § especially via URL query parameters (GET & POSTs) § compatible with HTML forms § allowing to add/remove conditions („predicates“) individually § allowing copy/paste of queries § easily extensible § providing some goodies (e.g. facets) § QueryBuilder is not... § a query engine itself § does not have its own search index § or even cache © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 5 QueryBuilder - AdaptTo(Berlin) 2011
6.
Consequences: URL parameters §
Set of key = value pairs d er Java: hash maps, property files ry buil § ue b in/q :4 502/ .jar& odified al host name=* :lastM :/ /loc e&node nt/jcr § Keep it short for GET requests http nt:fil :conte = type by=@jcr r § as fallback, use POST to transport „long“ queries orde § but short queries are more readable => Avoid duplication in parameter names => Allow to write custom „shortcut“ predicates (extensible) § Order must be encoded in parameter names § HTML form GETs/POSTs are required to be in order § but the Java servlet spec gives you a hash map.... => Conflicts with short names above => Solution is not very intuitive the first time, but it works © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 6 QueryBuilder - AdaptTo(Berlin) 2011
7.
More Consequences §
HTML checkbox behaviour § checked: field=on § not checked: <not sent with the request> § Predicates are separate entities § though grouping exists § Copy/paste § obvious one, but XPath for JCR does not respect it (limit & offset) § nothing that can only be done through an API call § global settings, given as p.offset=10 § Extensible § predicates evaluators as OSGi components § SCR registration to associate with predicate name © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 7 QueryBuilder - AdaptTo(Berlin) 2011
8.
QueryBuilder Debugger §
http://localhost:4502/libs/cq/search/content/querydebug.html © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 8 QueryBuilder - AdaptTo(Berlin) 2011
9.
Debug logs §
For all query builder executed queries § Set „com.day.cq.search“ to INFO or DEBUG or TRACE level § Standard INFO level (shortened): 15.09.2011 19:17:48.566 *INFO* ...QueryImpl executing query (URL): nodename=*.jar&type=nt%3afile 15.09.2011 19:17:48.566 *INFO* ...QueryImpl executing query (predicate tree): ROOT=group: [ {nodename=nodename: nodename=*.jar} {type=type: type=nt:file} ] 15.09.2011 19:17:48.567 *INFO* ...QueryImpl xpath query: //element(*, nt:file) 15.09.2011 19:17:48.569 *INFO* ...QueryImpl xpath query took 3 ms 15.09.2011 19:17:48.569 *INFO* ...QueryImpl filtering predicates: {nodename=nodename: nodename=*.jar} 15.09.2011 19:17:48.752 *INFO* ...QueryImpl >> xpath query returned 5098 results (counted) 15.09.2011 19:17:48.753 *INFO* ...QueryImpl filtering took 184 ms 15.09.2011 19:17:48.753 *INFO* ...QueryImpl >> after filtering there are 155 results 15.09.2011 19:17:48.753 *INFO* ...QueryImpl entire query execution took 187 ms § For production, set it to WARN or ERROR ;-) © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 9 QueryBuilder - AdaptTo(Berlin) 2011
10.
Anatomy of a
query Predicate name and type and parameter Predicates type=cq:Page property=jcr:content/cq:template { property.value=/apps/geometrixx/templates/homepage Parameter Value Predicate‘s type is mirrored as parameter internally: type.type=cq:Page property.property=jcr:content/cq:template property.value=/apps/geometrixx/templates/homepage © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 10 QueryBuilder - AdaptTo(Berlin) 2011
11.
Predicate resolution &
execution § Internally, a predicate evaluator is resolved § Based on the type § OSGi component (using factories) § Handles: § mapping to xpath (required) § filtering of results § custom ordering mechanism § facet extraction © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 11 QueryBuilder - AdaptTo(Berlin) 2011
12.
Multiple predicates of
the same type § Fixed numbering scheme § Name = <nr>_<type> § Allows to define an order § work around hash maps type=cq:Page 1_property=jcr:content/cq:template 1_property.value=/apps/geometrixx/templates/homepage 2_property=jcr:content/jcr:title 2_property.value=English § No custom names possible! © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 12 QueryBuilder - AdaptTo(Berlin) 2011
13.
Standard predicates
§ path § tagid & tag § supports multiple paths § language § but beware: can be slow § page languages § property § event § JCR property § calendar § different operations § example for shortening § type § node type § fulltext § full text search § range § daterange § similar § rep:similar © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 13 QueryBuilder - AdaptTo(Berlin) 2011
14.
Ordering §
Use (special) orderby predicate § sort ascending by default, use orderby.desc=true for descending § (1) Order by JCR properties § orderby=@cq:tags § orderby=@jcr:content/cq:tags § (2) Reference predicate by name § orderby=1_property § predicate evaluator must provide ordering § simply a list of properties (=> used in xpath query) § or a custom Comparator (=> run after filtering) § Multiple orderings § 1_orderby=@cq:tags § 2_orderby=@cq:lastModified § 3_orderby=nodename © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 14 QueryBuilder - AdaptTo(Berlin) 2011
15.
Grouping of predicates §
Special group predicate fulltext=Management group.p.or=true group.1_path=/content/geometrixx/en group.2_path=/content/dam/geometrixx § Like brackets: § (fulltext AND (path=... OR path=...)) § Nested: fulltext=Management group.p.or=true group.1_group.path=/content/geometrixx/en group.1_group.type=cq:Page a re ! w ! Be w e s l o group.2_group.path=/content/dam/geometrixx C a n b group.2_group.type=dam:Asset § (ft AND ( (path= AND type=) OR (path= AND type=) )) © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 15 QueryBuilder - AdaptTo(Berlin) 2011
16.
Running queries §
Default servlets § JSON: http://localhost:4502/bin/querybuilder.json § Atom feed: http://localhost:4502/bin/querybuilder.feed § iCalendar: http://localhost:4502/bin/querybuilder.ics § Java API PredicateGroup root = PredicateGroup.create(request.getParameterMap()); Query query = queryBuilder.createQuery(root, session); SearchResult result = query.getResult(); for (Hit hit : result.getHits()) { String path = hit.getPath(); // .... } © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 16 QueryBuilder - AdaptTo(Berlin) 2011
17.
JSON servlet §
JSON: http://localhost:4502/bin/querybuilder.json § p.hits selects how the hits are written § simple § path, lastmodified, etc. only § full § full sling json rendering of node § by default entire subtree § p.nodedepth=1 as in sling‘s json (0 = infinity) § selective § p.properties is an array of properties to write § just the node itself © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 17 QueryBuilder - AdaptTo(Berlin) 2011
18.
Java API §
From HTTP request: Session session = request.getResourceResolver().adaptTo(Session.class); PredicateGroup root = PredicateGroup.create(request.getParameterMap()); Query query = queryBuilder.createQuery(root, session); § From hash map: Map map = new HashMap(); map.put("path", "/content"); map.put("type", "nt:file"); Query query = builder.createQuery(PredicateGroup.create(map), session); § From predicates: PredicateGroup group = new PredicateGroup(); group.add(new Predicate("mypath", "path").set("path", "/content")); group.add(new Predicate("mytype", "type").set("type", "nt:file")); Query query = builder.createQuery(group, session); © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 18 QueryBuilder - AdaptTo(Berlin) 2011
19.
Persisted Queries §
Store query § in Java properties file format § in the repository § as file node § or as string property Query query = .... // create query normally // store query as file queryBuilder.storeQuery(query, „/content/myquery“, true, session); // load it again Query query = queryBuilder.loadQuery(„/content/myquery“, session); § List component allows this © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 19 QueryBuilder - AdaptTo(Berlin) 2011
20.
Facets §
Extract set of possible values found in current result § Options for a more specific query § Facet = set of buckets § Facet = tag § Buckets = product, business, marketing § Buckets can also be custom ranges § Facet = daterange § Buckets = yesterday, last week, last year... Map<String, Facet> facets = result.getFacets(); for (String key : facets.keySet()) { Facet facet = facets.get(key); if (facet.getContainsHit()) { writer.key(key).array(); for (Bucket bucket : facet.getBuckets()) { } } } © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 20 QueryBuilder - AdaptTo(Berlin) 2011
21.
Run new query
based on facet/bucket § Simple as that: String bucketURL = query.refine(bucket).getPredicates().toURL(); § Facets are extracted for all predictes in the current query § keep them „empty“ if they should not search type=cq:Page 1_property=jcr:content/cq:template 1_property.value=/apps/geometrixx/templates/homepage 2_property=jcr:content/jcr:title No value for 2_property © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 21 QueryBuilder - AdaptTo(Berlin) 2011
22.
Extending: Writing custom
predicate evaluators /** @scr.component metatype="no" * factory="com.day.cq.search.eval.PredicateEvaluator/event" */ public class EventPredicateEvaluator extends AbstractPredicateEvaluator { public String getXPathExpression(Predicate p, EvaluationContext context) { final String from = p.get(„from“); final String to = p.get(„to“); // build xpath snippet return „@start = ,...‘ and @end = ,...‘“; } public String[] getOrderByProperties(Predicate predicate, EvaluationContext ctx) { return new String[] { „start“ }; } public boolean canFilter(Predicate predicate, EvaluationContext context) { return false; } public boolean canXpath(Predicate predicate, EvaluationContext context) { return true; } } © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 22 QueryBuilder - AdaptTo(Berlin) 2011
23.
Filtering & Facet
extraction § In addition or alternatively to xpath, a predicate can filter § goes over nodes in result and says include or drop public boolean includes(Predicate p, Row row, EvaluationContext context) § Facet extraction is „lazy“ § Evaluator returns a FacetExtractor § Base implementations available § PropertyFacetExtractor § DistinctValuesFacetExtractor § PredefinedBucketsFacetExtractor © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 23 QueryBuilder - AdaptTo(Berlin) 2011
24.
Documentation §
Basic docs plus some examples: § http://wem.help.adobe.com/enterprise/en_US/10-0/wem/dam/ customizing_and_extendingcq5dam/query_builder.html § Javadocs § http://wem.help.adobe.com/enterprise/en_US/10-0/wem/javadoc/com/day/cq/search/ package-summary.html © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 24 QueryBuilder - AdaptTo(Berlin) 2011
25.
© 2011 Adobe
Systems Incorporated. All Rights Reserved. Adobe Confidential.
Notas del editor
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Descargar ahora