SlideShare a Scribd company logo
1 of 21
Database Full-text Search....
                                 making it not suck

                                                       Emmanuel Bernard

                                                      > Aaron Walker
                                                       Hibernate Search in Actio
                                          a.walker@base2services.com
                                                     > blog.emmanuelbernard.c

                                                       @aaronwalker
                                                     > twitter.com/emmanuelbe

                                               www.base2services.com

base2Services Pty Ltd 2010
Why Full-text Search

                             • Add a rich search dimension to your
                               persistent domain model
                             • Standard SQL sucks for doing “Google like”
                               searches




base2Services Pty Ltd 2010
Integrate full-text search and persistent
                     domain

                             •   SQL Search vs Full-text Search
                             •   Object model / Full-text Search mismatches
                             •   Hibernate Search architecture Configuration and
                                 Mapping
                             •   Demo
                             •   Full-text based object queries
                             •   Demo
                             •   Some more features

base2Services Pty Ltd 2010
SQL search limits
                             •    Wildcard / word search
                                 • ‘%hibernate%’
                             •   Approximation (or synonym)
                                 • ‘hybernat’
                             •   Proximity
                                 • ‘Java’ close to ‘Persistence’
                             •   Relevance or (result scoring)
                                 • multi-”column” search

base2Services Pty Ltd 2010
Full Text Search
                             •   Search information
                                 •   by word
                                 •   inverted indices (word frequency, position)
                             •   In RDBMS engines
                                 •   portability (proprietary add-on on top of SQL)
                                 •   flexibility
                             •   Standalone engine
                                 •   Apache Lucene(tm) http://lucene.apache.org


base2Services Pty Ltd 2010
Mismatches with a
                                      domain model
                             •   Structural mismatch
                                 •   full text index are text only
                                 •   no reference/association between document
                             •   Synchronisation mismatch
                                 •   keeping index and database up to date
                             •   Retrieval mismatch
                                 •   the index does not store objects
                                 •   certainly not managed objects


base2Services Pty Ltd 2010
Hibernate Search
                             •   Under the Hibernate platform
                                 •   LGPL
                             •   Built on top of Hibernate Core
                             •   Use Apache Lucene(tm) under the hood
                                 •   In top 10 downloaded at Apache
                                 •   Very powerful
                                 •   Somewhat low level
                                 •   easy to use it the “wrong” way
                             •   Solve the mismatches


base2Services Pty Ltd 2010
Architecture
                             •   Transparent indexing through event system (JPA)
                                 •   PERSIST / UPDATE / DELETE
                             •   Convert the object structure into Index structure
                             •   Operation batching per transaction
                                 •   better Lucene performance
                                 •   “ACID”-ity
                                 •   (pluggable scope)
                             •   Backend
                                 •   synchronous / asynchronous mode
                                 •   Lucene, JMS


base2Services Pty Ltd 2010
Architecture (Backend)
                             •   Lucene Directory
                                     Architecture (Backend)
                                 • standalone or symmetric cluster
                                 •   immediate Directory
                                       • Lucene visibility
                                         • standalone or symmetric cluster
                                 •   Can •affect front end runtime
                                           immediate visibility
                                         • Can affect front end runtime
                                                 Hibernate
                                                     +
                                             Hibernate Search
                                                                     Search request
                                                                      Index update
                                                                                                       Lucene
                                                                                                      Directory
                                                                                                       (Index)               Database
                                                                     Search request
                                                                      Index update
                                                 Hibernate
                                                     +
                                             Hibernate Search

                                                       Copyright Red Hat Middleware LLC. Do not redistribute unless authorized | v1.2   10



base2Services Pty Ltd 2010
Architecture (Backend)
                      • JMS (Cluster)(Backend)
                     Architecture
                          • Search processed locally
                     • JMS (Cluster)
                        • •Search processedto a master node (JMS)
                              Changes sent
                                             locally
                        • • synchronous a master node (JMS)
                           Changes sent to indexing (delay)
                        • asynchronous indexing (delay)
                        • •No No front extraextra cost
                              front end
                                        end
                                            cost

                                                               Slave
                                     Hibernate                                                                                Database
                                                                                          Lucene
                                         +                                                Directory
                                                           Search request
                                 Hibernate Search                                          (Index)
                                                                                            Copy



                                      Index update order                                                               Copy


                                                                                      Hibernate              Master             Lucene
                                                                                          +                                    Directory
                                                                                                            Index update
                                                   JMS        Process             Hibernate Search                              (Index)
                                                  queue                                                                         Master


                                 Copyright Red Hat Middleware LLC. Do not redistribute unless authorized | v1.2   11




base2Services Pty Ltd 2010
DEMO
base2Services Pty Ltd 2010
Configuration and
                                        Mapping
                             •   Configuration
                                 •   event listener wiring
                                     •   transparent in Hibernate Annotations
                                 •   Backend configuration
                             •   Mapping: annotation based
                                 •   @Indexed
                                 •   @Field(store, index)
                                 •   @IndexedEmbedded
                                 •   @FieldBridge
                                 •   @Boost / @Analyzer


