SlideShare a Scribd company logo
1 of 34
#evolverocks
SEARCH ALL THE THINGS:
OMNISEARCH IN AEM 6.2
JUSTIN EDELSON & OSCAR BOLAÑOS
August 31st, 2016
#evolverocks
#evolverocks 3
ABOUT US
Twitter
twitter.com/justinedelson
Linkledin
linkedin.com/in/justinedelson
Justin Edelson
Team Lead
Linkledin
linkedin.com/in/orbolanos
Oscar Bolaños
Project Lead
#evolverocks4
What is Omnisearch and How do I use it?
Extensibility
Writing a new OmniSearchHandler
UI Implementation
AGENDA
#evolverocks5
Unified Author-Side Content Searching
Consistent User Experience
Consistent Access
Console/Tool Access
WHAT IS OMNISEARCH?
#evolverocks6
1.Open
Slash Key
Search Icon
2.Start Typing
HOW TO USE OMNISEARCH?
#evolverocks7
CROSS-CONTENT TYPE SEARCHES
#evolverocks8
LOCATIONS
#evolverocks9
#evolverocks10
PREDICATES
#evolverocks11
GO TO…
#evolverocks 12
CONSOLE FILTERS
#evolverocks
DEMO
13
#evolverocks 14
LET’S SEE SOME CODE
#evolverocks15
Locations Map 1:1 to implementations of OmniSearchHandler
ADDING A LOCATION
getID() : String
getModuleConf g() : Resource
getResults() : SearchResults
getSuggestionQuery() : Query
getSpellCheckQuery() : Query
getPredicateSuggestions() : List<PredicateSuggestion>
<<interface>>
OmniSearchHandler
#evolverocks16
getID()
Return unique identifier for the search handler
getModuleConfig()
Return a Resource with the configuration of the handler
CONFIGURATION METHODS
#evolverocks17
@Component
@Service
public final class ContentFragmentOmniSearchHandler
implements OmniSearchHandler {
@Override
public Resource getModuleConfig(ResourceResolver resourceResolver) {
return resourceResolver.getResource(
"/apps/aem-omnisearch-content-fragments/content/metadata");
}
@Override
public String getID() {
return "custom-cfm";
}
}
START OF IMPLEMENTATION
#evolverocks18
getResults()
Return the actual search results
getSuggestions()
Return a Query to get the list of suggestions
getSpellCheck()
Return a Query to get the list of spell check suggestions
getPredicateSuggestions()
Get a list of predicate suggestions based on a search term
SEARCH METHODS
#evolverocks 19
Requires configuration of Lucene indexes
e.g. /oak:index/damAssetLucene
Properties can have these two flags:
useInSuggest
useInSpellcheck
Suggestion list is updated every 10 minutes by default, but configurable.
Path restriction support is limited
Property restriction support is non-existing
OAK SUGGESTIONS & SPELL CHECK
A BRIEF DIGRESSION
#evolverocks20
@Override
public SearchResult getResults(ResourceResolver resourceResolver,
Map<String, Object> predicateParameters, long limit, long offset) {
Map<String, String> predicates = new HashMap<String, String>();
predicates.put("path", DamConstants.MOUNTPOINT_ASSETS);
predicates.put("type", DamConstants.NT_DAM_ASSET);
predicates.put("property", "jcr:content/contentFragment");
predicates.put("property.value", "true");
if (predicateParameters.containsKey("fulltext")) {
String[] ft = (String[]) predicateParameters.get("fulltext");
predicates.put("fulltext", ft[0]);
}
PredicateGroup predicatesGroup = PredicateGroup.create(predicates);
com.day.cq.search.Query query = queryBuilder.createQuery(predicatesGroup,
resourceResolver.adaptTo(Session.class));
if (limit != 0) {
query.setHitsPerPage(limit);
}
if(offset != 0) {
query.setStart(offset);
}
SearchResult queryResult = query.getResult();
return queryResult;
}
SEARCH METHOD
THE NAÏVE VERSION
#evolverocks 21
boolean addedPath = false;
boolean addedType = false;
for (Map.Entry<String, Object> param : predicateParameters.entrySet()) {
if (param.getValue() instanceof String[]) {
String[] values = (String[]) param.getValue();
if (values.length == 1) {
if ((param.getKey().equals("path") || param.getKey().endsWith("_path"))
&& values[0].length() > 0) {
addedPath = true;
}
if (param.getKey().equals("type") || param.getKey().endsWith("_type")) {
addedType = true;
}
predicates.put(param.getKey(), values[0]);
}
}
}
if (!addedPath) {
predicates.put("path", DamConstants.MOUNTPOINT_ASSETS);
}
if (!addedType) {
predicates.put("type", DamConstants.NT_DAM_ASSET);
}
predicates.put("999_property", "jcr:content/contentFragment");
predicates.put("999_property.value", "true");
SEARCH METHOD
THE REAL VERSION
#evolverocks 22
public Query getSuggestionQuery(ResourceResolver resourceResolver,
String term) {
String queryStr = "SELECT [rep:suggest()] FROM [dam:Asset] as s " +
" WHERE SUGGEST($term) AND ISDESCENDANTNODE([/content/dam])";
try {
Query query = createQuery(resourceResolver, term, queryStr);
return query;
} catch (RepositoryException e) {
log.error("Unable to create suggestions query", e);
return null;
}
}
SUGGESTIONS METHOD
#evolverocks 23
@Override
public List<PredicateSuggestion> getPredicateSuggestions(
ResourceResolver resourceResolver, I18n i18n, String term) {
List<PredicateSuggestion> matchedPredicates =
new ArrayList<PredicateSuggestion>();
List<PredicateSuggestion> allPredicateSuggestions =
getAllPredicateSuggestions(resourceResolver);
for (PredicateSuggestion suggestion : allPredicateSuggestions) {
if (suggestion.getOptionTitle().toLowerCase().
contains(term.toLowerCase())) {
matchedPredicates.add(suggestion);
}
}
return matchedPredicates;
}
PREDICATE SUGGESTIONS
#evolverocks24
• Control the UI of the search module
• Each handler needs to have one
• Default ones are at /libs/granite/omnisearch/content/metadata
MODULE CONFIGURATION NODES
#evolverocks25
jcr:title
The display title of the search location
listOrder
The order of the location
cardPath
The resource type used to render results in the card view
listItemPath
The resource type used to render results in the list view
clientlibs
Any custom clientlib that needs to be loaded when the location is shown. This is
typically used to handle custom actions when an item is selected.
MODULE CONFIG NODE PROPERTIES
#evolverocks26
actions/selection
Actions that are loaded once an item from that
location is selected. Different actions could be
enabled during the Omnisearch here, as opposed
to the console.
views/list
View configuration that is used while in list view.
This is specially important for the List View
because allows to configure the columns that are
shown.
MODULE CONFIG NODE CHILD NODES
#evolverocks27
<coral-card data-sly-use.data="data.js"
class="foundation-collection-navigator"
data-foundation-collection-navigator-href="${data.navigationHref}"
itemscope="itemscope" itemtype="http://schema.org/WebPage"
colorhint="#ffffff">
<coral-card-asset>
<img src="${data.thumbnailUrl}">
</coral-card-asset>
<coral-card-content>
<coral-card-context>FRAGMENT</coral-card-context>
<coral-card-title class="foundation-collection-item-title"
value="${data.title}">${data.title}</coral-card-title>
</coral-card-content>
<coral-card-propertylist></coral-card-propertylist> <!-- see next slides -->
<link rel="properties" href="${data.navigationHref}">
<meta class="foundation-collection-quickactions" data-foundation-collection-quickactions-rel="">
<coral-quickactions></coral-quickactions> <!-- see next slides -->
</coral-card>
CARD COMPONENT
#evolverocks28
<coral-card-propertylist data-sly-test=${data.lastModified}>
<coral-card-property icon="edit">
<time datetime="${data.lastModified}">
${data.formattedRelativeTime}
</time>
</coral-card-property>
</coral-card-propertylist>
CARD COMPONENT CONTINUED
#evolverocks29
<coral-quickactions target="_prev" alignmy="left top" alignat="left top">
<coral-quickactions-item icon="check”
class="foundation-collection-item-activator">
Select
</coral-quickactions-item>
<coral-quickactions-item icon="edit”
class="foundation-anchor”
data-foundation-anchor-href="${data.navigationHref}">
Edit
</coral-quickactions-item>
<coral-quickactions-item icon="infoCircle" class="foundation-anchor”
data-foundation-anchor-href="${data.propertiesHref}”
data-contextpath = "/assetdetails.html">
View Properties
</coral-quickactions-item>
</coral-quickactions>
CARD COMPONENT CONTINUED
#evolverocks 30
<tr data-sly-use.data="data.js"
data-item-title="${data.title}"
data-foundation-collection-navigator-href="${data.navigationHref}”
data-foundation-collection-item-id="${data.path}"
class="foundation-collection-item foundation-collection-navigator"
is="coral-tr">
<td is="coral-td" coral-tr-select>
<img class="foundation-collection-item-thumbnail" src="${data.thumbnailUrl}"
alt="${data.title}">
</td>
<td class="foundation-collection-item-title" is="coral-td">${data.title}</td>
<td is="coral-td">
<time datetime="${data.lastModified}">
<coral-icon icon="edit" size="xs"></coral-icon> ${data.formattedRelativeTime}</time>
</td>
<td is="coral-td">${data.description}
<meta class="foundation-collection-quickactions"
data-foundation-collection-quickactions-rel="">
</td>
</tr>
ROW ITEM COMPONENT
#evolverocks
DEMO
31
#evolverocks 32
https://github.com/justinedelson/aem-omnisearch-cfm
CODE
#evolverocks33
• Wizard support
• i.e. “Create” -> “Create Page” (suggestion) -> Create Page Wizard
• Tags as Global Predicate
• Recent Search Support
• Improved Save Search Support
FUTURE CONCEPTS
#evolverocks
THANK YOU!

