SlideShare a Scribd company logo
Ashokkumar T A 108-Apr-19
Designing for Search in AEM
Aspects to consider and solution options for each aspect
Common
Full site /
Free text
search
Module
specific
search
Assets Search
Property /
Field Based
Features
Faceted
Auto suggest
Spell check,
Auto
correction
Search with-
in search
Results
Sort order
Filtering
results
Pagination
Permission
based
Advanced
Multi-lingual
Caching
results
Popular &
Promoted
searches
Favorites &
ignored
Others
Search
binaries (pdf,
images,…)
Results
Scoring
Inactive /
historical
content
Tracking &
Reporting
Ashokkumar T A 208-Apr-19
Aspects to be considered
*Identify all applicable aspects for your use cases
Ashokkumar T A 308-Apr-19
Author vs. Publisher
Ashokkumar T A 408-Apr-19
Remember they serve very different purposes
Can have completely different set of requirements for search
Typically have separate designs, different index configurations
Search on Author integrates with Authoring UI Interfaces
Search on Publisher integrates with published site UI
Ashokkumar T A 508-Apr-19
Typical activities in designing for search on Author
Review the authoring search forms that
would be used in the solution. Identify all
the changes that would be required
1. Review search forms
Plan to develop custom search predicates if the
identified requirements could not be met with
available OOB predicates
2. Create custom search predicates
If any of the Authoring search forms requires
change, make necessary changes## through the
search forms editor available under Tools ->
Operations
3. Customize search forms
If required create new indexes and/or customize
OOB indexes** to meet the requirements. For most
cases OOB as-is or with minor customization would
suffice for handling search on Author
4. Create / modify indexes
## The customized form gets saved under
/apps/cq/gu`i/content which can be packaged and
deployed across environments
** To customize, disable the OOB definition, take a copy, and
make the necessa`ry customization on the copy`
Ashokkumar T A 608-Apr-19
Typical activities in designing for search on Publisher
Collate all the search features needed – like free text
search, auto-suggestion, spell check, … Each would
require a different query and index. Take care to
include all features required
1. Identify all features needed
Analyze all touch points to identify all input
conditions and output data. It could be
centralized at global search or scattered across
pages or a combination of boths
2. Cover all Integrations with search
Once you have the features and integration points
covered, list down the query for all the
representative scenarios##
3. List down all representative queries
From the listing of the queries, identify the different
index types** and the index configuration required.
Also identify the services needed to deliver all the
search features
4. Identify indexes and services required
** The requirements might mandate one or more
types of index to be used in the solution
# Having this list would greatly help with deciding on the
services to build with maximum reuse
Ashokkumar T A 708-Apr-19
A closer look at the features
Following slides are presented from Publisher perspective. But some of
the aspects discussed may apply for Author as well
Ashokkumar T A 808-Apr-19
Auto Suggestion – Prompting the search term
Authored list of terms
From Search History
Based on AEM Content
• Lucene index for suggestion
• Values of one or more property can be
configured to be used as suggested terms
• Update frequency
• Path specific auto-suggestions
• Analyzers for more control on suggestions
Ashokkumar T A 908-Apr-19
Auto Correction – Original term has no result, search an alternate
Spellcheck library
Closest match to list
(Authored or History)
Based on AEM Content
• Lucene index for spellchecking
• Values of one or more property can be
configured to be for spell check
• Path specific spellcheck has limitations
Ashokkumar T A 1008-Apr-19
Search with-in search
Filtering the results further by another term
Perform new search with both terms in AND condition
Client side logic? Full result set available + Ranking
Ashokkumar T A 1108-Apr-19
Handling the results
Ashokkumar T A 1208-Apr-19
Ordering the results
Apply boost on properties
Ranked on boost weightage
Influence the ranking
Based on value of property
Multiple order by | asc / dsc
Order by clause
Ashokkumar T A 1308-Apr-19
Filtering the results
Applying additional conditions to query
New search with all conditions included – Fresh results
Apply filtering logic on client side | Full result set available?
Ashokkumar T A 1408-Apr-19
Paginate the result set – Can’t / Don’t fetch all the results
More only if user navigates
Total results count not accurate
Fetch Content for 3 to 4 pages
Cache on client, use from cache
Set GuessTotal in query
Check more flag in response
Leverage API Features
Use offset and limit params
Ashokkumar T A 1508-Apr-19
Results based on user permission
Execute the query in the users JCR session
Do not use service / administrative session
Cached results could not be used if permissions are different
Ashokkumar T A 1608-Apr-19
Some Advanced aspects
Ashokkumar T A 1708-Apr-19
Popular and promoted search terms
Tracking searches to identify popular search terms
Promoted search terms – on a new product/service
Pre-fetch and cache results for popular/promoted search terms
Ashokkumar T A 1808-Apr-19
Points on caching search results
Where to build this cache? On Author vs. on Publisher
Where to keep the cache? Publisher / Dispatcher / External
Permission based results cache
Design of services based on cache characteristics
Ashokkumar T A 1908-Apr-19
Favoring and ignoring specific results
Results common | favored & ignored items user specific
Storing favored, ignored results external to AEM
UI logic to filter out ignored and prioritize favored results
Ashokkumar T A 2008-Apr-19
Multi-lingual in search
Single language results vs. mixed results
Language specific analyzers
Content organization vs. language code in metadata
Ashokkumar T A 2108-Apr-19
Few other aspects
Ashokkumar T A 2208-Apr-19
Match based on content of binary files
Workflow extracts text from binaries
Extracted text included in indexing
Not all binary types supported
Apache Tika to support wider range of file types
Ashokkumar T A 2308-Apr-19
Scoring of results
Aggregators, analyzers and index rules applied on content
Set preferred properties -> Analyzed flag
Define relative boost values on properties appropriately
Ashokkumar T A 2408-Apr-19
Promoting newer content
If new content needs to show up before older content?
Go for it if ordering by lastModified works
Design content/properties appropriately to handle it otherwise
Ashokkumar T A 2508-Apr-19
Tracking usage of search
Important to track what users are doing in any serious project
Bringing in an analytics solution
Reports from analytics provides insight for future roadmap
Ashokkumar T A 2608-Apr-19
Common perspectives
Ashokkumar T A 2708-Apr-19
When?
A dangerous tool. Easily tempts to use it everywhere
Look for other options. Use it only when absolutely needed
Fits for full text search, searching a large tree,…
Ashokkumar T A 2808-Apr-19
When Not?
Find content within a small sub-tree
Like filtering under a node, fetch sub-menu items…
Evaluate cost of tree traversal vs. using search
Ashokkumar T A 2908-Apr-19
How?
Funnel all searches to come through a set well defined services
Return only needed size of result set in simple json format.
Build logic in UI to deal with formatting of search results
Ashokkumar T A 3008-Apr-19
How not?
Do not make query builder calls from all over
Do not format the results on the server
Do not make it too chatty
Ashokkumar T A 3108-Apr-19
Other thoughts / Discussion
Ashokkumar T A 3208-Apr-19
Thankyou
Feedback and suggestions welcome. Please write to
ashokkumar_ta / ashokkumar.ta@gmail.com

More Related Content

PPTX
Spsvb Developer Intro to SharePoint Search
PPT
SharePoint Jumpstart #2 Making Basic SharePoint Search Work
PDF
Optimizing Your Search Experience
PDF
PatSeer Premier Overview
PDF
Sumo Logic - Optimizing Your Search Experience (2016-08-17)
PDF
WIPS Global Brochure, New
PDF
PatSeer Overview
PDF
Becoming "Facet"-nated with Search API
Spsvb Developer Intro to SharePoint Search
SharePoint Jumpstart #2 Making Basic SharePoint Search Work
Optimizing Your Search Experience
PatSeer Premier Overview
Sumo Logic - Optimizing Your Search Experience (2016-08-17)
WIPS Global Brochure, New
PatSeer Overview
Becoming "Facet"-nated with Search API

Similar to Designing for search in AEM (20)

PDF
PatSeer Introduction
PPT
Cognos framework manager
PDF
Schema on read with runtime fields
PPTX
Software reusable repository management
PDF
PRD Template for Product Managers
PDF
Relecura - Features Overview
PPTX
Search and Recommendations: 3 Sides of the Same Coin
PPT
Search Me: Designing Information Retrieval Experiences
PPTX
SharePoint Saturday Perth 2013 - Overview of Search in SharePoint Server 201...
PPS
Choosing The Right Tools For The Right Job
PPT
Training Agenda
PDF
Sumo Logic Quick Start - Feb 2016
PDF
Semantic SharePoint
PDF
Elastic Stack: Using data for insight and action
PDF
Primavera Analytics What’s New in Release 15.2
PDF
STEP (Stibo Enterprise Platform) Trailblazer
PPTX
Template for Privacy Design of Tech Projects
PPTX
Share point summit_2010_lemieux-toc
PPTX
Sumo Logic QuickStart
PPTX
Custom policies columbus ohio mulesoft meetup
PatSeer Introduction
Cognos framework manager
Schema on read with runtime fields
Software reusable repository management
PRD Template for Product Managers
Relecura - Features Overview
Search and Recommendations: 3 Sides of the Same Coin
Search Me: Designing Information Retrieval Experiences
SharePoint Saturday Perth 2013 - Overview of Search in SharePoint Server 201...
Choosing The Right Tools For The Right Job
Training Agenda
Sumo Logic Quick Start - Feb 2016
Semantic SharePoint
Elastic Stack: Using data for insight and action
Primavera Analytics What’s New in Release 15.2
STEP (Stibo Enterprise Platform) Trailblazer
Template for Privacy Design of Tech Projects
Share point summit_2010_lemieux-toc
Sumo Logic QuickStart
Custom policies columbus ohio mulesoft meetup
Ad

More from Ashokkumar T A (18)

PDF
A quick introduction to Strapi CMS
PDF
A quick introduction to GraphQL
PDF
Cloud trends - 2020
PDF
AEM - Binary less replication
PDF
Microservices trends - 2020
PDF
Upgrading or migrating to a higher AEM version - Planning and process
PDF
Aligning to AEMs Release Cycle
PDF
AEM - A Collection of developer friendly tools
PDF
On MQ Series & JMS
PDF
Aem offline content
PDF
Reactive applications
PDF
Redis overview
PDF
Apache shiro security framework
PDF
Web analytics an intro
PDF
The six key steps to AEM architecture
PDF
Cms product evaluation
PDF
Aem maintenance
PDF
Aem dispatcher – tips & tricks
A quick introduction to Strapi CMS
A quick introduction to GraphQL
Cloud trends - 2020
AEM - Binary less replication
Microservices trends - 2020
Upgrading or migrating to a higher AEM version - Planning and process
Aligning to AEMs Release Cycle
AEM - A Collection of developer friendly tools
On MQ Series & JMS
Aem offline content
Reactive applications
Redis overview
Apache shiro security framework
Web analytics an intro
The six key steps to AEM architecture
Cms product evaluation
Aem maintenance
Aem dispatcher – tips & tricks
Ad

Recently uploaded (20)

PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
cuic standard and advanced reporting.pdf
PPTX
sap open course for s4hana steps from ECC to s4
PPTX
Programs and apps: productivity, graphics, security and other tools
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPTX
Spectroscopy.pptx food analysis technology
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
KodekX | Application Modernization Development
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPT
Teaching material agriculture food technology
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
Understanding_Digital_Forensics_Presentation.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Digital-Transformation-Roadmap-for-Companies.pptx
cuic standard and advanced reporting.pdf
sap open course for s4hana steps from ECC to s4
Programs and apps: productivity, graphics, security and other tools
20250228 LYD VKU AI Blended-Learning.pptx
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Spectroscopy.pptx food analysis technology
MIND Revenue Release Quarter 2 2025 Press Release
MYSQL Presentation for SQL database connectivity
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Network Security Unit 5.pdf for BCA BBA.
KodekX | Application Modernization Development
Per capita expenditure prediction using model stacking based on satellite ima...
Reach Out and Touch Someone: Haptics and Empathic Computing
The Rise and Fall of 3GPP – Time for a Sabbatical?
Teaching material agriculture food technology
Diabetes mellitus diagnosis method based random forest with bat algorithm
Understanding_Digital_Forensics_Presentation.pptx

Designing for search in AEM

  • 1. Ashokkumar T A 108-Apr-19 Designing for Search in AEM Aspects to consider and solution options for each aspect
  • 2. Common Full site / Free text search Module specific search Assets Search Property / Field Based Features Faceted Auto suggest Spell check, Auto correction Search with- in search Results Sort order Filtering results Pagination Permission based Advanced Multi-lingual Caching results Popular & Promoted searches Favorites & ignored Others Search binaries (pdf, images,…) Results Scoring Inactive / historical content Tracking & Reporting Ashokkumar T A 208-Apr-19 Aspects to be considered *Identify all applicable aspects for your use cases
  • 3. Ashokkumar T A 308-Apr-19 Author vs. Publisher
  • 4. Ashokkumar T A 408-Apr-19 Remember they serve very different purposes Can have completely different set of requirements for search Typically have separate designs, different index configurations Search on Author integrates with Authoring UI Interfaces Search on Publisher integrates with published site UI
  • 5. Ashokkumar T A 508-Apr-19 Typical activities in designing for search on Author Review the authoring search forms that would be used in the solution. Identify all the changes that would be required 1. Review search forms Plan to develop custom search predicates if the identified requirements could not be met with available OOB predicates 2. Create custom search predicates If any of the Authoring search forms requires change, make necessary changes## through the search forms editor available under Tools -> Operations 3. Customize search forms If required create new indexes and/or customize OOB indexes** to meet the requirements. For most cases OOB as-is or with minor customization would suffice for handling search on Author 4. Create / modify indexes ## The customized form gets saved under /apps/cq/gu`i/content which can be packaged and deployed across environments ** To customize, disable the OOB definition, take a copy, and make the necessa`ry customization on the copy`
  • 6. Ashokkumar T A 608-Apr-19 Typical activities in designing for search on Publisher Collate all the search features needed – like free text search, auto-suggestion, spell check, … Each would require a different query and index. Take care to include all features required 1. Identify all features needed Analyze all touch points to identify all input conditions and output data. It could be centralized at global search or scattered across pages or a combination of boths 2. Cover all Integrations with search Once you have the features and integration points covered, list down the query for all the representative scenarios## 3. List down all representative queries From the listing of the queries, identify the different index types** and the index configuration required. Also identify the services needed to deliver all the search features 4. Identify indexes and services required ** The requirements might mandate one or more types of index to be used in the solution # Having this list would greatly help with deciding on the services to build with maximum reuse
  • 7. Ashokkumar T A 708-Apr-19 A closer look at the features Following slides are presented from Publisher perspective. But some of the aspects discussed may apply for Author as well
  • 8. Ashokkumar T A 808-Apr-19 Auto Suggestion – Prompting the search term Authored list of terms From Search History Based on AEM Content • Lucene index for suggestion • Values of one or more property can be configured to be used as suggested terms • Update frequency • Path specific auto-suggestions • Analyzers for more control on suggestions
  • 9. Ashokkumar T A 908-Apr-19 Auto Correction – Original term has no result, search an alternate Spellcheck library Closest match to list (Authored or History) Based on AEM Content • Lucene index for spellchecking • Values of one or more property can be configured to be for spell check • Path specific spellcheck has limitations
  • 10. Ashokkumar T A 1008-Apr-19 Search with-in search Filtering the results further by another term Perform new search with both terms in AND condition Client side logic? Full result set available + Ranking
  • 11. Ashokkumar T A 1108-Apr-19 Handling the results
  • 12. Ashokkumar T A 1208-Apr-19 Ordering the results Apply boost on properties Ranked on boost weightage Influence the ranking Based on value of property Multiple order by | asc / dsc Order by clause
  • 13. Ashokkumar T A 1308-Apr-19 Filtering the results Applying additional conditions to query New search with all conditions included – Fresh results Apply filtering logic on client side | Full result set available?
  • 14. Ashokkumar T A 1408-Apr-19 Paginate the result set – Can’t / Don’t fetch all the results More only if user navigates Total results count not accurate Fetch Content for 3 to 4 pages Cache on client, use from cache Set GuessTotal in query Check more flag in response Leverage API Features Use offset and limit params
  • 15. Ashokkumar T A 1508-Apr-19 Results based on user permission Execute the query in the users JCR session Do not use service / administrative session Cached results could not be used if permissions are different
  • 16. Ashokkumar T A 1608-Apr-19 Some Advanced aspects
  • 17. Ashokkumar T A 1708-Apr-19 Popular and promoted search terms Tracking searches to identify popular search terms Promoted search terms – on a new product/service Pre-fetch and cache results for popular/promoted search terms
  • 18. Ashokkumar T A 1808-Apr-19 Points on caching search results Where to build this cache? On Author vs. on Publisher Where to keep the cache? Publisher / Dispatcher / External Permission based results cache Design of services based on cache characteristics
  • 19. Ashokkumar T A 1908-Apr-19 Favoring and ignoring specific results Results common | favored & ignored items user specific Storing favored, ignored results external to AEM UI logic to filter out ignored and prioritize favored results
  • 20. Ashokkumar T A 2008-Apr-19 Multi-lingual in search Single language results vs. mixed results Language specific analyzers Content organization vs. language code in metadata
  • 21. Ashokkumar T A 2108-Apr-19 Few other aspects
  • 22. Ashokkumar T A 2208-Apr-19 Match based on content of binary files Workflow extracts text from binaries Extracted text included in indexing Not all binary types supported Apache Tika to support wider range of file types
  • 23. Ashokkumar T A 2308-Apr-19 Scoring of results Aggregators, analyzers and index rules applied on content Set preferred properties -> Analyzed flag Define relative boost values on properties appropriately
  • 24. Ashokkumar T A 2408-Apr-19 Promoting newer content If new content needs to show up before older content? Go for it if ordering by lastModified works Design content/properties appropriately to handle it otherwise
  • 25. Ashokkumar T A 2508-Apr-19 Tracking usage of search Important to track what users are doing in any serious project Bringing in an analytics solution Reports from analytics provides insight for future roadmap
  • 26. Ashokkumar T A 2608-Apr-19 Common perspectives
  • 27. Ashokkumar T A 2708-Apr-19 When? A dangerous tool. Easily tempts to use it everywhere Look for other options. Use it only when absolutely needed Fits for full text search, searching a large tree,…
  • 28. Ashokkumar T A 2808-Apr-19 When Not? Find content within a small sub-tree Like filtering under a node, fetch sub-menu items… Evaluate cost of tree traversal vs. using search
  • 29. Ashokkumar T A 2908-Apr-19 How? Funnel all searches to come through a set well defined services Return only needed size of result set in simple json format. Build logic in UI to deal with formatting of search results
  • 30. Ashokkumar T A 3008-Apr-19 How not? Do not make query builder calls from all over Do not format the results on the server Do not make it too chatty
  • 31. Ashokkumar T A 3108-Apr-19 Other thoughts / Discussion
  • 32. Ashokkumar T A 3208-Apr-19 Thankyou Feedback and suggestions welcome. Please write to ashokkumar_ta / ashokkumar.ta@gmail.com