base2Services Pty Ltd 2010
Mapping example
                             Mapping example
                             @Entity @Indexed(index="indexes/essays")
                             public class Essay {
                                 ...

                                 @Id @DocumentId
                                 public Long getId() { return id; }

                                 @Field(name="Abstract", index=Index.TOKENIZED,
                                     store=Store.YES)
                                 public String getSummary() { return summary; }

                                 @Lob @Field(index=Index.TOKENIZED)
                                 public String getText() { return text; }

                                 @ManyToOne @IndexedEmbedded
                                 public Author getAuthor() { return author; }
                             }
                                          Copyright Red Hat Middleware LLC. Do not redistribute unless authorized | v1.2   13

base2Services Pty Ltd 2010
Fluent Mapping API
                             SearchMapping mapping = new SearchMapping();


                             mapping
                                 .analyzerDef( "ngram", StandardTokenizerFactory.class )
                                       .filter( LowerCaseFilterFactory.class )
                                       .filter( NGramFilterFactory.class )
                                           .param( "minGramSize", "3" )
                                           .param( "maxGramSize", "3" )


                                 .entity(Address.class)
                                       .indexed()
                                       .property("addressId", METHOD)
                                           .documentId()
                                       .property("street1", METHOD)
                                           .field();




base2Services Pty Ltd 2010
Query
                             •   Retrieve objects, not documents
                                 •   no boilerplate conversion code!
                             •   Objects from the Persistence Context
                                 •   same semantic as a JPA-QL or Criteria query
                             •   Use org.hibernate.Query/javax.persistence.Query
                                 •   common API for all your queries
                                 •   pagination support
                                 •   list / scroll / iterate support
                             •   Query on correlated objects
                                 •   “JOIN”-like query


base2Services Pty Ltd 2010
Query example
                             Query example
                             org.apache.lucene.search.Query luceneQuery;
                             String queryString = "summary:Festina Or brand:Seiko"
                             luceneQuery = parser.parse( queryString );

                             org.hibernate.Query fullTextQuery =
                             fullTextSession.createFullTextQuery( luceneQuery );

                             fullTextQuery.setMaxResult(200);

                             List result = fullTextQuery.list();
                             //return a list of managed objects

                             queryString = "title:hybernat~" //Approximate search
                             queryString = ""Hibernate JBoss"~10" //Proximity search
                             queryString = "author.address.city:Atlanta"
                             //correlated search

                                          Copyright Red Hat Middleware LLC. Do not redistribute unless authorized | v1.2   15


base2Services Pty Ltd 2010
More query features
                             •   Fine grained fetching strategy
                             •   Sort by property rather than relevance
                             •   Projection (both field and metadata)
                                 •   metadata: SCORE, ID, BOOST etc
                                 •   no DB / Persistence Context access
                             •   Filters
                                 •   security / temporal data / category
                             •   Total number of results
                             •   New Type Safe Fluent Query API (Experimental)


base2Services Pty Ltd 2010
DEMO
base2Services Pty Ltd 2010
Some more features
                             •   Automatic index optimisation
                             •   Index sharding
                             •   Programmatic Mapping API
                             •   Manual indexing and purging
                                 •   non event-based system
                                 •   Mass Indexing/Re-indexing
                             •   Shared Lucene resources
                             •   Native Lucene access


base2Services Pty Ltd 2010
Full-Text search
                                 without the hassle
                             • Transparent index synchronisation
                             • Automatic Structural conversion through
                               Mapping
                             • No paradigm shift when retrieving data
                             • Clustering capability out of the box
                             • Easier / transparent optimized Lucene use
base2Services Pty Ltd 2010
Questions

                             • http://search.hibernate.org
                             • Hibernate Search in Action (Manning)
                             • http://lucene.apache.org
                             • a.walker@base2services.com
                             • github.com/aaronwalker

base2Services Pty Ltd 2010

More Related Content

What's hot

SharePoint Performance - Tales from the Field
SharePoint Performance - Tales from the FieldSharePoint Performance - Tales from the Field
SharePoint Performance - Tales from the FieldChris McNulty
 
The Art & Sience of Optimization
The Art & Sience of OptimizationThe Art & Sience of Optimization
The Art & Sience of OptimizationHertzel Karbasi
 
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012Arun Gupta
 
SPTechCon SFO 2012 - Building the Perfect SharePoint 2010 Farm by Michael Noel
SPTechCon SFO 2012 - Building the Perfect SharePoint 2010 Farm by Michael NoelSPTechCon SFO 2012 - Building the Perfect SharePoint 2010 Farm by Michael Noel
SPTechCon SFO 2012 - Building the Perfect SharePoint 2010 Farm by Michael NoelMichael Noel
 
Building the Perfect SharePoint 2010 Farm - SharePoint Connections Amsterdam ...
Building the Perfect SharePoint 2010 Farm - SharePoint Connections Amsterdam ...Building the Perfect SharePoint 2010 Farm - SharePoint Connections Amsterdam ...
Building the Perfect SharePoint 2010 Farm - SharePoint Connections Amsterdam ...Michael Noel
 
Lego Cloud SAP Virtualization Week 2012
Lego Cloud SAP Virtualization Week 2012Lego Cloud SAP Virtualization Week 2012
Lego Cloud SAP Virtualization Week 2012Benoit Hudzia
 
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012Arun Gupta
 
The power of hadoop in cloud computing
The power of hadoop in cloud computingThe power of hadoop in cloud computing
The power of hadoop in cloud computingJoey Echeverria
 
SQL Server 2008 Fast Track Data Warehouse
SQL Server 2008 Fast Track Data WarehouseSQL Server 2008 Fast Track Data Warehouse
SQL Server 2008 Fast Track Data WarehouseMark Ginnebaugh
 
