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

Similar to Designing for search in AEM

PatSeer Introduction
PatSeer IntroductionPatSeer Introduction
PatSeer Introduction
Gridlogics
 
Cognos framework manager
Cognos framework managerCognos framework manager
Cognos framework manager
maxonlinetr
 
Schema on read with runtime fields
Schema on read with runtime fieldsSchema on read with runtime fields
Schema on read with runtime fields
Elasticsearch
 
Software reusable repository management
Software reusable repository managementSoftware reusable repository management
Software reusable repository management
Vishnuvarthanan Moorthy
 
PRD Template for Product Managers
PRD Template for Product ManagersPRD Template for Product Managers
PRD Template for Product Managers
Ujjwal Trivedi
 
Relecura - Features Overview
Relecura - Features OverviewRelecura - Features Overview
Relecura - Features Overview
Relecura Inc.
 
Search and Recommendations: 3 Sides of the Same Coin
Search and Recommendations: 3 Sides of the Same CoinSearch and Recommendations: 3 Sides of the Same Coin
Search and Recommendations: 3 Sides of the Same Coin
Nick Pentreath
 
Search Me: Designing Information Retrieval Experiences
Search Me: Designing Information Retrieval ExperiencesSearch Me: Designing Information Retrieval Experiences
Search Me: Designing Information Retrieval Experiences
Joe Lamantia
 
SharePoint Saturday Perth 2013 - Overview of Search in SharePoint Server 201...
SharePoint Saturday Perth 2013  - Overview of Search in SharePoint Server 201...SharePoint Saturday Perth 2013  - Overview of Search in SharePoint Server 201...
SharePoint Saturday Perth 2013 - Overview of Search in SharePoint Server 201...
Sezai Komur
 
Choosing The Right Tools For The Right Job
Choosing The Right Tools For The Right JobChoosing The Right Tools For The Right Job
Choosing The Right Tools For The Right Job
guest6159b2
 
Training Agenda
Training AgendaTraining Agenda
Training Agenda
Roberto Arias García
 
Sumo Logic Quick Start - Feb 2016
Sumo Logic Quick Start - Feb 2016Sumo Logic Quick Start - Feb 2016
Sumo Logic Quick Start - Feb 2016
Sumo Logic
 
Semantic SharePoint
Semantic SharePointSemantic SharePoint
Semantic SharePoint
Semantic Web Company
 
Elastic Stack: Using data for insight and action
Elastic Stack: Using data for insight and actionElastic Stack: Using data for insight and action
Elastic Stack: Using data for insight and action
Elasticsearch
 
Primavera Analytics What’s New in Release 15.2
Primavera Analytics What’s New in Release 15.2 Primavera Analytics What’s New in Release 15.2
Primavera Analytics What’s New in Release 15.2
p6academy
 
STEP (Stibo Enterprise Platform) Trailblazer
STEP (Stibo Enterprise Platform) TrailblazerSTEP (Stibo Enterprise Platform) Trailblazer
STEP (Stibo Enterprise Platform) Trailblazer
Stibo Systems
 
Template for Privacy Design of Tech Projects
Template for Privacy Design of Tech ProjectsTemplate for Privacy Design of Tech Projects
Template for Privacy Design of Tech Projects
privacyvigilante
 
Share point summit_2010_lemieux-toc
Share point summit_2010_lemieux-tocShare point summit_2010_lemieux-toc
Share point summit_2010_lemieux-toc
Earley Information Science
 
Sumo Logic QuickStart
Sumo Logic QuickStartSumo Logic QuickStart
Sumo Logic QuickStart
Sumo Logic
 
Custom policies columbus ohio mulesoft meetup
Custom policies columbus ohio mulesoft meetupCustom policies columbus ohio mulesoft meetup
Custom policies columbus ohio mulesoft meetup
MuleSoft Meetup
 

Similar to Designing for search in AEM (20)

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

More from Ashokkumar T A

A quick introduction to Strapi CMS
A quick introduction to Strapi CMSA quick introduction to Strapi CMS
A quick introduction to Strapi CMS
Ashokkumar T A
 
A quick introduction to GraphQL
A quick introduction to GraphQLA quick introduction to GraphQL
A quick introduction to GraphQL
Ashokkumar T A
 
Cloud trends - 2020
Cloud   trends - 2020Cloud   trends - 2020
Cloud trends - 2020
Ashokkumar T A
 
