SlideShare uma empresa Scribd logo
1 de 39
Digital Factory 7
Search and Query API
under the hood
#jahiaone
Benjamin Papež, QA Architect
© 2002 - 2014 Jahia Solutions Group SA
Search and Query API under
the hood
 Overview on used search engine frameworks and API
 Jahia's extensions to the Jackrabbit search engine
 Maintenance tools and utilities
 What's new in Digital Factory 7
 Query tuning and general tips
 Questions?
© 2002 - 2014 Jahia Solutions Group SA
Digital Factory: Search&query API under the hood

Overview on used search
engine frameworks and API

© 2002 - 2014 Jahia Solutions Group SA
© 2002 - 2014 Jahia Solutions Group SA
Jackrabbit extends Lucene
 Improve performance for frequent index updates
 Parse SQL-2, Xpath, QOM to create Lucene
syntax queries
 Support hierarchical queries
 Support joins
 Configure index rules, aggregates, analyzers…
© 2002 - 2014 Jahia Solutions Group SA
Search and query tags / API in
Digital Factory
Search tags / API
 Site, document repository
and subsection search
using full text and simple
metadata constraints
 Returns list of hit objects
(URL, excerpt, content
node, score, references)
sorted by score
 HTML form creation via JSP
tags. Predefined search
result snippet.
 OpenSearch and spellcheck
support

Query tags / API
 More flexible, supports all
JCR 2.0 query functions
(SQL-2, QOM, Xpath)
 Returns iterator through
found content nodes or
row objects
 No form creation.
Provides some edit mode
components.

© 2002 - 2014 Jahia Solutions Group SA
Query tags and API
SQL-2, QOM based
 Automatically handles
multilingual content
specifics
 Supports faceting
 No support for retrieving
excerpts and spellcheck
suggestions

Xpath based
 No automatic multilingual
content handling
 No support for faceting
 Support for retrieving
excerpts (with result
highlighting) and
spellcheck suggestions

© 2002 - 2014 Jahia Solutions Group SA
Digital Factory: Search&query API under the hood

Jahia‘s extensions to the
Jackrabbit search engine

© 2002 - 2014 Jahia Solutions Group SA
Handle multilingual content
 Jahia‘s datamodel stores
i18n properties in
j:translation_* subnodes

Path:
/sites/ACME-SPACE/home/events/events/event_12

[jnt:event] > jnt:content, mix:title
- startDate (date) facetable
- endDate (date) facetable
- location (string) i18n facetable
- eventsType (string) facetable
- body (string, richtext) i18n

97455502-b94f-49e9-a675-28a083151514

jcr:primaryType

jnt:event

startDate
[mix:title] mixin
- jcr:title (STRING) i18n boost=2.0

jcr:uuid

2012-07-07 00:00:00

endDate

2012-07-08 00:00:00

eventsType

show

Path:
/sites/ACME-SPACE/home/events/events/event_12/j:translation_en

26896702-d44d-47d2-a8ab-2ac0afbf506c

jcr:primaryType

This implementation choice is not
visible from looking at CND or
using Content manager/picker
and Jahia JCR API.
Should also not influence queries!

jcr:uuid

jnt:translation

jcr:language

En

jcr:title

Launch of a new satellite

body

[raw: length=1318] Lorem ipsum...

location

Cap canaveral

© 2002 - 2014 Jahia Solutions Group SA
Handle multilingual content
 Indexing modifications
 Non-i18n properties are copied down to fields of all translation
node‘s Lucene documents
 Some properties are excluded (j:locktoken, jcr:lockIsDeep,

jcr:lockOwner, jcr:language, jcr:created, jcr:createdBy,
jcr:lastModified, jcr:lastModifiedBy, j:lastPublished,
j:lastPublishedBy, j:published)

 Primary nodetype and mixin types of main node are also copied

 Special fields in document:
_:TRANSLATION_LANGUAGE and _:TRANSLATED_PARENT
(_:PARENT field of translated node document points to grandparent)
 A change in the main node state automatically triggers reindexing of translation nodes
© 2002 - 2014 Jahia Solutions Group SA
Handle multilingual content
 Query modifications
Adding current language constraint into queries (SQL2, QOM)
Excluding translation nodes from child- or
descendant-node queries
In SameNode or ChildNode join comparisons main
and translation nodes are treated as they would be
the same nodes (UUID)
In search results we filter out multiple results per node
(due to translation node)
When sorting results, the position of the translation
node overrules the position of the main node
© 2002 - 2014 Jahia Solutions Group SA
Faceting support (SQL-2,QOM)
 Integrate Apache Solr
 SimpleJahiaJcrFacets based on Solr‘s SimpleFacets
class
 Reuse solr-common module and use exactly same facet query
syntax and result objects as Solr does

 facetable fields (set in CND) are prefixed with FACET: in
Lucene document
 Analyzed with KeywordAnalyzer
 Date values are indexed with a Solr internal representation

 For hierarchical fields (set in CND) we additionally add a
_:FACET_HIERARCHY field with setting all the parent UUID
nodes (implemented for categories, could be used for other
hierarchies)
© 2002 - 2014 Jahia Solutions Group SA
Faceting support

Facets can be added in Studio or Edit
mode or even used programmatically
© 2002 - 2014 Jahia Solutions Group SA
Count support
 JCR specification does not support „select count“
 In JCR there is just RangeIterator.getSize()
 returns -1 when precise information is not available
 Performance/memory overhead as all result objects are
created and access rights checked

 Digital Factory introduces a rep:count() function:
select count AS
[rep:count(skipChecks=1;approxCountLimit=1000)]
from [jnt:file]
where isdescendantnode('/sites/ACME-SPACE')

skipChecks to skip ACL and visibility checks
approxCountLimit to get an approximate count
© 2002 - 2014 Jahia Solutions Group SA
Query performance
improvements
Access control checks
Visibility rule checks
Publication status check
Added special fields to index (_:ACL_UUID,
_:CHECK_VISIBILITY, _:PUBLISHED)
Possible lazy loading of JCR nodes
Same read rights and visibility rules are
resolved only once
© 2002 - 2014 Jahia Solutions Group SA
Improved text extraction
Text extraction from documents is done
asynchronously triggered by Quartz
scheduler

Extracted text is stored as property in
jnt:content node
Prevent recurring text extraction on re-indexing,
publication, mark for deletion,…

Extract text from richtext field using Apache
Tika (remove HTML markup)
© 2002 - 2014 Jahia Solutions Group SA
Indexing related keywords in
content definition (CND)
Keyword

Description

nofulltext

property should be excluded from full text search

indexed="no"

property should not be indexed at all as queries are never
done on it

scoreboost=2.0 allows specifying the boost factor or "weight" for the
property value

 Jackrabbit otherwise only controls these indexing
settings via indexing_configuration.xml
 with the ability to use some rules
 better to use that configuration when you want to override
our default property definitions
 Check:
http://wiki.apache.org/jackrabbit/IndexingConfiguration
© 2002 - 2014 Jahia Solutions Group SA
Digital Factory Query JSP tags
jcr:sql
<jcr:sql var="result"
sql="select * from [jnt:virtualsite] as site
where isdescendantnode(site,'/sites')"/>
<c:forEach items="${result.nodes}" var="node">

jcr:xpath
<jcr:xpath var="result"
xpath="/jcr:root/sites/${functions:xpathPathEncode(renderConte
xt.site.name)}/${functions:xpathPathEncode(descendantNode)}//e
lement(*, jnt:file)[not(@jcr:language)] order by
@jcr:lastModified descending"/>
<c:forEach items="${result.nodes}" var="node">