SDEC2011 Using Couchbase for social game scaling and speed
SDEC2011 Using Couchbase for social game scaling and speedSDEC2011 Using Couchbase for social game scaling and speed
SDEC2011 Using Couchbase for social game scaling and speedKorea Sdec
 
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, JohannesburgJava EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, JohannesburgArun Gupta
 
Hibernate Search Seam 1.5
Hibernate Search Seam 1.5Hibernate Search Seam 1.5
Hibernate Search Seam 1.5Prasoon Kumar
 
HAD04: Building it Right the First Time; Best Practice SharePoint 2010 Infras...
HAD04: Building it Right the First Time; Best Practice SharePoint 2010 Infras...HAD04: Building it Right the First Time; Best Practice SharePoint 2010 Infras...
HAD04: Building it Right the First Time; Best Practice SharePoint 2010 Infras...Michael Noel
 
Data Science Day New York: The Platform for Big Data
Data Science Day New York: The Platform for Big DataData Science Day New York: The Platform for Big Data
Data Science Day New York: The Platform for Big DataCloudera, Inc.
 
6910 week 3 - web metircs and tools
6910   week 3 - web metircs and tools6910   week 3 - web metircs and tools
6910 week 3 - web metircs and toolsSeth Garske
 
The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011Arun Gupta
 
Hecatonchire kvm forum_2012_benoit_hudzia
Hecatonchire kvm forum_2012_benoit_hudziaHecatonchire kvm forum_2012_benoit_hudzia
Hecatonchire kvm forum_2012_benoit_hudziaBenoit Hudzia
 
GlassFish REST Administration Backend
GlassFish REST Administration BackendGlassFish REST Administration Backend
GlassFish REST Administration BackendArun Gupta
 
Understanding
Understanding Understanding
Understanding Arun Gupta
 
Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7Arun Gupta
 

What's hot (20)

SharePoint Performance - Tales from the Field
SharePoint Performance - Tales from the FieldSharePoint Performance - Tales from the Field
SharePoint Performance - Tales from the Field
 
The Art & Sience of Optimization
The Art & Sience of OptimizationThe Art & Sience of Optimization
The Art & Sience of Optimization
 
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
 
SPTechCon SFO 2012 - Building the Perfect SharePoint 2010 Farm by Michael Noel
SPTechCon SFO 2012 - Building the Perfect SharePoint 2010 Farm by Michael NoelSPTechCon SFO 2012 - Building the Perfect SharePoint 2010 Farm by Michael Noel
SPTechCon SFO 2012 - Building the Perfect SharePoint 2010 Farm by Michael Noel
 
Building the Perfect SharePoint 2010 Farm - SharePoint Connections Amsterdam ...
Building the Perfect SharePoint 2010 Farm - SharePoint Connections Amsterdam ...Building the Perfect SharePoint 2010 Farm - SharePoint Connections Amsterdam ...
Building the Perfect SharePoint 2010 Farm - SharePoint Connections Amsterdam ...
 
Lego Cloud SAP Virtualization Week 2012
Lego Cloud SAP Virtualization Week 2012Lego Cloud SAP Virtualization Week 2012
Lego Cloud SAP Virtualization Week 2012
 
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
 
The power of hadoop in cloud computing
The power of hadoop in cloud computingThe power of hadoop in cloud computing
The power of hadoop in cloud computing
 
SQL Server 2008 Fast Track Data Warehouse
SQL Server 2008 Fast Track Data WarehouseSQL Server 2008 Fast Track Data Warehouse
SQL Server 2008 Fast Track Data Warehouse
 
SDEC2011 Using Couchbase for social game scaling and speed
SDEC2011 Using Couchbase for social game scaling and speedSDEC2011 Using Couchbase for social game scaling and speed
SDEC2011 Using Couchbase for social game scaling and speed
 
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, JohannesburgJava EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
 
Hibernate Search Seam 1.5
Hibernate Search Seam 1.5Hibernate Search Seam 1.5
Hibernate Search Seam 1.5
 
HAD04: Building it Right the First Time; Best Practice SharePoint 2010 Infras...
HAD04: Building it Right the First Time; Best Practice SharePoint 2010 Infras...HAD04: Building it Right the First Time; Best Practice SharePoint 2010 Infras...
HAD04: Building it Right the First Time; Best Practice SharePoint 2010 Infras...
 
Data Science Day New York: The Platform for Big Data
Data Science Day New York: The Platform for Big DataData Science Day New York: The Platform for Big Data
Data Science Day New York: The Platform for Big Data
 
6910 week 3 - web metircs and tools
6910   week 3 - web metircs and tools6910   week 3 - web metircs and tools
6910 week 3 - web metircs and tools
 
The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011The State of Java under Oracle at JCertif 2011
The State of Java under Oracle at JCertif 2011
 
Hecatonchire kvm forum_2012_benoit_hudzia
Hecatonchire kvm forum_2012_benoit_hudziaHecatonchire kvm forum_2012_benoit_hudzia
Hecatonchire kvm forum_2012_benoit_hudzia
 
GlassFish REST Administration Backend
GlassFish REST Administration BackendGlassFish REST Administration Backend
GlassFish REST Administration Backend
 
Understanding
Understanding Understanding
Understanding
 
Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7
 

Viewers also liked