More Related Content

What's hot

Adobe Experience Manager Core Components
Adobe Experience Manager Core ComponentsAdobe Experience Manager Core Components
Adobe Experience Manager Core ComponentsGabriel Walt
 
Introduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsIntroduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsStefano Celentano
 
Understanding Sling Models in AEM
Understanding Sling Models in AEMUnderstanding Sling Models in AEM
Understanding Sling Models in AEMAccunity Software
 
Introduction to VueJS & Vuex
Introduction to VueJS & VuexIntroduction to VueJS & Vuex
Introduction to VueJS & VuexBernd Alter
 
AEM Best Practices for Component Development
AEM Best Practices for Component DevelopmentAEM Best Practices for Component Development
AEM Best Practices for Component DevelopmentGabriel Walt
 
HTL(Sightly) - All you need to know
HTL(Sightly) - All you need to knowHTL(Sightly) - All you need to know
HTL(Sightly) - All you need to knowPrabhdeep Singh
 
Angular Data Binding
Angular Data BindingAngular Data Binding
Angular Data BindingDuy Khanh
 
Nestjs MasterClass Slides
Nestjs MasterClass SlidesNestjs MasterClass Slides
Nestjs MasterClass SlidesNir Kaufman
 
SpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSLSpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSLSunghyouk Bae
 
