SlideShare a Scribd company logo
Effective searching
Integrating External Search Engines with Adobe AEM
Dominik Kornaś
3 years in Cognifide – exactly today 
Senior software engineer & technical lead
Focused on systems integration tasks
The ”search guy” in Cognifide
Who am I?
What we won’t talk about
Sorting
Document
structure
Indexing
Managed
relevancy
model
Input data
processingHighlighter
Faceted
search
Wildcard
search
Statistics
Autocomplete
Spellchecking
Lemmatization
Sentence
search
Pagination
Content
normalization
Metadata
Data
collections
& views
The goal of searching
„What is the best British football team?”
If we ask such a question, will the search engine find the answer?
The goal of searching
„What is the best British football team?”
The search engine will find the question, not the answer.
The goal of searching
„What is the best British football team?”
vs.
„best team football UK”
Are we asking questions or issuing queries?
The goal of searching
The goal of searching
Effective searching is about finding keywords:
• in the shortest possible time
• close to each other in a block of text
• that are in a desired context
and being sure the engine knows about the data we are looking for!
Effective searchingIndexing
The Past
Microsoft FAST
The first major external search integration with AEM (then: CQ 5.4)
in Cognifide.
Push-like indexing using CQ-FAST connector from Adobe.
Microsoft FAST
Implemented as a dedicated replication agent, triggered by the
content replication.
http://wem.help.adobe.com/enterprise/en_US/10-0/wem/administering/cq2fast.html
Content builder
Transport
handler
MS FAST
Microsoft FAST
Replication agent processing workflow: HTTP request for a content
Metadata
Markup
Microsoft FAST
We can decide which instance the content should be read from.
Content builder
Transport
handler
MS FAST
Microsoft FAST
Replication agent processing workflow: metadata.ecma evaluation
Markup
Metadata
Content builder
Transport
handler
MS FAST
Microsoft FAST
Replication agent processing workflow: data upload
Markup
Metadata
Microsoft FAST
Sends content to MS FAST.
The ”cq5” suffix in the URI is
a document collection.
A named subset of documents
in the entire FAST index.
http://wem.help.adobe.com/enterprise/en_US/10-0/wem/administering/cq2fast.html
Content builder
Transport
handler
MS FAST
Microsoft FAST
Replication agent processing workflow: indexing
Markup
Metadata
Microsoft FAST
The replication agent is OK for one site, stored in a single FAST
collection of documents.
It becomes complicated in the multi-site environment where each
site must be located in a separate index area.
And when the search results should not contain data coming from
the different sites.
Microsoft FAST
Microsoft FAST
The complex ACL configuration has been used to ensure that only
one proper agent will deliver the document to FAST.
It was hard to set and maintain without the proper tools that have
automated the whole process.
The Present Day
Google Search Appliance
For the AEM & GSA integration, we have considered reusing of the
CQ-FAST connector approach.
But aware of the issues, we have decided to develop our own
micro-framework that takes care about the indexing process.
Installed as a single OSGi bundle.
Provides a set of services and utilities to help with the indexing.
Google Search Appliance
Content
replication
Filtering
Push to
Publish
Indexing
queue (-s)
Content
gathering
Metadata
processing
Push to
external
engine
The indexing process
spans between the
author and the publish
AEM instances.
All stages are tracked
and it is possible to
recover from the failure
and retry the indexing.
AuthorPublish
Process status tracking & persistence
Google Search Appliance
Content
replication
Filtering
Push to
Publish
Indexing
queue (-s)
Content
gathering
Metadata
processing
Push to
external
engine
The process starts with
the content replication.
OR
Programatically from the
backend, e.g. triggered
by the scheduler service.
AuthorPublish
Process status tracking & persistence
Google Search Appliance
Content
replication
Filtering
Push to
Publish
Indexing
queue (-s)
Content
gathering
Metadata
processing
Push to
external
engine
Each replicated content
path is filtered against
a whitelist & a blacklist.
There’s an option to use
a custom OSGi service
able to decide if the
content should be
indexed, removed or
ignored.
AuthorPublish
Process status tracking & persistence
Google Search Appliance
Content
replication
Filtering
Push to
Publish
Indexing
queue (-s)
Content
gathering
Metadata
processing
Push to
external
engine
The indexing information
is persisted in a special
kind of repository node
and replicated to the
publish instance.
We can choose which
publish instance(-s) will
receive the data.
AuthorPublish
Process status tracking & persistence
Google Search Appliance
Content
replication
Filtering
Push to
Publish
Indexing
queue (-s)
Content
gathering
Metadata
processing
Push to
external
engine
The information is
received and instantly
dispatched to the
indexing queue(-s).
We can handle indexing
in a single or multiple
different search engines.
AuthorPublish
Process status tracking & persistence
Google Search Appliance
Content
replication
Filtering
Push to
Publish
Indexing
queue (-s)
Content
gathering
Metadata
processing
Push to
external
engine
The content is gathered
using the
SlingRequestProcessor
OSGi service.
It’s like a request for an
HTML page sent from
the Java code and
consumed by itself.
AuthorPublish
Process status tracking & persistence
Google Search Appliance
Content
replication
Filtering
Push to
Publish
Indexing
queue (-s)
Content
gathering
Metadata
processing
Push to
external
engine
Metadata is collected
according to multiple
different rules:
• the content resource
type
• the content path
• values of the
component properties
• custom rules
AuthorPublish
Process status tracking & persistence
Google Search Appliance
Content
replication
Filtering
Push to
Publish
Indexing
queue (-s)
Content
gathering
Metadata
processing
Push to
external
engine
The content and
metadata are combined
together and sent to the
search engine.
Depending on the
implementation it can be
done for each single
document or in batches.
AuthorPublish
Process status tracking & persistence
Google Search Appliance
Content
replication
Filtering
Push to
Publish
Indexing
queue (-s)
Content
gathering
Metadata
processing
Failure or
timeout
Retry
In case of any failure,
indexing is rescheduled
and launched again as
many times as it is
configured.
If the server goes down,
indexing will restart
when the machine is up
again.
AuthorPublish
Process status tracking & persistence
Google Search Appliance
The flexible nature of our solution saved us when some fancy
requirements came.
The Future
Apache Solr
The search engine, which is:
• free & open source
• powerful
• customizable
• scalable
And what is the most important, it is a part of the Jackrabbit Oak
(JCR 3), the repository engine which has been used for AEM 6.
AEM with the integrated Solr is right there.
Apache Solr
The solution developed for GSA has been ported to work with Solr.
Changes:
• Replaced the ”glue code” that does the final data push, with
one that uses SolrJ Java library.
• Names of the document metadata fields has been changed to
follow the Solr naming convention for dynamic fields.
Everything else remained untouched.
Search driven
components
Search driven components
No server-side processing.
Search engine used as a mini database of metadata.
Configuration via query parameters.
Pure front-end implementation.
Search driven components
The whole page can be read from
the dispatcher cache.
An AJAX request gets the content
directly from the search engine.
The response is JSON-structured, easy to parse and to display,
using JavaScript.
{
"id": "223344",
"firstName": "Michael",
"lastName": "Johnson",
"phone": "(123)-777-8888",
"office": "Office UK",
"department": "504",
"title": "Lead Architect"
}
Search driven components
Search results component configured to return employee data.
Search driven components
User profile.
The name, mobile,
email, image path etc.
are all metadata values
of the document.
Search driven components
Carousel with news.
By changing the
maximum number
of search results,
we can control the
number of slides in
the carousel.
Thank you!