湖南省郴州市天湖休闲生态农业产业园
湖南省郴州市天湖休闲生态农业产业园湖南省郴州市天湖休闲生态农业产业园
湖南省郴州市天湖休闲生态农业产业园shihuali
 
MINHA QUERIDA ARACATACA
MINHA QUERIDA ARACATACAMINHA QUERIDA ARACATACA
MINHA QUERIDA ARACATACAJoab Freire
 
A strategy for an efficient simulation of countcorrent flows in the iron blas...
A strategy for an efficient simulation of countcorrent flows in the iron blas...A strategy for an efficient simulation of countcorrent flows in the iron blas...
A strategy for an efficient simulation of countcorrent flows in the iron blas...Josué Medeiros
 
Acreditación de Hospitales en América Latina y El Caribe
Acreditación de Hospitales en América Latina y El CaribeAcreditación de Hospitales en América Latina y El Caribe
Acreditación de Hospitales en América Latina y El CaribeJose Cabrejos Pita
 
Estratégias para fidelização de clientes em serviços de streaming de música o...
Estratégias para fidelização de clientes em serviços de streaming de música o...Estratégias para fidelização de clientes em serviços de streaming de música o...
Estratégias para fidelização de clientes em serviços de streaming de música o...Diana Fournier
 
Criando aplicações Híbridas com AngularJs, TypeScript e Material Design
Criando aplicações Híbridas com AngularJs, TypeScript e Material DesignCriando aplicações Híbridas com AngularJs, TypeScript e Material Design
Criando aplicações Híbridas com AngularJs, TypeScript e Material DesignAndre Baltieri
 
Desenvolvimento para experiências em real time com foco na segunda tela
Desenvolvimento para experiências em real time com foco na segunda telaDesenvolvimento para experiências em real time com foco na segunda tela
Desenvolvimento para experiências em real time com foco na segunda telaJuliana Chahoud
 
CONING CONTROL AND RECOVERY IMPROVEMENT IN BOTTOM WATER
CONING CONTROL AND RECOVERY IMPROVEMENT IN BOTTOM WATERCONING CONTROL AND RECOVERY IMPROVEMENT IN BOTTOM WATER
CONING CONTROL AND RECOVERY IMPROVEMENT IN BOTTOM WATERMOHD RUZAINI RUSLI
 
Optimización de sistemas y funciones
Optimización de sistemas y funcionesOptimización de sistemas y funciones
Optimización de sistemas y funcionesAnni Pineda
 

Viewers also liked (18)

湖南省郴州市天湖休闲生态农业产业园
湖南省郴州市天湖休闲生态农业产业园湖南省郴州市天湖休闲生态农业产业园
湖南省郴州市天湖休闲生态农业产业园
 
Præsentation
PræsentationPræsentation
Præsentation
 
MINHA QUERIDA ARACATACA
MINHA QUERIDA ARACATACAMINHA QUERIDA ARACATACA
MINHA QUERIDA ARACATACA
 
Santiago tomaico
Santiago tomaicoSantiago tomaico
Santiago tomaico
 
Tic619995
Tic619995Tic619995
Tic619995
 
Decora final
Decora finalDecora final
Decora final
 
A strategy for an efficient simulation of countcorrent flows in the iron blas...
A strategy for an efficient simulation of countcorrent flows in the iron blas...A strategy for an efficient simulation of countcorrent flows in the iron blas...
A strategy for an efficient simulation of countcorrent flows in the iron blas...
 
Acreditación de Hospitales en América Latina y El Caribe
Acreditación de Hospitales en América Latina y El CaribeAcreditación de Hospitales en América Latina y El Caribe
Acreditación de Hospitales en América Latina y El Caribe
 
Estratégias para fidelização de clientes em serviços de streaming de música o...
Estratégias para fidelização de clientes em serviços de streaming de música o...Estratégias para fidelização de clientes em serviços de streaming de música o...
Estratégias para fidelização de clientes em serviços de streaming de música o...
 
Guard your Android
Guard your AndroidGuard your Android
Guard your Android
 
Readme1
Readme1Readme1
Readme1
 
ACCEDA
ACCEDAACCEDA
ACCEDA
 
Microsoft Dynamics NAV FAQ IV
Microsoft Dynamics NAV FAQ IVMicrosoft Dynamics NAV FAQ IV
Microsoft Dynamics NAV FAQ IV
 
Criando aplicações Híbridas com AngularJs, TypeScript e Material Design
Criando aplicações Híbridas com AngularJs, TypeScript e Material DesignCriando aplicações Híbridas com AngularJs, TypeScript e Material Design
Criando aplicações Híbridas com AngularJs, TypeScript e Material Design
 
Desenvolvimento para experiências em real time com foco na segunda tela
Desenvolvimento para experiências em real time com foco na segunda telaDesenvolvimento para experiências em real time com foco na segunda tela
Desenvolvimento para experiências em real time com foco na segunda tela
 
CONING CONTROL AND RECOVERY IMPROVEMENT IN BOTTOM WATER
CONING CONTROL AND RECOVERY IMPROVEMENT IN BOTTOM WATERCONING CONTROL AND RECOVERY IMPROVEMENT IN BOTTOM WATER
CONING CONTROL AND RECOVERY IMPROVEMENT IN BOTTOM WATER
 
Optimización de sistemas y funciones
Optimización de sistemas y funcionesOptimización de sistemas y funciones
Optimización de sistemas y funciones
 