© 2002 - 2014 Jahia Solutions Group SA
Digital Factory Query JSP tags
jcr:qom
<jcr:jqom var="result" scope="request">
<query:selector nodeTypeName="nt:base"/>
<query:descendantNode
path="${renderContext.mainResource.node.path}"/>
<query:column propertyName="j:tags"
columnName="rep:facet(nodetype=jmix:tagged
&key=j:tags&facet.sort=true)"/>
</jcr:jqom>
<c:forEach items="${result.nodes}" var="node">

© 2002 - 2014 Jahia Solutions Group SA
Digital Factory Query
REST API
Find servlet
http://www.jahia.com/community/documentation/jahiamodules/rest.html#Find

OpenSearch integration
http://www.jahia.com/community/documentation/jahiamodules/search/openSearch.html

© 2002 - 2014 Jahia Solutions Group SA
Digital Factory Search
JSP tags
<%@ taglib prefix="s" uri="http://www.jahia.org/tags/search" %>
…
<c:url value='${url.base}${currentNode.properties.result.node.path}.html'
var="searchUrl"/>
<s:form method="post" class="simplesearchform" action="${searchUrl}">
<s:site value="${renderContext.site.name}" display="false"/>
<s:pagePath value="${searchPath}" display="false" includeChildren="true"/>
<s:nodeType value="${searchType}" display="false" />
<s:language value="${renderContext.mainResource.locale}" display="false" />
<s:term id="searchCustomTerm“ class="text-input“ value=“Search…”
match="all_words" searchIn="siteContent,tags"
onfocus="if(this.value==this.defaultValue)this.value='';"
onblur="if(this.value=='')this.value=this.defaultValue;"/>
<s:nodeProperty nodeType="jmix:categorized" name="j:defaultCategory"
id="searchCategories"/>
<input type="submit“ title=“Submit" value=""/>
</s:form>

Default search results (can be overridden):
modulessearchsrcmainresourcesjnt_searchResultshtmlsearchResults.jsp

© 2002 - 2014 Jahia Solutions Group SA
Digital Factory Search API
RenderContext context = getContext();
CommaSeparatedMultipleValue oneSite =
new CommaSeparatedMultipleValue();
oneSite.setValue(“mySite”);
CommaSeparatedMultipleValue frenchLang =
new CommaSeparatedMultipleValue();
frenchLang.setValue("fr");
SearchCriteria criteria = new SearchCriteria();
criteria.setSites(oneSite);
criteria.setLanguages(frenchLang);
criteria.getTerms().get(0).setTerm("ACME");
criteria.getTerms().get(0).getFields().setSiteContent(true);
List<Hit<?>> hits = searchService.search(criteria,
context).getResults();
© 2002 - 2014 Jahia Solutions Group SA
Digital Factory Search API
 Custom search result excerpts
 Custom display (CSS class)
 Custom excerpt if search term found in tags, category
<param name="excerptProviderClass“
value="org.jahia.services.search.jcr.HTMLExcerpt"/>

 Spellchecker (Did you mean)
 Creates dictionary per site and language
 Used to suggest terms if current search produces too few
results.
 Spellchecker is able to return more than one suggestion
(configurable)
 Limitation if multiple search terms are used and multiple have
more than one suggestion, then only one suggestion is returned

© 2002 - 2014 Jahia Solutions Group SA
Digital Factory: Search&query API under the hood

Maintenance tools and
utilities

© 2002 - 2014 Jahia Solutions Group SA
Maintenance tools
 In the Digital Factory tools area there are some
query/search related tools
JCR Query tool
Very useful to test queries and measure there performance
Possibility to run actions on the results (deletion, purge
unused versions)

Search engine management
Check index consistency or trigger re-indexing

Document text extractor
Extract and show content from uploaded documents
© 2002 - 2014 Jahia Solutions Group SA
Other query/search utilities
 Auto-completion
 Service offers auto-completion suggestions for typing in fields
with short property values (users, categories, tags,…)

 Auto-tagging
 Simple solution used in Wise (parse document and automatically
assign tags from an uploaded dictionary of tags)

 Soon on the forge
 Apache Stanbol integration (for entity extraction, auto-tagging)
 Digital Factory Crawler (using Nutch)
 Similarity search, MoreLikeThis module
 Synonym search module

© 2002 - 2014 Jahia Solutions Group SA
Digital Factory: Search&query API under the hood

What‘s new in
Digital Factory 7

© 2002 - 2014 Jahia Solutions Group SA
Framework version upgrades
 Apache Jackrabbit (from 2.2.4 to 2.4.5)
 Query related performance improvements and bug fixes
 Lucene native sort in SQL-2

 Apache Lucene (from 2.4.1 to 3.0.3)
 Performance improvement
 Less memory usage (no huge byte arrays for norms)

 Apache Solr (from 1.3.0 to 3.1.0)
 Performance improvement
 New range facet type (not only date, also other kind of
ranges)

© 2002 - 2014 Jahia Solutions Group SA
Language dependent
analyzers
 Indexing of i18n full text properties is now done with the
corresponding language specific Lucene analyzer
(org.apache.lucene.analysis.*)
 Default analyzers can be overridden or new ones added
<analyzer-registry>
<en_US class="org.apache.lucene.analysis.standard.StandardAnalyzer">
<customizer class="org.mycomp.query.lucene.AnalyzerCustomizer">
<foo>bar</foo>
<foo>bar2</foo>
<key>value</key>
</customizer>
</en_US>
</analyzer-registry>

 Same language dependent analyzers are used to analyze full
text search terms in queries
© 2002 - 2014 Jahia Solutions Group SA
External data provider
Same query syntax and API is used to run
queries on mapped external data provider
Results from different data providers are
merged
Search also in extended external data

© 2002 - 2014 Jahia Solutions Group SA
Other new features
 Limit Spellchecker dictionary creation to content of
particular properties
<spellchecker>
<include-property>jcr:title</include-property>
</spellchecker>

 Store extracted text as binary instead of String
Before: huge String properties were always loaded to
memory, but only used for indexing

 JCR Query statistics in tools area
List slowest and most popular queries
© 2002 - 2014 Jahia Solutions Group SA
Digital Factory: Search&query API under the hood

Query tuning and
general tips

© 2002 - 2014 Jahia Solutions Group SA
Ensure that queries perform
 Test duration of queries with the „JCR Query tool“ using production
data or a similar test environment
 On Jahia xCM 6.6.x avoid SQL-2 queries with order by a property
and a large result-set
 Xpath sometimes perform better than SQL-2
 Avoid that a query is executed too often (e.g. when using top-pager
and bottom-pager we store query result in request)
 Avoid cache.expiration=0 on components with queries
 Make use of the „JCR Query statistic“ tool to identify slow or often
used queries
© 2002 - 2014 Jahia Solutions Group SA
Use available features
Use rep:count() instead of iterating through
results
If you need a „select distinct“ feature (which
is not supported in JCR), you could use
faceting programmatically:
select ace.[j:roles] AS [rep:facet(facet.mincount=1)]
from [jnt:ace] as ace
where ace.[j:aceType]='GRANT' and
ace.[j:principal] = '"+fPrincipal+"' and
isdescendantnode(ace, ['"+site.getPath()+"'])

© 2002 - 2014 Jahia Solutions Group SA
How to enable multiple search
hits per page
 Create a template for the nodetype, which should