How To Manage API Request with AXIOS on a React Native App
How To Manage API Request with AXIOS on a React Native AppHow To Manage API Request with AXIOS on a React Native App
How To Manage API Request with AXIOS on a React Native AppAndolasoft Inc
 
Mikhail Egorov - Hunting for bugs in Adobe Experience Manager webapps
Mikhail Egorov - Hunting for bugs in Adobe Experience Manager webappsMikhail Egorov - Hunting for bugs in Adobe Experience Manager webapps
Mikhail Egorov - Hunting for bugs in Adobe Experience Manager webappshacktivity
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsStormpath
 
Spring Cloud Gateway
Spring Cloud GatewaySpring Cloud Gateway
Spring Cloud GatewayVMware Tanzu
 

What's hot (20)

Osgi
OsgiOsgi
Osgi
 
Adobe Experience Manager Core Components
Adobe Experience Manager Core ComponentsAdobe Experience Manager Core Components
Adobe Experience Manager Core Components
 
Introduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsIntroduction to Sightly and Sling Models
Introduction to Sightly and Sling Models
 
Understanding Sling Models in AEM
Understanding Sling Models in AEMUnderstanding Sling Models in AEM
Understanding Sling Models in AEM
 
NestJS
NestJSNestJS
NestJS
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Introduction to VueJS & Vuex
Introduction to VueJS & VuexIntroduction to VueJS & Vuex
Introduction to VueJS & Vuex
 