Energía eléctrica.
Energía eléctrica.Energía eléctrica.
Energía eléctrica.
 

Similar to OSDC-2010 Database Full-text Search.... making it not suck

JavaOne 2009 - Full-Text Search: Human Heaven and Database Savior in the Cloud
JavaOne 2009 - Full-Text Search: Human Heaven and Database Savior in the CloudJavaOne 2009 - Full-Text Search: Human Heaven and Database Savior in the Cloud
JavaOne 2009 - Full-Text Search: Human Heaven and Database Savior in the CloudAaron Walker
 
OpenSearchLab and the Lucene Ecosystem
OpenSearchLab and the Lucene EcosystemOpenSearchLab and the Lucene Ecosystem
OpenSearchLab and the Lucene EcosystemGrant Ingersoll
 
Introducing Hibernate OGM: porting JPA applications to NoSQL, Sanne Grinovero...
Introducing Hibernate OGM: porting JPA applications to NoSQL, Sanne Grinovero...Introducing Hibernate OGM: porting JPA applications to NoSQL, Sanne Grinovero...
Introducing Hibernate OGM: porting JPA applications to NoSQL, Sanne Grinovero...OpenBlend society
 
My sql 5.5_product_update
My sql 5.5_product_updateMy sql 5.5_product_update
My sql 5.5_product_updatehenriquesidney
 
SeaJUG May 2012 mybatis
SeaJUG May 2012 mybatisSeaJUG May 2012 mybatis
SeaJUG May 2012 mybatisWill Iverson
 
Chef - Evolving with Infrastructure Automation
Chef - Evolving with Infrastructure AutomationChef - Evolving with Infrastructure Automation
Chef - Evolving with Infrastructure AutomationNathaniel Brown
 
"A Study of I/O and Virtualization Performance with a Search Engine based on ...
"A Study of I/O and Virtualization Performance with a Search Engine based on ..."A Study of I/O and Virtualization Performance with a Search Engine based on ...
"A Study of I/O and Virtualization Performance with a Search Engine based on ...Lucidworks (Archived)
 
Couchbase b jmeetup
Couchbase b jmeetupCouchbase b jmeetup
Couchbase b jmeetupmysqlops
 
Oracle unified directory_11g
Oracle unified directory_11gOracle unified directory_11g
Oracle unified directory_11gOracleIDM
 
Share point 2010 rm best practices
Share point 2010 rm best practicesShare point 2010 rm best practices
Share point 2010 rm best practicesMike Alsup
 
Talk IT_ Oracle_임기성_110907
Talk IT_ Oracle_임기성_110907Talk IT_ Oracle_임기성_110907
Talk IT_ Oracle_임기성_110907Cana Ko
 
Houston Hadoop Meetup Presentation by Vikram Oberoi of Cloudera
Houston Hadoop Meetup Presentation by Vikram Oberoi of ClouderaHouston Hadoop Meetup Presentation by Vikram Oberoi of Cloudera
Houston Hadoop Meetup Presentation by Vikram Oberoi of ClouderaMark Kerzner
 
SPSMEL 2012 - SQL 2012 AlwaysOn Availability Groups for SharePoint 2010 / 2013
SPSMEL 2012 - SQL 2012 AlwaysOn Availability Groups for SharePoint 2010 / 2013SPSMEL 2012 - SQL 2012 AlwaysOn Availability Groups for SharePoint 2010 / 2013
SPSMEL 2012 - SQL 2012 AlwaysOn Availability Groups for SharePoint 2010 / 2013Michael Noel
 
NOSQL, CouchDB, and the Cloud
NOSQL, CouchDB, and the CloudNOSQL, CouchDB, and the Cloud
NOSQL, CouchDB, and the Cloudboorad
 
Hadoop in the Enterprise - Dr. Amr Awadallah @ Microstrategy World 2011
Hadoop in the Enterprise - Dr. Amr Awadallah @ Microstrategy World 2011Hadoop in the Enterprise - Dr. Amr Awadallah @ Microstrategy World 2011
Hadoop in the Enterprise - Dr. Amr Awadallah @ Microstrategy World 2011Cloudera, Inc.
 
Talk IT_ Oracle_이범_110727
Talk IT_ Oracle_이범_110727Talk IT_ Oracle_이범_110727
Talk IT_ Oracle_이범_110727Cana Ko
 

Similar to OSDC-2010 Database Full-text Search.... making it not suck (20)

JavaOne 2009 - Full-Text Search: Human Heaven and Database Savior in the Cloud
JavaOne 2009 - Full-Text Search: Human Heaven and Database Savior in the CloudJavaOne 2009 - Full-Text Search: Human Heaven and Database Savior in the Cloud
JavaOne 2009 - Full-Text Search: Human Heaven and Database Savior in the Cloud
 
OpenSearchLab and the Lucene Ecosystem
OpenSearchLab and the Lucene EcosystemOpenSearchLab and the Lucene Ecosystem
OpenSearchLab and the Lucene Ecosystem
 
Introducing Hibernate OGM: porting JPA applications to NoSQL, Sanne Grinovero...
Introducing Hibernate OGM: porting JPA applications to NoSQL, Sanne Grinovero...Introducing Hibernate OGM: porting JPA applications to NoSQL, Sanne Grinovero...
Introducing Hibernate OGM: porting JPA applications to NoSQL, Sanne Grinovero...
 