AEM - Binary less replication
AEM - Binary less replicationAEM - Binary less replication
AEM - Binary less replication
Ashokkumar T A
 
Microservices trends - 2020
Microservices   trends - 2020Microservices   trends - 2020
Microservices trends - 2020
Ashokkumar T A
 
Upgrading or migrating to a higher AEM version - Planning and process
Upgrading or migrating to a higher AEM version - Planning and processUpgrading or migrating to a higher AEM version - Planning and process
Upgrading or migrating to a higher AEM version - Planning and process
Ashokkumar T A
 
Aligning to AEMs Release Cycle
Aligning to AEMs Release CycleAligning to AEMs Release Cycle
Aligning to AEMs Release Cycle
Ashokkumar T A
 
AEM - A Collection of developer friendly tools
AEM - A Collection of developer friendly toolsAEM - A Collection of developer friendly tools
AEM - A Collection of developer friendly tools
Ashokkumar T A
 
On MQ Series & JMS
On MQ Series & JMSOn MQ Series & JMS
On MQ Series & JMS
Ashokkumar T A
 
Aem offline content
Aem offline contentAem offline content
Aem offline content
Ashokkumar T A
 
Reactive applications
Reactive applicationsReactive applications
Reactive applications
Ashokkumar T A
 
Redis overview
Redis overviewRedis overview
Redis overview
Ashokkumar T A
 
Apache shiro security framework
Apache shiro security frameworkApache shiro security framework
Apache shiro security framework
Ashokkumar T A
 
Web analytics an intro
Web analytics   an introWeb analytics   an intro
Web analytics an intro
Ashokkumar T A
 
The six key steps to AEM architecture
The six key steps to AEM architectureThe six key steps to AEM architecture
The six key steps to AEM architecture
Ashokkumar T A
 
Cms product evaluation
Cms product evaluationCms product evaluation
Cms product evaluation
Ashokkumar T A
 
Aem maintenance
Aem maintenanceAem maintenance
Aem maintenance
Ashokkumar T A
 
Aem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAem dispatcher – tips & tricks
Aem dispatcher – tips & tricks
Ashokkumar T A
 

More from Ashokkumar T A (18)

A quick introduction to Strapi CMS
A quick introduction to Strapi CMSA quick introduction to Strapi CMS
A quick introduction to Strapi CMS
 
A quick introduction to GraphQL
A quick introduction to GraphQLA quick introduction to GraphQL
A quick introduction to GraphQL
 
Cloud trends - 2020
Cloud   trends - 2020Cloud   trends - 2020
Cloud trends - 2020
 
AEM - Binary less replication
AEM - Binary less replicationAEM - Binary less replication
AEM - Binary less replication
 
Microservices trends - 2020
Microservices   trends - 2020Microservices   trends - 2020
Microservices trends - 2020
 
Upgrading or migrating to a higher AEM version - Planning and process
Upgrading or migrating to a higher AEM version - Planning and processUpgrading or migrating to a higher AEM version - Planning and process
Upgrading or migrating to a higher AEM version - Planning and process
 
Aligning to AEMs Release Cycle
Aligning to AEMs Release CycleAligning to AEMs Release Cycle
Aligning to AEMs Release Cycle
 
AEM - A Collection of developer friendly tools
AEM - A Collection of developer friendly toolsAEM - A Collection of developer friendly tools
AEM - A Collection of developer friendly tools
 
On MQ Series & JMS
On MQ Series & JMSOn MQ Series & JMS
On MQ Series & JMS
 
Aem offline content
Aem offline contentAem offline content
Aem offline content
 
Reactive applications
Reactive applicationsReactive applications
Reactive applications
 
Redis overview
Redis overviewRedis overview
Redis overview
 
Apache shiro security framework
Apache shiro security frameworkApache shiro security framework
Apache shiro security framework
 
Web analytics an intro
Web analytics   an introWeb analytics   an intro
Web analytics an intro
 
The six key steps to AEM architecture
The six key steps to AEM architectureThe six key steps to AEM architecture
The six key steps to AEM architecture
 
Cms product evaluation
Cms product evaluationCms product evaluation
Cms product evaluation
 
Aem maintenance
Aem maintenanceAem maintenance
Aem maintenance
 
Aem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAem dispatcher – tips & tricks
Aem dispatcher – tips & tricks
 

Recently uploaded

20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
TIPNGVN2
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 

Recently uploaded (20)

20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 

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