AEM Best Practices for Component Development
AEM Best Practices for Component DevelopmentAEM Best Practices for Component Development
AEM Best Practices for Component Development
 
HTL(Sightly) - All you need to know
HTL(Sightly) - All you need to knowHTL(Sightly) - All you need to know
HTL(Sightly) - All you need to know
 
Angular Data Binding
Angular Data BindingAngular Data Binding
Angular Data Binding
 
Angular Directives
Angular DirectivesAngular Directives
Angular Directives
 
Nestjs MasterClass Slides
Nestjs MasterClass SlidesNestjs MasterClass Slides
Nestjs MasterClass Slides
 
Presentation1.pptx
Presentation1.pptxPresentation1.pptx
Presentation1.pptx
 
Sling Models Overview
Sling Models OverviewSling Models Overview
Sling Models Overview
 
SpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSLSpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSL
 
How To Manage API Request with AXIOS on a React Native App
How To Manage API Request with AXIOS on a React Native AppHow To Manage API Request with AXIOS on a React Native App
How To Manage API Request with AXIOS on a React Native App
 
Mikhail Egorov - Hunting for bugs in Adobe Experience Manager webapps
Mikhail Egorov - Hunting for bugs in Adobe Experience Manager webappsMikhail Egorov - Hunting for bugs in Adobe Experience Manager webapps
Mikhail Egorov - Hunting for bugs in Adobe Experience Manager webapps
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIs
 
Spring Cloud Gateway
Spring Cloud GatewaySpring Cloud Gateway
Spring Cloud Gateway
 
Xke spring boot
Xke spring bootXke spring boot
Xke spring boot
 

Similar to AEM 6.2 Omnisearch: Unified Author-Side Content Searching

Rapid Prototyping with Solr
Rapid Prototyping with SolrRapid Prototyping with Solr
Rapid Prototyping with SolrErik Hatcher
 
jQuery: Tips, tricks and hints for better development and Performance
jQuery: Tips, tricks and hints for better development and PerformancejQuery: Tips, tricks and hints for better development and Performance
jQuery: Tips, tricks and hints for better development and PerformanceJonas De Smet
 
Rapid Prototyping with Solr
Rapid Prototyping with SolrRapid Prototyping with Solr
Rapid Prototyping with SolrErik Hatcher
 
EclipseCon2011 Cross-Platform Mobile Development with Eclipse
EclipseCon2011 Cross-Platform Mobile Development with EclipseEclipseCon2011 Cross-Platform Mobile Development with Eclipse
EclipseCon2011 Cross-Platform Mobile Development with EclipseHeiko Behrens
 
How to Bring Common UI Patterns to ADF
How to Bring Common UI Patterns to ADF How to Bring Common UI Patterns to ADF
How to Bring Common UI Patterns to ADF Luc Bors
 