More Related Content

What's hot (20)

PPT
Search domain basics
pmanvi
 
PPTX
Case study of Rujhaan.com (A social news app )
Rahul Jain
 
PPTX
Combining Django REST framework & Elasticsearch
Yaroslav Muravskyi
 
PDF
Side by Side with Elasticsearch & Solr, Part 2
Sematext Group, Inc.
 
PPTX
quick intro to elastic search
medcl
 
PDF
Workshop: Learning Elasticsearch
Anurag Patel
 
PDF
A Survey of Elasticsearch Usage
Greg Brown
 
PPTX
Building a Large Scale SEO/SEM Application with Apache Solr
Rahul Jain
 
PPT
Xapian vs sphinx
panjunyong
 
PDF
Elasticsearch in Netflix
Danny Yuan
 
PDF
Ahsay Backup Software v7 - Datasheet
Ronnie Chan
 
PDF
Journey of Implementing Solr at Target: Presented by Raja Ramachandran, Target
Lucidworks
 
PPT
Building a CRM on top of ElasticSearch
Mark Greene
 
PDF
Elasticsearch Tutorial | Getting Started with Elasticsearch | ELK Stack Train...
Edureka!
 
PDF
Efficient Scalable Search in a Multi-Tenant Environment: Presented by Harry H...
Lucidworks
 