show as distinct search result
<news-template j:applyOn="jnt:news" j:defaultTemplate="true“
j:priority="100“ jcr:primaryType="jnt:contentTemplate">

 Or trigger URL modification rules
rule "Event search result hit"
when
A search result hit is present
- the node is of type jnt:event
then
Append URL query-parameter "filter" with
getEventPageFilter((JCRNodeWrapper)searchHit.getRawHit())
Append URL query-parameter "calStartDate" with
(DateFormatUtils.format(((JCRNodeWrapper)searchHit.getRawHit())
.getProperty("startDate").getDate(), "yyyy-MM-dd"))
end
© 2002 - 2014 Jahia Solutions Group SA
Escaping path and fulltext
search terms
 SQL-2
<jcr:sql var=“result”
sql="select * from [jnt:post] as post
where isdescendantnode(post,
['${functions:sqlencode(currentNode.path)}']) and
contains(post.*, '${functions:sqlencode(searchString)}')"/>

 Xpath
<jcr:xpath var="result"
xpath="/jcr:root/sites/${functions:xpathPathEncode(renderContext.
site.name)}/${functions:xpathPathEncode(descendantNode)}//element(
*, jnt:file)
[jcr:contains(., ${functions:xpathSearchEncode(searchString)})]"/>

© 2002 - 2014 Jahia Solutions Group SA
Queries on multiple nodetypes
Rather (define and) use a common mixin
Use joins in SQL-2 / QOM
Add constraints on jcr:primaryType
property
select * from [jnt:content]
where ([jcr:primaryType] = 'jnt:contentReference' or
[jcr:primaryType] = 'bnt:article' …

© 2002 - 2014 Jahia Solutions Group SA
Digital Factory: Search&query API under the hood

Questions?

© 2002 - 2014 Jahia Solutions Group SA
Digital Factory: Search&query API under the hood

Stop searching, you found it

Thank you for your attention
#jahiaone
© 2002 - 2014 Jahia Solutions Group SA

Mais conteúdo relacionado

Mais procurados

Using Visual Studio to Build SharePoint 2010 Solutions
Using Visual Studio to Build SharePoint 2010 SolutionsUsing Visual Studio to Build SharePoint 2010 Solutions
Using Visual Studio to Build SharePoint 2010 SolutionsRandy Williams
 
Upcoming JDeveloper ADF Business Components REST support
Upcoming JDeveloper ADF Business Components REST supportUpcoming JDeveloper ADF Business Components REST support
Upcoming JDeveloper ADF Business Components REST supportSteven Davelaar
 
Angular vs. AngularJS: A Complete Comparison Guide
Angular vs. AngularJS: A Complete Comparison GuideAngular vs. AngularJS: A Complete Comparison Guide
Angular vs. AngularJS: A Complete Comparison GuideCloud Analogy
 
We Have Experimental Modules, Now What?
We Have Experimental Modules, Now What?We Have Experimental Modules, Now What?
We Have Experimental Modules, Now What?Acquia
 
Beginner's Guide to APEX
Beginner's Guide to APEXBeginner's Guide to APEX
Beginner's Guide to APEXAnthony Rayner
 
Oracle APEX 18.1 New Features
Oracle APEX 18.1 New FeaturesOracle APEX 18.1 New Features
Oracle APEX 18.1 New Featuresmsewtz
 
Oracle APEX Social Login
Oracle APEX Social LoginOracle APEX Social Login
Oracle APEX Social Loginmsewtz
 
Oracle APEX 18.1 New Features
Oracle APEX 18.1 New FeaturesOracle APEX 18.1 New Features
Oracle APEX 18.1 New Featuresmsewtz
 
Oracle bi 11.1.1.6.1 and adf integration
Oracle bi 11.1.1.6.1 and adf integrationOracle bi 11.1.1.6.1 and adf integration
Oracle bi 11.1.1.6.1 and adf integrationRavi Kumar Lanke
 
Web adi webcast_v3
Web adi webcast_v3Web adi webcast_v3
Web adi webcast_v3Bala Nagella
 
Reach End Users With Next Generation Web Applications
Reach End Users With Next Generation Web ApplicationsReach End Users With Next Generation Web Applications
Reach End Users With Next Generation Web ApplicationsJeff Blankenburg
 
Using state-engine-as-sca-component-final
Using state-engine-as-sca-component-finalUsing state-engine-as-sca-component-final
Using state-engine-as-sca-component-finalGuido Schmutz
 
Oracle e-business suite (ebs) r12.2.6 - new functionality
Oracle e-business suite (ebs)  r12.2.6 - new functionalityOracle e-business suite (ebs)  r12.2.6 - new functionality
Oracle e-business suite (ebs) r12.2.6 - new functionalityMatthew Bezuidenhout
 
Building beacon-enabled apps with Oracle MCS
Building beacon-enabled apps with Oracle MCSBuilding beacon-enabled apps with Oracle MCS
Building beacon-enabled apps with Oracle MCSSteven Davelaar
 
Oracle apex training
Oracle apex trainingOracle apex training
Oracle apex trainingVasudha India
 
Dependency Injection pattern in Angular
Dependency Injection pattern in AngularDependency Injection pattern in Angular
Dependency Injection pattern in AngularAlexe Bogdan
 
Web Adi Success Story
Web Adi Success StoryWeb Adi Success Story
Web Adi Success Storyseanwfielding
 
Introduction to Vaadin
Introduction to VaadinIntroduction to Vaadin
Introduction to Vaadinnetomi
 

Mais procurados (20)

Using Visual Studio to Build SharePoint 2010 Solutions
Using Visual Studio to Build SharePoint 2010 SolutionsUsing Visual Studio to Build SharePoint 2010 Solutions
Using Visual Studio to Build SharePoint 2010 Solutions
 
Upcoming JDeveloper ADF Business Components REST support
Upcoming JDeveloper ADF Business Components REST supportUpcoming JDeveloper ADF Business Components REST support
Upcoming JDeveloper ADF Business Components REST support
 
Angular vs. AngularJS: A Complete Comparison Guide
Angular vs. AngularJS: A Complete Comparison GuideAngular vs. AngularJS: A Complete Comparison Guide
Angular vs. AngularJS: A Complete Comparison Guide
 
We Have Experimental Modules, Now What?
We Have Experimental Modules, Now What?We Have Experimental Modules, Now What?
We Have Experimental Modules, Now What?
 
Beginner's Guide to APEX
Beginner's Guide to APEXBeginner's Guide to APEX
Beginner's Guide to APEX
 
Oracle APEX 18.1 New Features
Oracle APEX 18.1 New FeaturesOracle APEX 18.1 New Features
Oracle APEX 18.1 New Features
 
Oracle APEX Social Login
Oracle APEX Social LoginOracle APEX Social Login
Oracle APEX Social Login
 
Oracle APEX 18.1 New Features
Oracle APEX 18.1 New FeaturesOracle APEX 18.1 New Features
Oracle APEX 18.1 New Features
 
Oracle bi 11.1.1.6.1 and adf integration
Oracle bi 11.1.1.6.1 and adf integrationOracle bi 11.1.1.6.1 and adf integration
Oracle bi 11.1.1.6.1 and adf integration
 
Lecture 32
Lecture 32Lecture 32
Lecture 32
 
Web adi webcast_v3
Web adi webcast_v3Web adi webcast_v3
Web adi webcast_v3
 
Reach End Users With Next Generation Web Applications
Reach End Users With Next Generation Web ApplicationsReach End Users With Next Generation Web Applications
Reach End Users With Next Generation Web Applications
 
Using state-engine-as-sca-component-final
Using state-engine-as-sca-component-finalUsing state-engine-as-sca-component-final
Using state-engine-as-sca-component-final
 
Resume
ResumeResume
Resume
 
Oracle e-business suite (ebs) r12.2.6 - new functionality
Oracle e-business suite (ebs)  r12.2.6 - new functionalityOracle e-business suite (ebs)  r12.2.6 - new functionality
Oracle e-business suite (ebs) r12.2.6 - new functionality
 
Building beacon-enabled apps with Oracle MCS
Building beacon-enabled apps with Oracle MCSBuilding beacon-enabled apps with Oracle MCS
Building beacon-enabled apps with Oracle MCS
 
Oracle apex training
Oracle apex trainingOracle apex training
Oracle apex training
 
Dependency Injection pattern in Angular
Dependency Injection pattern in AngularDependency Injection pattern in Angular
Dependency Injection pattern in Angular
 
Web Adi Success Story
Web Adi Success StoryWeb Adi Success Story
Web Adi Success Story
 
Introduction to Vaadin
Introduction to VaadinIntroduction to Vaadin
Introduction to Vaadin
 

Destaque

Plan de Trabajo y Fichas
Plan de Trabajo y FichasPlan de Trabajo y Fichas
Plan de Trabajo y FichasCesar Augusto
 
JahiaOne - Jahia 7, The External Data Provider
JahiaOne - Jahia 7, The External Data ProviderJahiaOne - Jahia 7, The External Data Provider
JahiaOne - Jahia 7, The External Data ProviderJahia Solutions Group
 
Sharing of Distributed Objects in a DX Cluster, thanks to Hazelcast - Online ...
Sharing of Distributed Objects in a DX Cluster, thanks to Hazelcast - Online ...Sharing of Distributed Objects in a DX Cluster, thanks to Hazelcast - Online ...
Sharing of Distributed Objects in a DX Cluster, thanks to Hazelcast - Online ...Jahia Solutions Group
 
An Introduction to Elastic Search.
An Introduction to Elastic Search.An Introduction to Elastic Search.
An Introduction to Elastic Search.Jurriaan Persyn
 
JahiaOne 2015 - Jahia and search-based architecture a talk from CGI
JahiaOne 2015 - Jahia and search-based architecture a talk from CGIJahiaOne 2015 - Jahia and search-based architecture a talk from CGI
JahiaOne 2015 - Jahia and search-based architecture a talk from CGIJahia Solutions Group
 

Destaque (6)

Plan de Trabajo y Fichas
Plan de Trabajo y FichasPlan de Trabajo y Fichas
Plan de Trabajo y Fichas
 
JahiaOne - Jahia 7, The External Data Provider
JahiaOne - Jahia 7, The External Data ProviderJahiaOne - Jahia 7, The External Data Provider
JahiaOne - Jahia 7, The External Data Provider
 
Sharing of Distributed Objects in a DX Cluster, thanks to Hazelcast - Online ...
Sharing of Distributed Objects in a DX Cluster, thanks to Hazelcast - Online ...Sharing of Distributed Objects in a DX Cluster, thanks to Hazelcast - Online ...
Sharing of Distributed Objects in a DX Cluster, thanks to Hazelcast - Online ...
 
An Introduction to Elastic Search.
An Introduction to Elastic Search.An Introduction to Elastic Search.
An Introduction to Elastic Search.
 
S&OP Process
S&OP ProcessS&OP Process
S&OP Process
 
JahiaOne 2015 - Jahia and search-based architecture a talk from CGI
JahiaOne 2015 - Jahia and search-based architecture a talk from CGIJahiaOne 2015 - Jahia and search-based architecture a talk from CGI
JahiaOne 2015 - Jahia and search-based architecture a talk from CGI
 

Semelhante a JahiaOne - Jahia7: Query and Search API under the Hood

Salesforce meetup | Lightning Web Component
Salesforce meetup | Lightning Web ComponentSalesforce meetup | Lightning Web Component
Salesforce meetup | Lightning Web ComponentAccenture Hungary
 
Project Helidon Overview (Japanese)
Project Helidon Overview (Japanese)Project Helidon Overview (Japanese)
Project Helidon Overview (Japanese)Logico
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...Fabio Franzini
 
3 rad extensibility-srilakshmi_s_rajesh_k
3 rad extensibility-srilakshmi_s_rajesh_k3 rad extensibility-srilakshmi_s_rajesh_k
3 rad extensibility-srilakshmi_s_rajesh_kIBM
 
Rad Extensibility - Srilakshmi S Rajesh K
Rad Extensibility - Srilakshmi S Rajesh KRad Extensibility - Srilakshmi S Rajesh K
Rad Extensibility - Srilakshmi S Rajesh KRoopa Nadkarni
 
Optimizer percona live_ams2015
Optimizer percona live_ams2015Optimizer percona live_ams2015
Optimizer percona live_ams2015Manyi Lu
 
Developing Next-Gen Enterprise Web Application
Developing Next-Gen Enterprise Web ApplicationDeveloping Next-Gen Enterprise Web Application
Developing Next-Gen Enterprise Web ApplicationMark Gu
 
SpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptxSpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptxSUFYAN SATTAR
 
Best practices in using Salesforce Metadata API
Best practices in using Salesforce Metadata APIBest practices in using Salesforce Metadata API
Best practices in using Salesforce Metadata APISanchit Dua
 
Rails App performance at the limit - Bogdan Gusiev
Rails App performance at the limit - Bogdan GusievRails App performance at the limit - Bogdan Gusiev
Rails App performance at the limit - Bogdan GusievRuby Meditation
 
PPT on javascript ajax and css and some points related to server
PPT on javascript ajax and css and some points related to serverPPT on javascript ajax and css and some points related to server
PPT on javascript ajax and css and some points related to servershivanichourasia01
 
C13,C33,A35 アプリケーション開発プラットフォームとしてのSAP HANA by Makoto Sugishita
C13,C33,A35 アプリケーション開発プラットフォームとしてのSAP HANA by Makoto SugishitaC13,C33,A35 アプリケーション開発プラットフォームとしてのSAP HANA by Makoto Sugishita
C13,C33,A35 アプリケーション開発プラットフォームとしてのSAP HANA by Makoto SugishitaInsight Technology, Inc.
 
DS, BP, EJB, CDI, WTF!? - Graham Charters
DS, BP, EJB, CDI, WTF!? - Graham ChartersDS, BP, EJB, CDI, WTF!? - Graham Charters
DS, BP, EJB, CDI, WTF!? - Graham Chartersmfrancis
 
Neo4j Vision and Roadmap
Neo4j Vision and Roadmap Neo4j Vision and Roadmap
Neo4j Vision and Roadmap Neo4j
 
CV_Nitin_Kumar_2022
CV_Nitin_Kumar_2022CV_Nitin_Kumar_2022
CV_Nitin_Kumar_2022NITIN KUMAR
 
CV NitinKumar_2020
CV NitinKumar_2020CV NitinKumar_2020
CV NitinKumar_2020NITIN KUMAR
 
Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...
Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...
Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...Chester Chen
 
Hands-On Lab: Improve large network visibility and operational efficiency wit...
Hands-On Lab: Improve large network visibility and operational efficiency wit...Hands-On Lab: Improve large network visibility and operational efficiency wit...
Hands-On Lab: Improve large network visibility and operational efficiency wit...CA Technologies
 

Semelhante a JahiaOne - Jahia7: Query and Search API under the Hood (20)

Salesforce meetup | Lightning Web Component
Salesforce meetup | Lightning Web ComponentSalesforce meetup | Lightning Web Component
Salesforce meetup | Lightning Web Component
 
Project Helidon Overview (Japanese)
Project Helidon Overview (Japanese)Project Helidon Overview (Japanese)
Project Helidon Overview (Japanese)
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
 
Spring data requery
Spring data requerySpring data requery
Spring data requery
 
3 rad extensibility-srilakshmi_s_rajesh_k
3 rad extensibility-srilakshmi_s_rajesh_k3 rad extensibility-srilakshmi_s_rajesh_k
3 rad extensibility-srilakshmi_s_rajesh_k
 
Rad Extensibility - Srilakshmi S Rajesh K
Rad Extensibility - Srilakshmi S Rajesh KRad Extensibility - Srilakshmi S Rajesh K
Rad Extensibility - Srilakshmi S Rajesh K
 
Optimizer percona live_ams2015
Optimizer percona live_ams2015Optimizer percona live_ams2015
Optimizer percona live_ams2015
 
Developing Next-Gen Enterprise Web Application
Developing Next-Gen Enterprise Web ApplicationDeveloping Next-Gen Enterprise Web Application
Developing Next-Gen Enterprise Web Application
 
SpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptxSpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptx
 
Best practices in using Salesforce Metadata API
Best practices in using Salesforce Metadata APIBest practices in using Salesforce Metadata API
Best practices in using Salesforce Metadata API
 
How Salesforce.com Uses Hadoop
How Salesforce.com Uses HadoopHow Salesforce.com Uses Hadoop
How Salesforce.com Uses Hadoop
 
Rails App performance at the limit - Bogdan Gusiev
Rails App performance at the limit - Bogdan GusievRails App performance at the limit - Bogdan Gusiev
Rails App performance at the limit - Bogdan Gusiev
 
PPT on javascript ajax and css and some points related to server
PPT on javascript ajax and css and some points related to serverPPT on javascript ajax and css and some points related to server
PPT on javascript ajax and css and some points related to server
 
C13,C33,A35 アプリケーション開発プラットフォームとしてのSAP HANA by Makoto Sugishita
C13,C33,A35 アプリケーション開発プラットフォームとしてのSAP HANA by Makoto SugishitaC13,C33,A35 アプリケーション開発プラットフォームとしてのSAP HANA by Makoto Sugishita
C13,C33,A35 アプリケーション開発プラットフォームとしてのSAP HANA by Makoto Sugishita
 
DS, BP, EJB, CDI, WTF!? - Graham Charters
DS, BP, EJB, CDI, WTF!? - Graham ChartersDS, BP, EJB, CDI, WTF!? - Graham Charters
DS, BP, EJB, CDI, WTF!? - Graham Charters
 
Neo4j Vision and Roadmap
Neo4j Vision and Roadmap Neo4j Vision and Roadmap
Neo4j Vision and Roadmap
 
CV_Nitin_Kumar_2022
CV_Nitin_Kumar_2022CV_Nitin_Kumar_2022
CV_Nitin_Kumar_2022
 
CV NitinKumar_2020
CV NitinKumar_2020CV NitinKumar_2020
CV NitinKumar_2020
 
Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...
Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...
Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...
 
Hands-On Lab: Improve large network visibility and operational efficiency wit...
Hands-On Lab: Improve large network visibility and operational efficiency wit...Hands-On Lab: Improve large network visibility and operational efficiency wit...
Hands-On Lab: Improve large network visibility and operational efficiency wit...
 

Mais de Jahia Solutions Group

The Road ahead: What we see as the future of digital. By Elie Auvray
The Road ahead: What we see as the future of digital. By Elie AuvrayThe Road ahead: What we see as the future of digital. By Elie Auvray
The Road ahead: What we see as the future of digital. By Elie AuvrayJahia Solutions Group
 
Monitoring and Data-Driven Decision Making with Daniel Maher
Monitoring and Data-Driven Decision Making with Daniel MaherMonitoring and Data-Driven Decision Making with Daniel Maher
Monitoring and Data-Driven Decision Making with Daniel MaherJahia Solutions Group
 
The ultimate search of the perfect customer experience By Brian Solis
The ultimate search of the perfect customer experience By Brian SolisThe ultimate search of the perfect customer experience By Brian Solis
The ultimate search of the perfect customer experience By Brian SolisJahia Solutions Group
 
Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...
Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...
Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...Jahia Solutions Group
 
Data for Dummies by Dan Katz, CDO at Safran
Data for Dummies by Dan Katz, CDO at SafranData for Dummies by Dan Katz, CDO at Safran
Data for Dummies by Dan Katz, CDO at SafranJahia Solutions Group
 
Content and commerce: The perfect combo. By Catherine Barba
Content and commerce: The perfect combo. By Catherine BarbaContent and commerce: The perfect combo. By Catherine Barba
Content and commerce: The perfect combo. By Catherine BarbaJahia Solutions Group
 
The power of great customer experience in today’s world. Olivier Mourrieras &...
The power of great customer experience in today’s world. Olivier Mourrieras &...The power of great customer experience in today’s world. Olivier Mourrieras &...
The power of great customer experience in today’s world. Olivier Mourrieras &...Jahia Solutions Group
 
Making Digital simpler. Occam’s Razor, Horses, Zebras, and Evolution
Making Digital simpler. Occam’s Razor, Horses, Zebras, and EvolutionMaking Digital simpler. Occam’s Razor, Horses, Zebras, and Evolution
Making Digital simpler. Occam’s Razor, Horses, Zebras, and EvolutionJahia Solutions Group
 
Elasticsearch powered EDP by Cedric Mailleux
Elasticsearch powered EDP by Cedric MailleuxElasticsearch powered EDP by Cedric Mailleux
Elasticsearch powered EDP by Cedric MailleuxJahia Solutions Group
 
Jahia Cloud Offerings by Julian Maurel & Abass Safoutou
Jahia Cloud Offerings by Julian Maurel & Abass SafoutouJahia Cloud Offerings by Julian Maurel & Abass Safoutou
Jahia Cloud Offerings by Julian Maurel & Abass SafoutouJahia Solutions Group
 
Learn how to go headless with Jahia DX by Serge Huber
Learn how to go headless with Jahia DX by Serge HuberLearn how to go headless with Jahia DX by Serge Huber
Learn how to go headless with Jahia DX by Serge HuberJahia Solutions Group
 
Making the life of patients easier in the healthcare sector thanks to digital...
Making the life of patients easier in the healthcare sector thanks to digital...Making the life of patients easier in the healthcare sector thanks to digital...
Making the life of patients easier in the healthcare sector thanks to digital...Jahia Solutions Group
 
Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...
Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...
Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...Jahia Solutions Group
 
Strategy for content with local and global sites by Romain Gauthier
Strategy for content with local and global sites by Romain GauthierStrategy for content with local and global sites by Romain Gauthier
Strategy for content with local and global sites by Romain GauthierJahia Solutions Group
 
Apache Unomi presentation and update. By Serge Huber, CTO Jahia
Apache Unomi presentation and update. By Serge Huber, CTO JahiaApache Unomi presentation and update. By Serge Huber, CTO Jahia
Apache Unomi presentation and update. By Serge Huber, CTO JahiaJahia Solutions Group
 
Personalisation and Headless in a business context by Lars Petersen
Personalisation and Headless in a business context by Lars PetersenPersonalisation and Headless in a business context by Lars Petersen
Personalisation and Headless in a business context by Lars PetersenJahia Solutions Group
 
Digital Revolution from Silo to Platform by Gilles Babinet
Digital Revolution from Silo to Platform by Gilles BabinetDigital Revolution from Silo to Platform by Gilles Babinet
Digital Revolution from Silo to Platform by Gilles BabinetJahia Solutions Group
 
A customer journey with AI by Xavier Vaccari, Softeam Group
A customer journey with AI by Xavier Vaccari, Softeam GroupA customer journey with AI by Xavier Vaccari, Softeam Group
A customer journey with AI by Xavier Vaccari, Softeam GroupJahia Solutions Group
 
Using CX to unlock Total Experience by David Balko, Tribal
Using CX to unlock Total Experience by David Balko, TribalUsing CX to unlock Total Experience by David Balko, Tribal
Using CX to unlock Total Experience by David Balko, TribalJahia Solutions Group
 
AI-monitor & Marketing Factory, customer case study by Valerie Voci
AI-monitor & Marketing Factory, customer case study by Valerie VociAI-monitor & Marketing Factory, customer case study by Valerie Voci
AI-monitor & Marketing Factory, customer case study by Valerie VociJahia Solutions Group
 

Mais de Jahia Solutions Group (20)

The Road ahead: What we see as the future of digital. By Elie Auvray
The Road ahead: What we see as the future of digital. By Elie AuvrayThe Road ahead: What we see as the future of digital. By Elie Auvray
The Road ahead: What we see as the future of digital. By Elie Auvray
 
Monitoring and Data-Driven Decision Making with Daniel Maher
Monitoring and Data-Driven Decision Making with Daniel MaherMonitoring and Data-Driven Decision Making with Daniel Maher
Monitoring and Data-Driven Decision Making with Daniel Maher
 
The ultimate search of the perfect customer experience By Brian Solis
The ultimate search of the perfect customer experience By Brian SolisThe ultimate search of the perfect customer experience By Brian Solis
The ultimate search of the perfect customer experience By Brian Solis
 
Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...
Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...
Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...
 
Data for Dummies by Dan Katz, CDO at Safran
Data for Dummies by Dan Katz, CDO at SafranData for Dummies by Dan Katz, CDO at Safran
Data for Dummies by Dan Katz, CDO at Safran
 
Content and commerce: The perfect combo. By Catherine Barba
Content and commerce: The perfect combo. By Catherine BarbaContent and commerce: The perfect combo. By Catherine Barba
Content and commerce: The perfect combo. By Catherine Barba
 
The power of great customer experience in today’s world. Olivier Mourrieras &...
The power of great customer experience in today’s world. Olivier Mourrieras &...The power of great customer experience in today’s world. Olivier Mourrieras &...
The power of great customer experience in today’s world. Olivier Mourrieras &...
 
Making Digital simpler. Occam’s Razor, Horses, Zebras, and Evolution
Making Digital simpler. Occam’s Razor, Horses, Zebras, and EvolutionMaking Digital simpler. Occam’s Razor, Horses, Zebras, and Evolution
Making Digital simpler. Occam’s Razor, Horses, Zebras, and Evolution
 
Elasticsearch powered EDP by Cedric Mailleux
Elasticsearch powered EDP by Cedric MailleuxElasticsearch powered EDP by Cedric Mailleux
Elasticsearch powered EDP by Cedric Mailleux
 
Jahia Cloud Offerings by Julian Maurel & Abass Safoutou
Jahia Cloud Offerings by Julian Maurel & Abass SafoutouJahia Cloud Offerings by Julian Maurel & Abass Safoutou
Jahia Cloud Offerings by Julian Maurel & Abass Safoutou
 
Learn how to go headless with Jahia DX by Serge Huber
Learn how to go headless with Jahia DX by Serge HuberLearn how to go headless with Jahia DX by Serge Huber
Learn how to go headless with Jahia DX by Serge Huber
 
Making the life of patients easier in the healthcare sector thanks to digital...
Making the life of patients easier in the healthcare sector thanks to digital...Making the life of patients easier in the healthcare sector thanks to digital...
Making the life of patients easier in the healthcare sector thanks to digital...
 
Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...
Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...
Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...
 
Strategy for content with local and global sites by Romain Gauthier
Strategy for content with local and global sites by Romain GauthierStrategy for content with local and global sites by Romain Gauthier
Strategy for content with local and global sites by Romain Gauthier
 
Apache Unomi presentation and update. By Serge Huber, CTO Jahia
Apache Unomi presentation and update. By Serge Huber, CTO JahiaApache Unomi presentation and update. By Serge Huber, CTO Jahia
Apache Unomi presentation and update. By Serge Huber, CTO Jahia
 
Personalisation and Headless in a business context by Lars Petersen
Personalisation and Headless in a business context by Lars PetersenPersonalisation and Headless in a business context by Lars Petersen
Personalisation and Headless in a business context by Lars Petersen
 
Digital Revolution from Silo to Platform by Gilles Babinet
Digital Revolution from Silo to Platform by Gilles BabinetDigital Revolution from Silo to Platform by Gilles Babinet
Digital Revolution from Silo to Platform by Gilles Babinet
 
A customer journey with AI by Xavier Vaccari, Softeam Group
A customer journey with AI by Xavier Vaccari, Softeam GroupA customer journey with AI by Xavier Vaccari, Softeam Group
A customer journey with AI by Xavier Vaccari, Softeam Group
 
Using CX to unlock Total Experience by David Balko, Tribal
Using CX to unlock Total Experience by David Balko, TribalUsing CX to unlock Total Experience by David Balko, Tribal
Using CX to unlock Total Experience by David Balko, Tribal
 
AI-monitor & Marketing Factory, customer case study by Valerie Voci
AI-monitor & Marketing Factory, customer case study by Valerie VociAI-monitor & Marketing Factory, customer case study by Valerie Voci
AI-monitor & Marketing Factory, customer case study by Valerie Voci
 

Último

Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 

Último (20)

Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 

JahiaOne - Jahia7: Query and Search API under the Hood

  • 1. Digital Factory 7 Search and Query API under the hood #jahiaone Benjamin Papež, QA Architect © 2002 - 2014 Jahia Solutions Group SA
  • 2. Search and Query API under the hood  Overview on used search engine frameworks and API  Jahia's extensions to the Jackrabbit search engine  Maintenance tools and utilities  What's new in Digital Factory 7  Query tuning and general tips  Questions? © 2002 - 2014 Jahia Solutions Group SA
  • 3. Digital Factory: Search&query API under the hood Overview on used search engine frameworks and API © 2002 - 2014 Jahia Solutions Group SA
  • 4. © 2002 - 2014 Jahia Solutions Group SA
  • 5. Jackrabbit extends Lucene  Improve performance for frequent index updates  Parse SQL-2, Xpath, QOM to create Lucene syntax queries  Support hierarchical queries  Support joins  Configure index rules, aggregates, analyzers… © 2002 - 2014 Jahia Solutions Group SA
  • 6. Search and query tags / API in Digital Factory Search tags / API  Site, document repository and subsection search using full text and simple metadata constraints  Returns list of hit objects (URL, excerpt, content node, score, references) sorted by score  HTML form creation via JSP tags. Predefined search result snippet.  OpenSearch and spellcheck support Query tags / API  More flexible, supports all JCR 2.0 query functions (SQL-2, QOM, Xpath)  Returns iterator through found content nodes or row objects  No form creation. Provides some edit mode components. © 2002 - 2014 Jahia Solutions Group SA
  • 7. Query tags and API SQL-2, QOM based  Automatically handles multilingual content specifics  Supports faceting  No support for retrieving excerpts and spellcheck suggestions Xpath based  No automatic multilingual content handling  No support for faceting  Support for retrieving excerpts (with result highlighting) and spellcheck suggestions © 2002 - 2014 Jahia Solutions Group SA
  • 8. Digital Factory: Search&query API under the hood Jahia‘s extensions to the Jackrabbit search engine © 2002 - 2014 Jahia Solutions Group SA
  • 9. Handle multilingual content  Jahia‘s datamodel stores i18n properties in j:translation_* subnodes Path: /sites/ACME-SPACE/home/events/events/event_12 [jnt:event] > jnt:content, mix:title - startDate (date) facetable - endDate (date) facetable - location (string) i18n facetable - eventsType (string) facetable - body (string, richtext) i18n 97455502-b94f-49e9-a675-28a083151514 jcr:primaryType jnt:event startDate [mix:title] mixin - jcr:title (STRING) i18n boost=2.0 jcr:uuid 2012-07-07 00:00:00 endDate 2012-07-08 00:00:00 eventsType show Path: /sites/ACME-SPACE/home/events/events/event_12/j:translation_en 26896702-d44d-47d2-a8ab-2ac0afbf506c jcr:primaryType This implementation choice is not visible from looking at CND or using Content manager/picker and Jahia JCR API. Should also not influence queries! jcr:uuid jnt:translation jcr:language En jcr:title Launch of a new satellite body [raw: length=1318] Lorem ipsum... location Cap canaveral © 2002 - 2014 Jahia Solutions Group SA
  • 10. Handle multilingual content  Indexing modifications  Non-i18n properties are copied down to fields of all translation node‘s Lucene documents  Some properties are excluded (j:locktoken, jcr:lockIsDeep, jcr:lockOwner, jcr:language, jcr:created, jcr:createdBy, jcr:lastModified, jcr:lastModifiedBy, j:lastPublished, j:lastPublishedBy, j:published)  Primary nodetype and mixin types of main node are also copied  Special fields in document: _:TRANSLATION_LANGUAGE and _:TRANSLATED_PARENT (_:PARENT field of translated node document points to grandparent)  A change in the main node state automatically triggers reindexing of translation nodes © 2002 - 2014 Jahia Solutions Group SA
  • 11. Handle multilingual content  Query modifications Adding current language constraint into queries (SQL2, QOM) Excluding translation nodes from child- or descendant-node queries In SameNode or ChildNode join comparisons main and translation nodes are treated as they would be the same nodes (UUID) In search results we filter out multiple results per node (due to translation node) When sorting results, the position of the translation node overrules the position of the main node © 2002 - 2014 Jahia Solutions Group SA
  • 12. Faceting support (SQL-2,QOM)  Integrate Apache Solr  SimpleJahiaJcrFacets based on Solr‘s SimpleFacets class  Reuse solr-common module and use exactly same facet query syntax and result objects as Solr does  facetable fields (set in CND) are prefixed with FACET: in Lucene document  Analyzed with KeywordAnalyzer  Date values are indexed with a Solr internal representation  For hierarchical fields (set in CND) we additionally add a _:FACET_HIERARCHY field with setting all the parent UUID nodes (implemented for categories, could be used for other hierarchies) © 2002 - 2014 Jahia Solutions Group SA
  • 13. Faceting support Facets can be added in Studio or Edit mode or even used programmatically © 2002 - 2014 Jahia Solutions Group SA
  • 14. Count support  JCR specification does not support „select count“  In JCR there is just RangeIterator.getSize()  returns -1 when precise information is not available  Performance/memory overhead as all result objects are created and access rights checked  Digital Factory introduces a rep:count() function: select count AS [rep:count(skipChecks=1;approxCountLimit=1000)] from [jnt:file] where isdescendantnode('/sites/ACME-SPACE') skipChecks to skip ACL and visibility checks approxCountLimit to get an approximate count © 2002 - 2014 Jahia Solutions Group SA
  • 15. Query performance improvements Access control checks Visibility rule checks Publication status check Added special fields to index (_:ACL_UUID, _:CHECK_VISIBILITY, _:PUBLISHED) Possible lazy loading of JCR nodes Same read rights and visibility rules are resolved only once © 2002 - 2014 Jahia Solutions Group SA
  • 16. Improved text extraction Text extraction from documents is done asynchronously triggered by Quartz scheduler Extracted text is stored as property in jnt:content node Prevent recurring text extraction on re-indexing, publication, mark for deletion,… Extract text from richtext field using Apache Tika (remove HTML markup) © 2002 - 2014 Jahia Solutions Group SA
  • 17. Indexing related keywords in content definition (CND) Keyword Description nofulltext property should be excluded from full text search indexed="no" property should not be indexed at all as queries are never done on it scoreboost=2.0 allows specifying the boost factor or "weight" for the property value  Jackrabbit otherwise only controls these indexing settings via indexing_configuration.xml  with the ability to use some rules  better to use that configuration when you want to override our default property definitions  Check: http://wiki.apache.org/jackrabbit/IndexingConfiguration © 2002 - 2014 Jahia Solutions Group SA
  • 18. Digital Factory Query JSP tags jcr:sql <jcr:sql var="result" sql="select * from [jnt:virtualsite] as site where isdescendantnode(site,'/sites')"/> <c:forEach items="${result.nodes}" var="node"> jcr:xpath <jcr:xpath var="result" xpath="/jcr:root/sites/${functions:xpathPathEncode(renderConte xt.site.name)}/${functions:xpathPathEncode(descendantNode)}//e lement(*, jnt:file)[not(@jcr:language)] order by @jcr:lastModified descending"/> <c:forEach items="${result.nodes}" var="node"> © 2002 - 2014 Jahia Solutions Group SA
  • 19. Digital Factory Query JSP tags jcr:qom <jcr:jqom var="result" scope="request"> <query:selector nodeTypeName="nt:base"/> <query:descendantNode path="${renderContext.mainResource.node.path}"/> <query:column propertyName="j:tags" columnName="rep:facet(nodetype=jmix:tagged &key=j:tags&facet.sort=true)"/> </jcr:jqom> <c:forEach items="${result.nodes}" var="node"> © 2002 - 2014 Jahia Solutions Group SA
  • 20. Digital Factory Query REST API Find servlet http://www.jahia.com/community/documentation/jahiamodules/rest.html#Find OpenSearch integration http://www.jahia.com/community/documentation/jahiamodules/search/openSearch.html © 2002 - 2014 Jahia Solutions Group SA
  • 21. Digital Factory Search JSP tags <%@ taglib prefix="s" uri="http://www.jahia.org/tags/search" %> … <c:url value='${url.base}${currentNode.properties.result.node.path}.html' var="searchUrl"/> <s:form method="post" class="simplesearchform" action="${searchUrl}"> <s:site value="${renderContext.site.name}" display="false"/> <s:pagePath value="${searchPath}" display="false" includeChildren="true"/> <s:nodeType value="${searchType}" display="false" /> <s:language value="${renderContext.mainResource.locale}" display="false" /> <s:term id="searchCustomTerm“ class="text-input“ value=“Search…” match="all_words" searchIn="siteContent,tags" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;"/> <s:nodeProperty nodeType="jmix:categorized" name="j:defaultCategory" id="searchCategories"/> <input type="submit“ title=“Submit" value=""/> </s:form> Default search results (can be overridden): modulessearchsrcmainresourcesjnt_searchResultshtmlsearchResults.jsp © 2002 - 2014 Jahia Solutions Group SA
  • 22. Digital Factory Search API RenderContext context = getContext(); CommaSeparatedMultipleValue oneSite = new CommaSeparatedMultipleValue(); oneSite.setValue(“mySite”); CommaSeparatedMultipleValue frenchLang = new CommaSeparatedMultipleValue(); frenchLang.setValue("fr"); SearchCriteria criteria = new SearchCriteria(); criteria.setSites(oneSite); criteria.setLanguages(frenchLang); criteria.getTerms().get(0).setTerm("ACME"); criteria.getTerms().get(0).getFields().setSiteContent(true); List<Hit<?>> hits = searchService.search(criteria, context).getResults(); © 2002 - 2014 Jahia Solutions Group SA
  • 23. Digital Factory Search API  Custom search result excerpts  Custom display (CSS class)  Custom excerpt if search term found in tags, category <param name="excerptProviderClass“ value="org.jahia.services.search.jcr.HTMLExcerpt"/>  Spellchecker (Did you mean)  Creates dictionary per site and language  Used to suggest terms if current search produces too few results.  Spellchecker is able to return more than one suggestion (configurable)  Limitation if multiple search terms are used and multiple have more than one suggestion, then only one suggestion is returned © 2002 - 2014 Jahia Solutions Group SA
  • 24. Digital Factory: Search&query API under the hood Maintenance tools and utilities © 2002 - 2014 Jahia Solutions Group SA
  • 25. Maintenance tools  In the Digital Factory tools area there are some query/search related tools JCR Query tool Very useful to test queries and measure there performance Possibility to run actions on the results (deletion, purge unused versions) Search engine management Check index consistency or trigger re-indexing Document text extractor Extract and show content from uploaded documents © 2002 - 2014 Jahia Solutions Group SA
  • 26. Other query/search utilities  Auto-completion  Service offers auto-completion suggestions for typing in fields with short property values (users, categories, tags,…)  Auto-tagging  Simple solution used in Wise (parse document and automatically assign tags from an uploaded dictionary of tags)  Soon on the forge  Apache Stanbol integration (for entity extraction, auto-tagging)  Digital Factory Crawler (using Nutch)  Similarity search, MoreLikeThis module  Synonym search module © 2002 - 2014 Jahia Solutions Group SA
  • 27. Digital Factory: Search&query API under the hood What‘s new in Digital Factory 7 © 2002 - 2014 Jahia Solutions Group SA
  • 28. Framework version upgrades  Apache Jackrabbit (from 2.2.4 to 2.4.5)  Query related performance improvements and bug fixes  Lucene native sort in SQL-2  Apache Lucene (from 2.4.1 to 3.0.3)  Performance improvement  Less memory usage (no huge byte arrays for norms)  Apache Solr (from 1.3.0 to 3.1.0)  Performance improvement  New range facet type (not only date, also other kind of ranges) © 2002 - 2014 Jahia Solutions Group SA
  • 29. Language dependent analyzers  Indexing of i18n full text properties is now done with the corresponding language specific Lucene analyzer (org.apache.lucene.analysis.*)  Default analyzers can be overridden or new ones added <analyzer-registry> <en_US class="org.apache.lucene.analysis.standard.StandardAnalyzer"> <customizer class="org.mycomp.query.lucene.AnalyzerCustomizer"> <foo>bar</foo> <foo>bar2</foo> <key>value</key> </customizer> </en_US> </analyzer-registry>  Same language dependent analyzers are used to analyze full text search terms in queries © 2002 - 2014 Jahia Solutions Group SA
  • 30. External data provider Same query syntax and API is used to run queries on mapped external data provider Results from different data providers are merged Search also in extended external data © 2002 - 2014 Jahia Solutions Group SA
  • 31. Other new features  Limit Spellchecker dictionary creation to content of particular properties <spellchecker> <include-property>jcr:title</include-property> </spellchecker>  Store extracted text as binary instead of String Before: huge String properties were always loaded to memory, but only used for indexing  JCR Query statistics in tools area List slowest and most popular queries © 2002 - 2014 Jahia Solutions Group SA
  • 32. Digital Factory: Search&query API under the hood Query tuning and general tips © 2002 - 2014 Jahia Solutions Group SA
  • 33. Ensure that queries perform  Test duration of queries with the „JCR Query tool“ using production data or a similar test environment  On Jahia xCM 6.6.x avoid SQL-2 queries with order by a property and a large result-set  Xpath sometimes perform better than SQL-2  Avoid that a query is executed too often (e.g. when using top-pager and bottom-pager we store query result in request)  Avoid cache.expiration=0 on components with queries  Make use of the „JCR Query statistic“ tool to identify slow or often used queries © 2002 - 2014 Jahia Solutions Group SA
  • 34. Use available features Use rep:count() instead of iterating through results If you need a „select distinct“ feature (which is not supported in JCR), you could use faceting programmatically: select ace.[j:roles] AS [rep:facet(facet.mincount=1)] from [jnt:ace] as ace where ace.[j:aceType]='GRANT' and ace.[j:principal] = '"+fPrincipal+"' and isdescendantnode(ace, ['"+site.getPath()+"']) © 2002 - 2014 Jahia Solutions Group SA
  • 35. How to enable multiple search hits per page  Create a template for the nodetype, which should show as distinct search result <news-template j:applyOn="jnt:news" j:defaultTemplate="true“ j:priority="100“ jcr:primaryType="jnt:contentTemplate">  Or trigger URL modification rules rule "Event search result hit" when A search result hit is present - the node is of type jnt:event then Append URL query-parameter "filter" with getEventPageFilter((JCRNodeWrapper)searchHit.getRawHit()) Append URL query-parameter "calStartDate" with (DateFormatUtils.format(((JCRNodeWrapper)searchHit.getRawHit()) .getProperty("startDate").getDate(), "yyyy-MM-dd")) end © 2002 - 2014 Jahia Solutions Group SA
  • 36. Escaping path and fulltext search terms  SQL-2 <jcr:sql var=“result” sql="select * from [jnt:post] as post where isdescendantnode(post, ['${functions:sqlencode(currentNode.path)}']) and contains(post.*, '${functions:sqlencode(searchString)}')"/>  Xpath <jcr:xpath var="result" xpath="/jcr:root/sites/${functions:xpathPathEncode(renderContext. site.name)}/${functions:xpathPathEncode(descendantNode)}//element( *, jnt:file) [jcr:contains(., ${functions:xpathSearchEncode(searchString)})]"/> © 2002 - 2014 Jahia Solutions Group SA
  • 37. Queries on multiple nodetypes Rather (define and) use a common mixin Use joins in SQL-2 / QOM Add constraints on jcr:primaryType property select * from [jnt:content] where ([jcr:primaryType] = 'jnt:contentReference' or [jcr:primaryType] = 'bnt:article' … © 2002 - 2014 Jahia Solutions Group SA
  • 38. Digital Factory: Search&query API under the hood Questions? © 2002 - 2014 Jahia Solutions Group SA
  • 39. Digital Factory: Search&query API under the hood Stop searching, you found it Thank you for your attention #jahiaone © 2002 - 2014 Jahia Solutions Group SA