Your Content, Your Search, Your Decision
Your Content, Your Search, Your DecisionYour Content, Your Search, Your Decision
Your Content, Your Search, Your DecisionAgnes Molnar
 
Search and nosql for information management @nosqlmatters Cologne
Search and nosql for information management @nosqlmatters CologneSearch and nosql for information management @nosqlmatters Cologne
Search and nosql for information management @nosqlmatters CologneLucian Precup
 
Writing Maintainable JavaScript
Writing Maintainable JavaScriptWriting Maintainable JavaScript
Writing Maintainable JavaScriptAndrew Dupont
 
What's the deal with Android maps?
What's the deal with Android maps?What's the deal with Android maps?
What's the deal with Android maps?Chuck Greb
 
Compass Framework
Compass FrameworkCompass Framework
Compass FrameworkLukas Vlcek
 
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
[Pgday.Seoul 2018]  이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG[Pgday.Seoul 2018]  이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PGPgDay.Seoul
 
FamilySearch Reference Client
FamilySearch Reference ClientFamilySearch Reference Client
FamilySearch Reference ClientDallan Quass
 
Connect.js - Exploring React.Native
Connect.js - Exploring React.NativeConnect.js - Exploring React.Native
Connect.js - Exploring React.Nativejoshcjensen
 
Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017Matthew Groves
 
Full Stack Development with Node.js and NoSQL
Full Stack Development with Node.js and NoSQLFull Stack Development with Node.js and NoSQL
Full Stack Development with Node.js and NoSQLAll Things Open
 
(BDT401) Big Data Orchestra - Harmony within Data Analysis Tools | AWS re:Inv...
(BDT401) Big Data Orchestra - Harmony within Data Analysis Tools | AWS re:Inv...(BDT401) Big Data Orchestra - Harmony within Data Analysis Tools | AWS re:Inv...
(BDT401) Big Data Orchestra - Harmony within Data Analysis Tools | AWS re:Inv...Amazon Web Services
 
Data access 2.0? Please welcome: Spring Data!
Data access 2.0? Please welcome: Spring Data!Data access 2.0? Please welcome: Spring Data!
Data access 2.0? Please welcome: Spring Data!Oliver Gierke
 

Similar to AEM 6.2 Omnisearch: Unified Author-Side Content Searching (20)

Rapid Prototyping with Solr
Rapid Prototyping with SolrRapid Prototyping with Solr
Rapid Prototyping with Solr
 
jQuery: Tips, tricks and hints for better development and Performance
jQuery: Tips, tricks and hints for better development and PerformancejQuery: Tips, tricks and hints for better development and Performance
jQuery: Tips, tricks and hints for better development and Performance
 
Rapid Prototyping with Solr
Rapid Prototyping with SolrRapid Prototyping with Solr
Rapid Prototyping with Solr
 
How te bring common UI patterns to ADF
How te bring common UI patterns to ADFHow te bring common UI patterns to ADF
How te bring common UI patterns to ADF
 
EclipseCon2011 Cross-Platform Mobile Development with Eclipse
EclipseCon2011 Cross-Platform Mobile Development with EclipseEclipseCon2011 Cross-Platform Mobile Development with Eclipse
EclipseCon2011 Cross-Platform Mobile Development with Eclipse
 
How to Bring Common UI Patterns to ADF
How to Bring Common UI Patterns to ADF How to Bring Common UI Patterns to ADF
How to Bring Common UI Patterns to ADF
 
Your Content, Your Search, Your Decision
Your Content, Your Search, Your DecisionYour Content, Your Search, Your Decision
Your Content, Your Search, Your Decision
 
Search and nosql for information management @nosqlmatters Cologne
Search and nosql for information management @nosqlmatters CologneSearch and nosql for information management @nosqlmatters Cologne
Search and nosql for information management @nosqlmatters Cologne
 
Jersey
JerseyJersey
Jersey
 