PPTX
Elasticsearch Distributed search & analytics on BigData made easy
Itamar
 
ODP
Introduction to Apache solr
Knoldus Inc.
 
PDF
Django Rest Framework - tips & trick
Luca Zacchetti
 
PPTX
Gab2015 azure search as a service
Alexandre Marreiros
 
KEY
Elasticsearch - Devoxx France 2012 - English version
David Pilato
 
Search domain basics
pmanvi
 
Case study of Rujhaan.com (A social news app )
Rahul Jain
 
Combining Django REST framework & Elasticsearch
Yaroslav Muravskyi
 
Side by Side with Elasticsearch & Solr, Part 2
Sematext Group, Inc.
 
quick intro to elastic search
medcl
 
Workshop: Learning Elasticsearch
Anurag Patel
 
A Survey of Elasticsearch Usage
Greg Brown
 
Building a Large Scale SEO/SEM Application with Apache Solr
Rahul Jain
 
Xapian vs sphinx
panjunyong
 
Elasticsearch in Netflix
Danny Yuan
 
Ahsay Backup Software v7 - Datasheet
Ronnie Chan
 
Journey of Implementing Solr at Target: Presented by Raja Ramachandran, Target
Lucidworks
 
Building a CRM on top of ElasticSearch
Mark Greene
 
Elasticsearch Tutorial | Getting Started with Elasticsearch | ELK Stack Train...
Edureka!
 
Efficient Scalable Search in a Multi-Tenant Environment: Presented by Harry H...
Lucidworks
 
Elasticsearch Distributed search & analytics on BigData made easy
Itamar
 
Introduction to Apache solr
Knoldus Inc.
 
Django Rest Framework - tips & trick
Luca Zacchetti
 
Gab2015 azure search as a service
Alexandre Marreiros
 
Elasticsearch - Devoxx France 2012 - English version
David Pilato
 

Viewers also liked (20)

PDF
Oto cycles 1
Syaputra Azhar
 
PDF
Proyecto daphne es
En algún sitio seguro
 
PDF
আহত সাপ
Ilyas Qadri Ziaee
 
PPT
SBRN: How to use Facebook For Business
Birgit Pauli-Haack
 
PDF
Las 5 preocupaciones en Twitter sobre la salida de Claudio Palma en Twitter
Roberto Guerra
 
DOCX
47. EPISTOLA 2CORINTENI ORIGINAL ANTIC -FACSIMIL
Dorin David Aurel OBedya Ben Aharon Cohen
 
PPTX
Legado de un Paciente Critico Terminal UP Med
Jorge Sinclair
 
PPTX
Cuadro sinóptico
lreina15
 
PDF
WTF is Twisted?
hawkowl
 
PPT
Instrumentos
Ceip Cesareo Alierta
 
PPTX
Cartas a julieta
Woderful_life
 
PPTX
Presentación holacracia
Juan Carlos Kaiten
 
PDF
Basics of Solr and Solr Integration with AEM6
DEEPAK KHETAWAT
 
PPTX
Action weekly'15 edition 1
inactionagency
 
PDF
Brand Building in the Age of Big Data by Mr. Gavin Coombes
wkwsci-research
 
PPTX
Your self improvement
Florencia Monica
 
PPTX
Assigment 3 it
Mona Bijan
 