My sql 5.5_product_update
My sql 5.5_product_updateMy sql 5.5_product_update
My sql 5.5_product_update
 
SeaJUG May 2012 mybatis
SeaJUG May 2012 mybatisSeaJUG May 2012 mybatis
SeaJUG May 2012 mybatis
 
Chef - Evolving with Infrastructure Automation
Chef - Evolving with Infrastructure AutomationChef - Evolving with Infrastructure Automation
Chef - Evolving with Infrastructure Automation
 
"A Study of I/O and Virtualization Performance with a Search Engine based on ...
"A Study of I/O and Virtualization Performance with a Search Engine based on ..."A Study of I/O and Virtualization Performance with a Search Engine based on ...
"A Study of I/O and Virtualization Performance with a Search Engine based on ...
 
Couchbase b jmeetup
Couchbase b jmeetupCouchbase b jmeetup
Couchbase b jmeetup
 
Oracle unified directory_11g
Oracle unified directory_11gOracle unified directory_11g
Oracle unified directory_11g
 
What's new in Exchange 2013?
What's new in Exchange 2013?What's new in Exchange 2013?
What's new in Exchange 2013?
 
Share point 2010 rm best practices
Share point 2010 rm best practicesShare point 2010 rm best practices
Share point 2010 rm best practices
 
Otago vre-overview
Otago vre-overviewOtago vre-overview
Otago vre-overview
 
MySQL高可用
MySQL高可用MySQL高可用
MySQL高可用
 
Alfresco cmis
Alfresco  cmisAlfresco  cmis
Alfresco cmis
 
Talk IT_ Oracle_임기성_110907
Talk IT_ Oracle_임기성_110907Talk IT_ Oracle_임기성_110907
Talk IT_ Oracle_임기성_110907
 
Houston Hadoop Meetup Presentation by Vikram Oberoi of Cloudera
Houston Hadoop Meetup Presentation by Vikram Oberoi of ClouderaHouston Hadoop Meetup Presentation by Vikram Oberoi of Cloudera
Houston Hadoop Meetup Presentation by Vikram Oberoi of Cloudera
 
SPSMEL 2012 - SQL 2012 AlwaysOn Availability Groups for SharePoint 2010 / 2013
SPSMEL 2012 - SQL 2012 AlwaysOn Availability Groups for SharePoint 2010 / 2013SPSMEL 2012 - SQL 2012 AlwaysOn Availability Groups for SharePoint 2010 / 2013
SPSMEL 2012 - SQL 2012 AlwaysOn Availability Groups for SharePoint 2010 / 2013
 
NOSQL, CouchDB, and the Cloud
NOSQL, CouchDB, and the CloudNOSQL, CouchDB, and the Cloud
NOSQL, CouchDB, and the Cloud
 
Hadoop in the Enterprise - Dr. Amr Awadallah @ Microstrategy World 2011
Hadoop in the Enterprise - Dr. Amr Awadallah @ Microstrategy World 2011Hadoop in the Enterprise - Dr. Amr Awadallah @ Microstrategy World 2011
Hadoop in the Enterprise - Dr. Amr Awadallah @ Microstrategy World 2011
 
Talk IT_ Oracle_이범_110727
Talk IT_ Oracle_이범_110727Talk IT_ Oracle_이범_110727
Talk IT_ Oracle_이범_110727
 

More from Aaron Walker

Just Enough Infrastructure
Just Enough InfrastructureJust Enough Infrastructure
Just Enough InfrastructureAaron Walker
 
Amazon VPC Lattice: The Service Mesh you actually want!!
Amazon VPC Lattice: The Service Mesh you actually want!!Amazon VPC Lattice: The Service Mesh you actually want!!
Amazon VPC Lattice: The Service Mesh you actually want!!Aaron Walker
 
Berlin AWS User Group - 10 May 2022
Berlin AWS User Group - 10 May 2022 Berlin AWS User Group - 10 May 2022
Berlin AWS User Group - 10 May 2022 Aaron Walker
 
Do you REALLY know what is going on in your AWS Accounts?
Do you REALLY know what is going on in your AWS Accounts?Do you REALLY know what is going on in your AWS Accounts?
Do you REALLY know what is going on in your AWS Accounts?Aaron Walker
 
Berlin CI/CD Meetup - Reusable Serverless CI/CD pipelines with Jenkins
Berlin CI/CD Meetup - Reusable Serverless CI/CD pipelines with JenkinsBerlin CI/CD Meetup - Reusable Serverless CI/CD pipelines with Jenkins
Berlin CI/CD Meetup - Reusable Serverless CI/CD pipelines with JenkinsAaron Walker
 
Meetup - AWS Berlin October 2018 - Account Management and AWS Organizations
Meetup - AWS Berlin October 2018 - Account Management and AWS OrganizationsMeetup - AWS Berlin October 2018 - Account Management and AWS Organizations
Meetup - AWS Berlin October 2018 - Account Management and AWS OrganizationsAaron Walker
 
Meetup AWS Berlin July 2018 - You're writing WAY too much CloudFormation
Meetup AWS Berlin July 2018 - You're writing WAY too much CloudFormationMeetup AWS Berlin July 2018 - You're writing WAY too much CloudFormation
Meetup AWS Berlin July 2018 - You're writing WAY too much CloudFormationAaron Walker
 