Writing Maintainable JavaScript
Writing Maintainable JavaScriptWriting Maintainable JavaScript
Writing Maintainable JavaScript
 
What's the deal with Android maps?
What's the deal with Android maps?What's the deal with Android maps?
What's the deal with Android maps?
 
Compass Framework
Compass FrameworkCompass Framework
Compass Framework
 
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
[Pgday.Seoul 2018]  이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG[Pgday.Seoul 2018]  이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
 
Backbone js
Backbone jsBackbone js
Backbone js
 
FamilySearch Reference Client
FamilySearch Reference ClientFamilySearch Reference Client
FamilySearch Reference Client
 
Connect.js - Exploring React.Native
Connect.js - Exploring React.NativeConnect.js - Exploring React.Native
Connect.js - Exploring React.Native
 
Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017
 
Full Stack Development with Node.js and NoSQL
Full Stack Development with Node.js and NoSQLFull Stack Development with Node.js and NoSQL
Full Stack Development with Node.js and NoSQL
 
(BDT401) Big Data Orchestra - Harmony within Data Analysis Tools | AWS re:Inv...
(BDT401) Big Data Orchestra - Harmony within Data Analysis Tools | AWS re:Inv...(BDT401) Big Data Orchestra - Harmony within Data Analysis Tools | AWS re:Inv...
(BDT401) Big Data Orchestra - Harmony within Data Analysis Tools | AWS re:Inv...
 
Data access 2.0? Please welcome: Spring Data!
Data access 2.0? Please welcome: Spring Data!Data access 2.0? Please welcome: Spring Data!
Data access 2.0? Please welcome: Spring Data!
 

More from Justin Edelson

Mastering the Sling Rewriter
Mastering the Sling RewriterMastering the Sling Rewriter
Mastering the Sling RewriterJustin Edelson
 
PhoneGap Enterprise Viewer - ConnectCon 2015
PhoneGap Enterprise Viewer - ConnectCon 2015PhoneGap Enterprise Viewer - ConnectCon 2015
PhoneGap Enterprise Viewer - ConnectCon 2015Justin Edelson
 
Building Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerBuilding Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerJustin Edelson
 
Extra AEM Development Tools
Extra AEM Development ToolsExtra AEM Development Tools
Extra AEM Development ToolsJustin Edelson
 
Demystifying Oak Search
Demystifying Oak SearchDemystifying Oak Search
Demystifying Oak SearchJustin Edelson
 
Thoughts on Component Resuse
Thoughts on Component ResuseThoughts on Component Resuse
Thoughts on Component ResuseJustin Edelson
 

More from Justin Edelson (6)

Mastering the Sling Rewriter
Mastering the Sling RewriterMastering the Sling Rewriter
Mastering the Sling Rewriter
 
PhoneGap Enterprise Viewer - ConnectCon 2015
PhoneGap Enterprise Viewer - ConnectCon 2015PhoneGap Enterprise Viewer - ConnectCon 2015
PhoneGap Enterprise Viewer - ConnectCon 2015
 
Building Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerBuilding Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience Manager
 
Extra AEM Development Tools
Extra AEM Development ToolsExtra AEM Development Tools
Extra AEM Development Tools
 
Demystifying Oak Search
Demystifying Oak SearchDemystifying Oak Search
Demystifying Oak Search
 
Thoughts on Component Resuse
Thoughts on Component ResuseThoughts on Component Resuse
Thoughts on Component Resuse
 

Recently uploaded

Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 

Recently uploaded (20)

Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 

AEM 6.2 Omnisearch: Unified Author-Side Content Searching

Editor's Notes

  1. Oscar – usage walkthrough
  2. Justin – introduce custom module
  3. The Spell check method is essentially the same using rep:spellcheck instead of rep:suggest. Note that you wouldn’t generally need to write this if you extended AbstractOmniSearchHandler
  4. You will also see icon and simpleCardPath in some of the OOTB nodes. These aren’t currently used but are planned optimizations in the future.
  5. Oscar – usage walkthrough