PPT
A walking tour of boston
John Maxwell
 
Oto cycles 1
Syaputra Azhar
 
Proyecto daphne es
En algún sitio seguro
 
আহত সাপ
Ilyas Qadri Ziaee
 
SBRN: How to use Facebook For Business
Birgit Pauli-Haack
 
Las 5 preocupaciones en Twitter sobre la salida de Claudio Palma en Twitter
Roberto Guerra
 
47. EPISTOLA 2CORINTENI ORIGINAL ANTIC -FACSIMIL
Dorin David Aurel OBedya Ben Aharon Cohen
 
Legado de un Paciente Critico Terminal UP Med
Jorge Sinclair
 
Cuadro sinóptico
lreina15
 
WTF is Twisted?
hawkowl
 
Instrumentos
Ceip Cesareo Alierta
 
Cartas a julieta
Woderful_life
 
Presentación holacracia
Juan Carlos Kaiten
 
Basics of Solr and Solr Integration with AEM6
DEEPAK KHETAWAT
 
Action weekly'15 edition 1
inactionagency
 
Brand Building in the Age of Big Data by Mr. Gavin Coombes
wkwsci-research
 
Your self improvement
Florencia Monica
 
Assigment 3 it
Mona Bijan
 
A walking tour of boston
John Maxwell
 
Ad

Similar to Effective Searching by Dominik Kornas (20)

PPTX
SharePoint 2013 Search Topology and Optimization
Mike Maadarani
 
PPTX
Google indexing
tahoor71
 
PPTX
search engine and crawler index ranking .pptx
ajajkhan16
 
ODP
How To Build your own Custom Search Engine
Richa Budhraja
 
PPTX
#SPSPhilly search topology & optimization
Mike Maadarani
 
PDF
G017254554
IOSR Journals
 
PDF
An Intelligent Meta Search Engine for Efficient Web Document Retrieval
iosrjce
 
PPT
Google
Mohd Arif
 
PPTX
SharePoint Search Topology and Optimization
Mike Maadarani
 
PPTX
Introduction to Search Engine Optimization
GauravPrajapati39
 
PPT
Google Search Engine
Aniket_1415
 
PPTX
Lec 11-12 Search engines for easy use.pptx
231b209
 
PDF
How to Design a RAG System for Smarter Decision-Making.pdf
imoliviabennett
 
PPTX
Search Engines: Best Practice
Yuliya_Prach
 
PPTX
Understanding and Applying Cloud Hybrid Search
Jeff Fried
 
PDF
IRJET - Review on Search Engine Optimization
IRJET Journal
 
PDF
professional fuzzy type-ahead rummage around in xml type-ahead search techni...
Kumar Goud
 
PDF
Smart Crawler: A Two Stage Crawler for Concept Based Semantic Search Engine.
iosrjce
 
PDF
E017624043
IOSR Journals
 
PPTX
Cloud Hybrid Search with SharePoint
Jeff Fried
 
SharePoint 2013 Search Topology and Optimization
Mike Maadarani
 
Google indexing
tahoor71
 
search engine and crawler index ranking .pptx
ajajkhan16
 
How To Build your own Custom Search Engine
Richa Budhraja
 
#SPSPhilly search topology & optimization
Mike Maadarani
 
G017254554
IOSR Journals
 
An Intelligent Meta Search Engine for Efficient Web Document Retrieval
iosrjce
 
Google
Mohd Arif
 
SharePoint Search Topology and Optimization
Mike Maadarani
 
Introduction to Search Engine Optimization
GauravPrajapati39
 
Google Search Engine
Aniket_1415
 
Lec 11-12 Search engines for easy use.pptx
231b209
 
How to Design a RAG System for Smarter Decision-Making.pdf
imoliviabennett
 
Search Engines: Best Practice
Yuliya_Prach
 
Understanding and Applying Cloud Hybrid Search
Jeff Fried
 
IRJET - Review on Search Engine Optimization
IRJET Journal
 
professional fuzzy type-ahead rummage around in xml type-ahead search techni...
Kumar Goud
 