Berlin DevOps Meetup 2018-07-12
Berlin DevOps Meetup 2018-07-12Berlin DevOps Meetup 2018-07-12
Berlin DevOps Meetup 2018-07-12Aaron Walker
 
Enabling your DevOps culture with AWS-webinar
Enabling your DevOps culture with AWS-webinarEnabling your DevOps culture with AWS-webinar
Enabling your DevOps culture with AWS-webinarAaron Walker
 
Enabling your DevOps culture with AWS
Enabling your DevOps culture with AWSEnabling your DevOps culture with AWS
Enabling your DevOps culture with AWSAaron Walker
 
OSDC 2010 - You've Got Cucumber in my Java and it Tastes Great
OSDC 2010 - You've Got Cucumber in my Java and it Tastes GreatOSDC 2010 - You've Got Cucumber in my Java and it Tastes Great
OSDC 2010 - You've Got Cucumber in my Java and it Tastes GreatAaron Walker
 
Java EE Behave!!!!
Java EE Behave!!!!Java EE Behave!!!!
Java EE Behave!!!!Aaron Walker
 

More from Aaron Walker (12)

Just Enough Infrastructure
Just Enough InfrastructureJust Enough Infrastructure
Just Enough Infrastructure
 
Amazon VPC Lattice: The Service Mesh you actually want!!
Amazon VPC Lattice: The Service Mesh you actually want!!Amazon VPC Lattice: The Service Mesh you actually want!!
Amazon VPC Lattice: The Service Mesh you actually want!!
 
Berlin AWS User Group - 10 May 2022
Berlin AWS User Group - 10 May 2022 Berlin AWS User Group - 10 May 2022
Berlin AWS User Group - 10 May 2022
 
Do you REALLY know what is going on in your AWS Accounts?
Do you REALLY know what is going on in your AWS Accounts?Do you REALLY know what is going on in your AWS Accounts?
Do you REALLY know what is going on in your AWS Accounts?
 
Berlin CI/CD Meetup - Reusable Serverless CI/CD pipelines with Jenkins
Berlin CI/CD Meetup - Reusable Serverless CI/CD pipelines with JenkinsBerlin CI/CD Meetup - Reusable Serverless CI/CD pipelines with Jenkins
Berlin CI/CD Meetup - Reusable Serverless CI/CD pipelines with Jenkins
 
Meetup - AWS Berlin October 2018 - Account Management and AWS Organizations
Meetup - AWS Berlin October 2018 - Account Management and AWS OrganizationsMeetup - AWS Berlin October 2018 - Account Management and AWS Organizations
Meetup - AWS Berlin October 2018 - Account Management and AWS Organizations
 
Meetup AWS Berlin July 2018 - You're writing WAY too much CloudFormation
Meetup AWS Berlin July 2018 - You're writing WAY too much CloudFormationMeetup AWS Berlin July 2018 - You're writing WAY too much CloudFormation
Meetup AWS Berlin July 2018 - You're writing WAY too much CloudFormation
 
Berlin DevOps Meetup 2018-07-12
Berlin DevOps Meetup 2018-07-12Berlin DevOps Meetup 2018-07-12
Berlin DevOps Meetup 2018-07-12
 
Enabling your DevOps culture with AWS-webinar
Enabling your DevOps culture with AWS-webinarEnabling your DevOps culture with AWS-webinar
Enabling your DevOps culture with AWS-webinar
 
Enabling your DevOps culture with AWS
Enabling your DevOps culture with AWSEnabling your DevOps culture with AWS
Enabling your DevOps culture with AWS
 
OSDC 2010 - You've Got Cucumber in my Java and it Tastes Great
OSDC 2010 - You've Got Cucumber in my Java and it Tastes GreatOSDC 2010 - You've Got Cucumber in my Java and it Tastes Great
OSDC 2010 - You've Got Cucumber in my Java and it Tastes Great
 
Java EE Behave!!!!
Java EE Behave!!!!Java EE Behave!!!!
Java EE Behave!!!!
 

Recently uploaded

Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 

Recently uploaded (20)

Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 

