SlideShare a Scribd company logo
#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

Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
Nascenia IT
 
How Hashmap works internally in java
How Hashmap works internally  in javaHow Hashmap works internally  in java
How Hashmap works internally in java
Ramakrishna Joshi
 
AEM and Sling
AEM and SlingAEM and Sling
AEM and Sling
Lo Ki
 
JavaScript Basics
JavaScript BasicsJavaScript Basics
JavaScript Basics
Mats Bryntse
 
A Deeper look into Javascript Basics
A Deeper look into Javascript BasicsA Deeper look into Javascript Basics
A Deeper look into Javascript Basics
Mindfire Solutions
 
jQuery
jQueryjQuery
Javascript essentials
Javascript essentialsJavascript essentials
Javascript essentials
Bedis ElAchèche
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced JavascriptAdieu
 
jQuery from the very beginning
jQuery from the very beginningjQuery from the very beginning
jQuery from the very beginning
Anis Ahmad
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
Jeevesh Pandey
 
9. ES6 | Let And Const | TypeScript | JavaScript
9. ES6 | Let And Const | TypeScript | JavaScript9. ES6 | Let And Const | TypeScript | JavaScript
9. ES6 | Let And Const | TypeScript | JavaScript
pcnmtutorials
 
Json
JsonJson
Collections Framework
Collections FrameworkCollections Framework
Collections Framework
Sunil OS
 
CSS Basics
CSS BasicsCSS Basics
CSS Basics
Sanjeev Kumar
 
Collections Api - Java
Collections Api - JavaCollections Api - Java
Collections Api - Java
Drishti Bhalla
 
JavaScript Tutorial
JavaScript  TutorialJavaScript  Tutorial
JavaScript Tutorial
Bui Kiet
 
Rest API
Rest APIRest API
jQuery for beginners
jQuery for beginnersjQuery for beginners
jQuery for beginners
Arulmurugan Rajaraman
 
REST APIs with Spring
REST APIs with SpringREST APIs with Spring
REST APIs with Spring
Joshua Long
 

What's hot (20)

Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
 
How Hashmap works internally in java
How Hashmap works internally  in javaHow Hashmap works internally  in java
How Hashmap works internally in java
 
AEM and Sling
AEM and SlingAEM and Sling
AEM and Sling
 
JavaScript Basics
JavaScript BasicsJavaScript Basics
JavaScript Basics
 
A Deeper look into Javascript Basics
A Deeper look into Javascript BasicsA Deeper look into Javascript Basics
A Deeper look into Javascript Basics
 
HTML5 DRAG AND DROP
HTML5 DRAG AND DROPHTML5 DRAG AND DROP
HTML5 DRAG AND DROP
 
jQuery
jQueryjQuery
jQuery
 
Javascript essentials
Javascript essentialsJavascript essentials
Javascript essentials
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced Javascript
 
jQuery from the very beginning
jQuery from the very beginningjQuery from the very beginning
jQuery from the very beginning
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
 
9. ES6 | Let And Const | TypeScript | JavaScript
9. ES6 | Let And Const | TypeScript | JavaScript9. ES6 | Let And Const | TypeScript | JavaScript
9. ES6 | Let And Const | TypeScript | JavaScript
 
Json
JsonJson
Json
 
Collections Framework
Collections FrameworkCollections Framework
Collections Framework
 
CSS Basics
CSS BasicsCSS Basics
CSS Basics
 
Collections Api - Java
Collections Api - JavaCollections Api - Java
Collections Api - Java
 
JavaScript Tutorial
JavaScript  TutorialJavaScript  Tutorial
JavaScript Tutorial
 
Rest API
Rest APIRest API
Rest API
 
jQuery for beginners
jQuery for beginnersjQuery for beginners
jQuery for beginners
 
REST APIs with Spring
REST APIs with SpringREST APIs with Spring
REST APIs with Spring
 

Similar to Omnisearch in AEM 6.2 - Search All the Things

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 Performance
Jonas De Smet
 
Rapid Prototyping with Solr
Rapid Prototyping with SolrRapid Prototyping with Solr
Rapid Prototyping with SolrErik Hatcher
 
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
Getting value from IoT, Integration and Data Analytics
 
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 Cologne
Lucian Precup
 
Writing Maintainable JavaScript
Writing Maintainable JavaScriptWriting Maintainable JavaScript
Writing Maintainable JavaScript
Andrew 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 Framework
Lukas 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을 위한 DB2PG
PgDay.Seoul
 
Backbone js
Backbone jsBackbone js
Backbone js
husnara mohammad
 
FamilySearch Reference Client
FamilySearch Reference ClientFamilySearch Reference Client
FamilySearch Reference Client
Dallan Quass
 
Connect.js - Exploring React.Native
Connect.js - Exploring React.NativeConnect.js - Exploring React.Native
Connect.js - Exploring React.Native
joshcjensen
 
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
Matthew 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 NoSQL
All 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 Omnisearch in AEM 6.2 - Search All the Things (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 Rewriter
Justin Edelson
 
PhoneGap Enterprise Viewer - ConnectCon 2015
PhoneGap Enterprise Viewer - ConnectCon 2015PhoneGap Enterprise Viewer - ConnectCon 2015
PhoneGap Enterprise Viewer - ConnectCon 2015
Justin 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 Manager
Justin Edelson
 
Extra AEM Development Tools
Extra AEM Development ToolsExtra AEM Development Tools
Extra AEM Development Tools
Justin Edelson
 
Demystifying Oak Search
Demystifying Oak SearchDemystifying Oak Search
Demystifying Oak Search
Justin Edelson
 
Thoughts on Component Resuse
Thoughts on Component ResuseThoughts on Component Resuse
Thoughts on Component Resuse
Justin Edelson
 
Sling Models Overview
Sling Models OverviewSling Models Overview
Sling Models Overview
Justin Edelson
 

More from Justin Edelson (7)

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
 
Sling Models Overview
Sling Models OverviewSling Models Overview
Sling Models Overview
 

Recently uploaded

Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 

Recently uploaded (20)

Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 

Omnisearch in AEM 6.2 - Search All the Things

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