Smart Crawler: A Two Stage Crawler for Concept Based Semantic Search Engine.
iosrjce
 
E017624043
IOSR Journals
 
Cloud Hybrid Search with SharePoint
Jeff Fried
 
Ad

More from AEM HUB (20)

PDF
Microservices for AEM by Maciej Majchrzak
AEM HUB
 
PPTX
When dispatcher caching is not enough by Jakub Wądołowski
AEM HUB
 
PDF
Sling Models Using Sightly and JSP by Deepak Khetawat
AEM HUB
 
PPTX
PhoneGap Enterprise Viewer by Anthony Rumsey
AEM HUB
 
PDF
Integrating Apache Wookie with AEM by Rima Mittal and Ankit Gubrani
AEM HUB
 
PPTX
Mastering the Sling Rewriter by Justin Edelson
AEM HUB
 
PPTX
Building Quality into the AEM Publication Workflow with Active Standards by D...
AEM HUB
 
PPTX
Touching the AEM component dialog by Mateusz Chromiński
AEM HUB
 
PPTX
How to build a Social Intranet with Adobe Sites and 3rd Party products ... us...
AEM HUB
 
PPTX
How do you build flexible platforms that focuses on business needs? by Fahim...
AEM HUB
 
PDF
AEM Apps Enhanced: In-app Messaging and Beacons by John Fait
AEM HUB
 
PPTX
Effectively Scale and Operate AEM with MongoDB by Norberto Leite
AEM HUB
 
PPTX
Adobe Managed Services: Complicated Cloud Deployments by Adam Pazik, Mike Til...
AEM HUB
 
PPTX
Adobe Marketing Cloud Integrations: Myth or Reality? by Holger Marsen
AEM HUB
 
PDF
Responsive Websites and Grid-Based Layouts by Gabriel Walt
AEM HUB
 
PPTX
When Sightly Meets Slice by Tomasz Niedźwiedź
AEM HUB
 
PPTX
Creativity without comprise by Cleve Gibbon
AEM HUB
 
PDF
REST in AEM by Roy Fielding
AEM HUB
 
PPTX
Adobe Summit 2015 - Penguin Random House - Accelerating Digital Transformation
AEM HUB
 
PDF
Socialize your Exceptional Web Experience – Adobe AEM & IBM Connections by He...
AEM HUB
 
Microservices for AEM by Maciej Majchrzak
AEM HUB
 
When dispatcher caching is not enough by Jakub Wądołowski
AEM HUB
 
Sling Models Using Sightly and JSP by Deepak Khetawat
AEM HUB
 
PhoneGap Enterprise Viewer by Anthony Rumsey
AEM HUB
 
Integrating Apache Wookie with AEM by Rima Mittal and Ankit Gubrani
AEM HUB
 
Mastering the Sling Rewriter by Justin Edelson
AEM HUB
 
Building Quality into the AEM Publication Workflow with Active Standards by D...
AEM HUB
 
Touching the AEM component dialog by Mateusz Chromiński
AEM HUB
 
How to build a Social Intranet with Adobe Sites and 3rd Party products ... us...
AEM HUB
 
How do you build flexible platforms that focuses on business needs? by Fahim...
AEM HUB
 
AEM Apps Enhanced: In-app Messaging and Beacons by John Fait
AEM HUB
 
Effectively Scale and Operate AEM with MongoDB by Norberto Leite
AEM HUB
 
Adobe Managed Services: Complicated Cloud Deployments by Adam Pazik, Mike Til...
AEM HUB
 
Adobe Marketing Cloud Integrations: Myth or Reality? by Holger Marsen
AEM HUB
 
Responsive Websites and Grid-Based Layouts by Gabriel Walt
AEM HUB
 
When Sightly Meets Slice by Tomasz Niedźwiedź
AEM HUB
 
Creativity without comprise by Cleve Gibbon
AEM HUB
 
REST in AEM by Roy Fielding
AEM HUB
 
Adobe Summit 2015 - Penguin Random House - Accelerating Digital Transformation
AEM HUB
 
Socialize your Exceptional Web Experience – Adobe AEM & IBM Connections by He...
AEM HUB
 