OSDC-2010 Database Full-text Search.... making it not suck

  • 1. Database Full-text Search.... making it not suck Emmanuel Bernard > Aaron Walker Hibernate Search in Actio a.walker@base2services.com > blog.emmanuelbernard.c @aaronwalker > twitter.com/emmanuelbe www.base2services.com base2Services Pty Ltd 2010
  • 2. Why Full-text Search • Add a rich search dimension to your persistent domain model • Standard SQL sucks for doing “Google like” searches base2Services Pty Ltd 2010
  • 3. Integrate full-text search and persistent domain • SQL Search vs Full-text Search • Object model / Full-text Search mismatches • Hibernate Search architecture Configuration and Mapping • Demo • Full-text based object queries • Demo • Some more features base2Services Pty Ltd 2010
  • 4. SQL search limits • Wildcard / word search • ‘%hibernate%’ • Approximation (or synonym) • ‘hybernat’ • Proximity • ‘Java’ close to ‘Persistence’ • Relevance or (result scoring) • multi-”column” search base2Services Pty Ltd 2010
  • 5. Full Text Search • Search information • by word • inverted indices (word frequency, position) • In RDBMS engines • portability (proprietary add-on on top of SQL) • flexibility • Standalone engine • Apache Lucene(tm) http://lucene.apache.org base2Services Pty Ltd 2010
  • 6. Mismatches with a domain model • Structural mismatch • full text index are text only • no reference/association between document • Synchronisation mismatch • keeping index and database up to date • Retrieval mismatch • the index does not store objects • certainly not managed objects base2Services Pty Ltd 2010
  • 7. Hibernate Search • Under the Hibernate platform • LGPL • Built on top of Hibernate Core • Use Apache Lucene(tm) under the hood • In top 10 downloaded at Apache • Very powerful • Somewhat low level • easy to use it the “wrong” way • Solve the mismatches base2Services Pty Ltd 2010
  • 8. Architecture • Transparent indexing through event system (JPA) • PERSIST / UPDATE / DELETE • Convert the object structure into Index structure • Operation batching per transaction • better Lucene performance • “ACID”-ity • (pluggable scope) • Backend • synchronous / asynchronous mode • Lucene, JMS base2Services Pty Ltd 2010
  • 9. Architecture (Backend) • Lucene Directory Architecture (Backend) • standalone or symmetric cluster • immediate Directory • Lucene visibility • standalone or symmetric cluster • Can •affect front end runtime immediate visibility • Can affect front end runtime Hibernate + Hibernate Search Search request Index update Lucene Directory (Index) Database Search request Index update Hibernate + Hibernate Search Copyright Red Hat Middleware LLC. Do not redistribute unless authorized | v1.2 10 base2Services Pty Ltd 2010
  • 10. Architecture (Backend) • JMS (Cluster)(Backend) Architecture • Search processed locally • JMS (Cluster) • •Search processedto a master node (JMS) Changes sent locally • • synchronous a master node (JMS) Changes sent to indexing (delay) • asynchronous indexing (delay) • •No No front extraextra cost front end end cost Slave Hibernate Database Lucene + Directory Search request Hibernate Search (Index) Copy Index update order Copy Hibernate Master Lucene + Directory Index update JMS Process Hibernate Search (Index) queue Master Copyright Red Hat Middleware LLC. Do not redistribute unless authorized | v1.2 11 base2Services Pty Ltd 2010
  • 12. Configuration and Mapping • Configuration • event listener wiring • transparent in Hibernate Annotations • Backend configuration • Mapping: annotation based • @Indexed • @Field(store, index) • @IndexedEmbedded • @FieldBridge • @Boost / @Analyzer base2Services Pty Ltd 2010
  • 13. Mapping example Mapping example @Entity @Indexed(index="indexes/essays") public class Essay { ... @Id @DocumentId public Long getId() { return id; } @Field(name="Abstract", index=Index.TOKENIZED, store=Store.YES) public String getSummary() { return summary; } @Lob @Field(index=Index.TOKENIZED) public String getText() { return text; } @ManyToOne @IndexedEmbedded public Author getAuthor() { return author; } } Copyright Red Hat Middleware LLC. Do not redistribute unless authorized | v1.2 13 base2Services Pty Ltd 2010
  • 14. Fluent Mapping API SearchMapping mapping = new SearchMapping(); mapping .analyzerDef( "ngram", StandardTokenizerFactory.class ) .filter( LowerCaseFilterFactory.class ) .filter( NGramFilterFactory.class ) .param( "minGramSize", "3" ) .param( "maxGramSize", "3" ) .entity(Address.class) .indexed() .property("addressId", METHOD) .documentId() .property("street1", METHOD) .field(); base2Services Pty Ltd 2010
  • 15. Query • Retrieve objects, not documents • no boilerplate conversion code! • Objects from the Persistence Context • same semantic as a JPA-QL or Criteria query • Use org.hibernate.Query/javax.persistence.Query • common API for all your queries • pagination support • list / scroll / iterate support • Query on correlated objects • “JOIN”-like query base2Services Pty Ltd 2010
  • 16. Query example Query example org.apache.lucene.search.Query luceneQuery; String queryString = "summary:Festina Or brand:Seiko" luceneQuery = parser.parse( queryString ); org.hibernate.Query fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery ); fullTextQuery.setMaxResult(200); List result = fullTextQuery.list(); //return a list of managed objects queryString = "title:hybernat~" //Approximate search queryString = ""Hibernate JBoss"~10" //Proximity search queryString = "author.address.city:Atlanta" //correlated search Copyright Red Hat Middleware LLC. Do not redistribute unless authorized | v1.2 15 base2Services Pty Ltd 2010
  • 17. More query features • Fine grained fetching strategy • Sort by property rather than relevance • Projection (both field and metadata) • metadata: SCORE, ID, BOOST etc • no DB / Persistence Context access • Filters • security / temporal data / category • Total number of results • New Type Safe Fluent Query API (Experimental) base2Services Pty Ltd 2010
  • 19. Some more features • Automatic index optimisation • Index sharding • Programmatic Mapping API • Manual indexing and purging • non event-based system • Mass Indexing/Re-indexing • Shared Lucene resources • Native Lucene access base2Services Pty Ltd 2010
  • 20. Full-Text search without the hassle • Transparent index synchronisation • Automatic Structural conversion through Mapping • No paradigm shift when retrieving data • Clustering capability out of the box • Easier / transparent optimized Lucene use base2Services Pty Ltd 2010
  • 21. Questions • http://search.hibernate.org • Hibernate Search in Action (Manning) • http://lucene.apache.org • a.walker@base2services.com • github.com/aaronwalker base2Services Pty Ltd 2010