Recently uploaded (20)

PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PPTX
The Future of AI & Machine Learning.pptx
pritsen4700
 
PDF
State-Dependent Conformal Perception Bounds for Neuro-Symbolic Verification
Ivan Ruchkin
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PPTX
Agile Chennai 18-19 July 2025 | Workshop - Enhancing Agile Collaboration with...
AgileNetwork
 
PDF
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PDF
Per Axbom: The spectacular lies of maps
Nexer Digital
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PPTX
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
PDF
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
PPTX
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PDF
Generative AI vs Predictive AI-The Ultimate Comparison Guide
Lily Clark
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PPTX
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
The Future of AI & Machine Learning.pptx
pritsen4700
 
State-Dependent Conformal Perception Bounds for Neuro-Symbolic Verification
Ivan Ruchkin
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
Agile Chennai 18-19 July 2025 | Workshop - Enhancing Agile Collaboration with...
AgileNetwork
 
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
Per Axbom: The spectacular lies of maps
Nexer Digital
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
Generative AI vs Predictive AI-The Ultimate Comparison Guide
Lily Clark
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 

Effective Searching by Dominik Kornas

  • 1. Effective searching Integrating External Search Engines with Adobe AEM Dominik Kornaś
  • 2. 3 years in Cognifide – exactly today  Senior software engineer & technical lead Focused on systems integration tasks The ”search guy” in Cognifide Who am I?
  • 3. What we won’t talk about Sorting Document structure Indexing Managed relevancy model Input data processingHighlighter Faceted search Wildcard search Statistics Autocomplete Spellchecking Lemmatization Sentence search Pagination Content normalization Metadata Data collections & views
  • 4. The goal of searching
  • 5. „What is the best British football team?” If we ask such a question, will the search engine find the answer? The goal of searching
  • 6. „What is the best British football team?” The search engine will find the question, not the answer. The goal of searching
  • 7. „What is the best British football team?” vs. „best team football UK” Are we asking questions or issuing queries? The goal of searching
  • 8. The goal of searching Effective searching is about finding keywords: • in the shortest possible time • close to each other in a block of text • that are in a desired context and being sure the engine knows about the data we are looking for!
  • 11. Microsoft FAST The first major external search integration with AEM (then: CQ 5.4) in Cognifide. Push-like indexing using CQ-FAST connector from Adobe.
  • 12. Microsoft FAST Implemented as a dedicated replication agent, triggered by the content replication. http://wem.help.adobe.com/enterprise/en_US/10-0/wem/administering/cq2fast.html
  • 13. Content builder Transport handler MS FAST Microsoft FAST Replication agent processing workflow: HTTP request for a content Metadata Markup
  • 14. Microsoft FAST We can decide which instance the content should be read from.
  • 15. Content builder Transport handler MS FAST Microsoft FAST Replication agent processing workflow: metadata.ecma evaluation Markup Metadata
  • 16. Content builder Transport handler MS FAST Microsoft FAST Replication agent processing workflow: data upload Markup Metadata
  • 17. Microsoft FAST Sends content to MS FAST. The ”cq5” suffix in the URI is a document collection. A named subset of documents in the entire FAST index. http://wem.help.adobe.com/enterprise/en_US/10-0/wem/administering/cq2fast.html
  • 18. Content builder Transport handler MS FAST Microsoft FAST Replication agent processing workflow: indexing Markup Metadata
  • 19. Microsoft FAST The replication agent is OK for one site, stored in a single FAST collection of documents. It becomes complicated in the multi-site environment where each site must be located in a separate index area. And when the search results should not contain data coming from the different sites.
  • 21. Microsoft FAST The complex ACL configuration has been used to ensure that only one proper agent will deliver the document to FAST. It was hard to set and maintain without the proper tools that have automated the whole process.
  • 23. Google Search Appliance For the AEM & GSA integration, we have considered reusing of the CQ-FAST connector approach. But aware of the issues, we have decided to develop our own micro-framework that takes care about the indexing process. Installed as a single OSGi bundle. Provides a set of services and utilities to help with the indexing.
  • 24. Google Search Appliance Content replication Filtering Push to Publish Indexing queue (-s) Content gathering Metadata processing Push to external engine The indexing process spans between the author and the publish AEM instances. All stages are tracked and it is possible to recover from the failure and retry the indexing. AuthorPublish Process status tracking & persistence
  • 25. Google Search Appliance Content replication Filtering Push to Publish Indexing queue (-s) Content gathering Metadata processing Push to external engine The process starts with the content replication. OR Programatically from the backend, e.g. triggered by the scheduler service. AuthorPublish Process status tracking & persistence
  • 26. Google Search Appliance Content replication Filtering Push to Publish Indexing queue (-s) Content gathering Metadata processing Push to external engine Each replicated content path is filtered against a whitelist & a blacklist. There’s an option to use a custom OSGi service able to decide if the content should be indexed, removed or ignored. AuthorPublish Process status tracking & persistence
  • 27. Google Search Appliance Content replication Filtering Push to Publish Indexing queue (-s) Content gathering Metadata processing Push to external engine The indexing information is persisted in a special kind of repository node and replicated to the publish instance. We can choose which publish instance(-s) will receive the data. AuthorPublish Process status tracking & persistence
  • 28. Google Search Appliance Content replication Filtering Push to Publish Indexing queue (-s) Content gathering Metadata processing Push to external engine The information is received and instantly dispatched to the indexing queue(-s). We can handle indexing in a single or multiple different search engines. AuthorPublish Process status tracking & persistence
  • 29. Google Search Appliance Content replication Filtering Push to Publish Indexing queue (-s) Content gathering Metadata processing Push to external engine The content is gathered using the SlingRequestProcessor OSGi service. It’s like a request for an HTML page sent from the Java code and consumed by itself. AuthorPublish Process status tracking & persistence
  • 30. Google Search Appliance Content replication Filtering Push to Publish Indexing queue (-s) Content gathering Metadata processing Push to external engine Metadata is collected according to multiple different rules: • the content resource type • the content path • values of the component properties • custom rules AuthorPublish Process status tracking & persistence
  • 31. Google Search Appliance Content replication Filtering Push to Publish Indexing queue (-s) Content gathering Metadata processing Push to external engine The content and metadata are combined together and sent to the search engine. Depending on the implementation it can be done for each single document or in batches. AuthorPublish Process status tracking & persistence
  • 32. Google Search Appliance Content replication Filtering Push to Publish Indexing queue (-s) Content gathering Metadata processing Failure or timeout Retry In case of any failure, indexing is rescheduled and launched again as many times as it is configured. If the server goes down, indexing will restart when the machine is up again. AuthorPublish Process status tracking & persistence
  • 33. Google Search Appliance The flexible nature of our solution saved us when some fancy requirements came.
  • 35. Apache Solr The search engine, which is: • free & open source • powerful • customizable • scalable And what is the most important, it is a part of the Jackrabbit Oak (JCR 3), the repository engine which has been used for AEM 6. AEM with the integrated Solr is right there.
  • 36. Apache Solr The solution developed for GSA has been ported to work with Solr. Changes: • Replaced the ”glue code” that does the final data push, with one that uses SolrJ Java library. • Names of the document metadata fields has been changed to follow the Solr naming convention for dynamic fields. Everything else remained untouched.
  • 38. Search driven components No server-side processing. Search engine used as a mini database of metadata. Configuration via query parameters. Pure front-end implementation.
  • 39. Search driven components The whole page can be read from the dispatcher cache. An AJAX request gets the content directly from the search engine. The response is JSON-structured, easy to parse and to display, using JavaScript. { "id": "223344", "firstName": "Michael", "lastName": "Johnson", "phone": "(123)-777-8888", "office": "Office UK", "department": "504", "title": "Lead Architect" }
  • 40. Search driven components Search results component configured to return employee data.
  • 41. Search driven components User profile. The name, mobile, email, image path etc. are all metadata values of the document.
  • 42. Search driven components Carousel with news. By changing the maximum number of search results, we can control the number of slides in the carousel.