SlideShare a Scribd company logo
1 of 113
Download to read offline
Solr integration

April 20, 2012
Ard Schrijvers • a.schrijvers@onehippo.com /
ard@apache.org
About me:
              Ard Schrijvers

1. Working at Hippo since 2001
2. Email: a.schrijvers@onehippo.com
           ard@apache.org
3. Worked primarily on:
    1. HST
    2. Hippo Repository / Jackrabbit
    3. Lucene
    4. Cocoon
    5. Slide
4. Apache committer of Jackrabbit and Cocoon
Outline


1. The current search (HST / repo) architecture
Outline


1. The current search (HST / repo) architecture
2. The current problems / shortcomings / mismatches
Outline


1. The current search (HST / repo) architecture
2. The current problems / shortcomings / mismatches
3. What we are trying to improve, the objectives
Outline


1. The current search (HST / repo) architecture
2. The current problems / shortcomings / mismatches
3. What we are trying to improve, the objectives
4. Solr integration to rescue
Outline


1. The current search (HST / repo) architecture
2. The current problems / shortcomings / mismatches
3. What we are trying to improve, the objectives
4. Solr integration to rescue
5. A very fast demo
Outline


1. The current search (HST / repo) architecture
2. The current problems / shortcomings / mismatches
3. What we are trying to improve, the objectives
4. Solr integration to rescue
5. A very fast demo
6. Wrap up
Outline


1. The current search (HST / repo) architecture
2. The current problems / shortcomings / mismatches
3. What we are trying to improve, the objectives
4. Solr integration to rescue
5. A very fast demo
6. Wrap up
7. Questions
Current search architecture
Current search architecture


                        So
                 An HSTQuery
               is translated to an
                  XPath query
Which is delegated to the repository that returns a
               JCR NodeIterator
          which the HST binds back to
                  HippoBean's
Current search architecture


  That sounds doable and not to complex

                  is it?
Current search architecture

Well, it is .......
Current search architecture

Well, it is ....... very complex
Current search architecture

Reasons:

1. Back in the days when Jackrabbit 1 started, Lucene was at
   version 1.4
Current search architecture

Reasons:

1. Back in the days when Jackrabbit 1 started, Lucene was at
   version 1.4
2. The first JSR-170 spec imposed some very harsh
   constraints : A save must result in directly updated search
   results
Current search architecture

Reasons:

1. Back in the days when Jackrabbit 1 started, Lucene was at
   version 1.4
2. The first JSR-170 spec imposed some very harsh
   constraints : A save must result in directly updated search
   results
3. Support for XPath / SQL was needed. However, Lucene
   likes flattened data, JCR with XPath / SQL is all about
   hierarchical data
Current search architecture

Reasons:

1. Back in the days when Jackrabbit 1 started, Lucene was at
   version 1.4
2. The first JSR-170 spec imposed some very harsh
   constraints : A save must result in directly updated search
   results
3. Support for XPath / SQL was needed. However, Lucene
   likes flattened data, JCR with XPath / SQL is all about
   hierarchical data
4. JCR Nodes != Documents
Outline


1. The current search (HST / repo) architecture
2. The current problems / shortcomings / mismatches
3. What we are trying to improve, the objectives
4. Solr integration to rescue
5. A short HOWTO as developer
6. A very fast demo
7. Wrap up
8. Questions
Current problems / shortcomings /
            mismatches
1. JCR Nodes are indexed instead of Documents
   (#nodes >> #documents)
Current problems / shortcomings /
            mismatches
1. JCR Nodes are indexed instead of Documents
   (#nodes >> #documents)
2. A search result only returns Nodes (Rows) : what if you
   want something else, like auto-completion
Current problems / shortcomings /
            mismatches
1. JCR Nodes are indexed instead of Documents
   (#nodes >> #documents)
2. A search result only returns Nodes (Rows) : what if you
   want something else, like auto-completion
3. Very hard and very limited to customize
Current problems / shortcomings /
            mismatches
1. JCR Nodes are indexed instead of Documents
   (#nodes >> #documents)
2. A search result only returns Nodes (Rows) : what if you
   want something else, like auto-completion
3. Very hard and very limited to customize
4. A single index for an entire workspace
Current problems / shortcomings /
            mismatches
1. JCR Nodes are indexed instead of Documents
   (#nodes >> #documents)
2. A search result only returns Nodes (Rows) : what if you
   want something else, like auto-completion
3. Very hard and very limited to customize
4. A single index for an entire workspace
5. Support for very complex XPath / SQL queries at a price
   of CPU, Memory and complexity
Current problems / shortcomings /
            mismatches
1. JCR Nodes are indexed instead of Documents
   (#nodes >> #documents)
2. A search result only returns Nodes (Rows) : what if you
   want something else, like auto-completion
3. Very hard and very limited to customize
4. A single index for an entire workspace
5. Support for very complex XPath / SQL queries at a price
   of CPU, Memory and complexity
6. Only JCR Nodes and properties are indexed : no 'derived'
   field indexes
Current problems / shortcomings /
            mismatches
1. JCR Nodes are indexed instead of Documents
   (#nodes >> #documents)
2. A search result only returns Nodes (Rows) : what if you
   want something else, like auto-completion
3. Very hard and very limited to customize
4. A single index for an entire workspace
5. Support for very complex XPath / SQL queries at a price
   of CPU, Memory and complexity
6. Only JCR Nodes and properties are indexed : no 'derived'
   field indexes
7. To index external sources, the sources need to be stored in
   the repository
Current problems / shortcomings /
            mismatches
1. JCR Nodes are indexed instead of Documents
   (#nodes >> #documents)
2. A search result only returns Nodes (Rows) : what if you
   want something else, like auto-completion
3. Very hard and very limited to customize
4. A single index for an entire workspace
5. Support for very complex XPath / SQL queries at a price
   of CPU, Memory and complexity
6. Only JCR Nodes and properties are indexed : no 'derived'
   field indexes
7. To index external sources, the sources need to be stored in
   the repository
8. Range queries (and others) easily blow up
Current problems / shortcomings /
            mismatches
1. JCR Nodes are indexed instead of Documents
   (#nodes >> #documents)
2. A search result only returns Nodes (Rows) : what if you
   want something else, like auto-completion
3. Very hard and very limited to customize
4. A single index for an entire workspace
5. Support for very complex XPath / SQL queries at a price
   of CPU, Memory and complexity
6. Only JCR Nodes and properties are indexed : no 'derived'
   field indexes
7. To index external sources, the sources need to be stored in
   the repository
8. Range queries (and others) easily blow up
9. Getting the number of hits is complex
Current problems / shortcomings /
             mismatches
                       Extra problem

                         JCR Nodes
                             !=
                         Documents


For example : A news document contains a link to an author
document : Through the author name, the news document
should be found
Outline


1. The current search (HST / repo) architecture
2. The current problems / shortcomings / mismatches
3. What we are trying to improve, the objectives
4. Solr integration to rescue
5. A very fast demo
6. Wrap up
7. Questions
Objectives

 1. Fix all the 9+ problems / shortcomings/ mismatches from
    previous slides
 2. Easy to use and customize
 3. Satisfied customers
 4. Satisfied partners
 5. Scalable searches : CPU, memory and large document
    numbers
 6. Document oriented
 7. Integration with HST ContentBeans (HippoBeans)
 8. Index external sources
 9. Control the SIZE of the index yourself
10. Don't invent but integrate ( with out-of-the-box features
    supported by a large community)
Objective: Fix all the 9 problems /
shortcomings/ mismatches from
         previous slides
Objective: Fix all the 9 problems /
  shortcomings/ mismatches from
           previous slides
Easy:


           Solr integration to rescue
Objective: Easy to use and
        customize
Objective: Easy to use and
        customize



   YOU will be in the driver seat
Objective: Easy to use and
        customize
Objective: Easy to use and
        customize
Objective: Easy to use and
               customize
No more complete dependence on what the sometimes not so
smAR&D Hippo team thought was good for YOU
Objective : Easy to use and
        customize
Objective: Easy to use and
                customize
You decide 'from where', 'what', 'how' and 'when' to index
Objective: Easy to use and
                customize
You decide 'from where', 'what', 'how' and 'when' to index
 1. from where: which sources (jcr, webpages, database,
    noSQL store, nuxeo, alfresco, anything)
Objective: Easy to use and
                customize
You decide 'from where', 'what', 'how' and 'when' to index
 1. from where: which sources (jcr, webpages, database,
    noSQL store, nuxeo, alfresco, anything)
 2. what : which parts of a document (not jcr node) or external
    source
Objective: Easy to use and
                customize
You decide 'from where', 'what', 'how' and 'when' to index
 1. from where: which sources (jcr, webpages, database,
    noSQL store, nuxeo, alfresco, anything)
 2. what : which parts of a document (not jcr node) or external
    source
 3. how :
     1. which analyzer,
     2. index on document level, property level or both
     3. store the text
Objective: Easy to use and
                customize
You decide 'from where', 'what', 'how' and 'when' to index
 1. from where: which sources (jcr, webpages, database,
    noSQL store, nuxeo, alfresco, anything)
 2. what : which parts of a document (not jcr node) or external
    source
 3. how :
     1. which analyzer,
     2. index on document level, property level or both
     3. store the text
 4. when : when do you want to index
Objective: Easy to use and
         customize


But of course, out-of-the-box support and tooling
          ready to be used by YOU
Objective: Easy to use and
               customize


      But of course, out-of-the-box support and tooling
                 ready to be used by YOU

1. Default hippo repository indexer & observer
Objective: Easy to use and
               customize


      But of course, out-of-the-box support and tooling
                ready to be used by YOU

1. Default hippo repository indexer & observer
2. ContentBean (HippoBean) annotations for indexing
Objective: Easy to use and
               customize


      But of course, out-of-the-box support and tooling
                ready to be used by YOU

1. Default hippo repository indexer & observer
2. ContentBean (HippoBean) annotations for indexing
3. Binding search results to ContentBean's
Objective: Easy to use and
               customize


      But of course, out-of-the-box support and tooling
                ready to be used by YOU

1. Default hippo repository indexer & observer
2. ContentBean (HippoBean) annotations for indexing
3. Binding search results to ContentBean's
4. Deployment support
Objective: Easy to use and
               customize


      But of course, out-of-the-box support and tooling
                ready to be used by YOU

1. Default hippo repository indexer & observer
2. ContentBean (HippoBean) annotations for indexing
3. Binding search results to ContentBean's
4. Deployment support
5. Clustering support
Objective: Satisfied customers
Objective: Satisfied customers




            HOW?
Objective: Satisfied customers




            EASY
Objective: Satisfied customers




   Most likely they just will be satisfied
Objective: Satisfied customers

If they are not satisfied enough you can:

 1. Easily customize it (aka tune it until 'je een ons weegt')
 2. Hire anyone with Solr experience : All our partners have
    Solr experience
Objective: Satisfied customers

Still not satisfied?



    Let them pay too much for a Google Search appliance,
   Autonomy or any of the other 'useless to pay for software'
Objective: Satisfied partners
Objective: Satisfied partners




Although on thin ice here, I strongly believe in this because:
Objective: Satisfied partners


1. Our partners frequently have good knowledge about Solr
Objective: Satisfied partners


1. Our partners frequently have good knowledge about Solr
2. Our partners depend less on the current search limitations
Objective: Satisfied partners


1. Our partners frequently have good knowledge about Solr
2. Our partners depend less on the current search limitations
3. Our partners can pitch with their Solr knowledge
Objective: Satisfied partners


1. Our partners frequently have good knowledge about Solr
2. Our partners depend less on the current search limitations
3. Our partners can pitch with their Solr knowledge
4. Our partners can sell more Hippo implementations
Objective: Satisfied partners


1. Our partners frequently have good knowledge about Solr
2. Our partners depend less on the current search limitations
3. Our partners can pitch with their Solr knowledge
4. Our partners can sell more Hippo implementations
5. Our partners will earn more on Hippo and have happier
   developers
Objective: Satisfied partners


1. Our partners frequently have good knowledge about Solr
2. Our partners depend less on the current search limitations
3. Our partners can pitch with their Solr knowledge
4. Our partners can sell more Hippo implementations
5. Our partners will earn more on Hippo and have happier
   developers
6. Hippo will earn more through HES: Which will satisfy
   partners again, because Hippo can spend more on AR&D
   ==> more features
Objective: Scalable searches
Objective: Scalable searches

1. Using Solr to do the searches
Objective: Scalable searches

1. Using Solr to do the searches
2. Not the complex JCR hierarchical searches
Objective: Scalable searches

1. Using Solr to do the searches
2. Not the complex JCR hierarchical searches
3. Document oriented instead of JCR Nodes ( #docs <<
   #nodes)
Objective: Document oriented
Objective: Document oriented



     What do we want to search for?
Objective: Document oriented



           Exactly,

         Documents!!
Objective: Document oriented



          A Document
               ==
          A HippoBean
               !=
           JCR Node
Objective: Document oriented




          So let's index
Objective: Document oriented




          So let's index

          HippoBeans
        (ContentBeans)
Objective: Integration with
ContentBeans (HippoBeans)
Objective: Integration with
       ContentBeans (HippoBeans)
As a developer ....



              how am I going to index my beans?
Objective: Integration with
     ContentBeans (HippoBeans)



I know how to write HippoBeans, that all I ever did in my life
Objective: Integration with
ContentBeans (HippoBeans)



 How do you expect me to index my beans?
Objective: Integration with
         ContentBeans (HippoBeans)
Annotate your getters with

                             @IndexField
                                  or
                        @IndexField(name="foo")

And account for them in Solr schema.xml
 <field name="title" type="text_general" indexed="true" stored="true" />
 <field name="summary" type="text_general" indexed="true" stored="true"/>
Objective: Integration with
          ContentBeans (HippoBeans)
An example:
@Node(jcrType="demosite:textdocument")
public class TextBean extends BaseDocument {

     @IndexField
     public String getTitle() {
         return getProperty("demosite:title") ;
     }
     @IndexField(name="samenvatting")
     public String getSummary() {
         return getProperty("demosite:summary") ;
     }
}
Objective: Integration with
          ContentBeans (HippoBeans)
Another example:
@Node(jcrType="demosite:textdocument")
public class TextBean extends BaseDocument {

     @IndexField
     public String getTitle() {
         return getProperty("demosite:title") ;
     }
     @IndexField
     public String getSummary() {
         return getProperty("demosite:summary") ;
     }

     @IndexField
     public String getAuthor() {
         return getLinkedBean("demosite:author", Author.class). etAuthor();
                                                              g
     }
}
Objective: Integration with
          ContentBeans (HippoBeans)
Another example:
@Node(jcrType="demosite:textdocument")
public class TextBean extends BaseDocument {

     @IndexField
     public String getTitle() {
         return getProperty("demosite:title") ;
     }
     @IndexField
     public String getSummary() {
         return getProperty("demosite:summary") ;
     }

     @ReIndexOnChange
     @IndexField
     public Author getAuthor() {
         return getLinkedBean("demosite:author", Author.class);
     }
}
Objective: Integration with
          ContentBeans (HippoBeans)
Another example: Setters
@Node(jcrType="demosite:textdocument")
public class TextBean extends BaseDocument {
     private String title;
     private String summary;

     @IndexField
     public String getTitle() {
         return title == null ? getProperty("demosite:title"): title ;
     }
     public void setTitle(String title) {
         this.title = title;
     }
     @IndexField
     public String getSummary() {
         return summary == null ? getProperty("demosite:summary"): summary ;
     }
     public void setSummary(String summary) {
         this.summary = summary;
     }
}
              Bonus : What can we achieve with the Setters?
Objective: Integration with
       ContentBeans (HippoBeans)
That's all you need to do

And the HST binds some extra indexing fields like

 1. The path
 2. The canonicalUUID
 3. The name
 4. The localized name
 5. The depth
 6. The class hierarchy (including interfaces)
Objective: Index external sources
Objective: Index external sources

You can

1. Push them directly to Solr
Objective: Index external sources

You can

1. Push them directly to Solr
2. Push them to a HST JAX-RS resource that binds to a
   ContentBean and commits to Solr
Objective: Index external sources

You can

1. Push them directly to Solr
2. Push them to a HST JAX-RS resource that binds to a
   ContentBean and commits to Solr
3. Crawl from the HST and bind to ContentBeans and commit
   them to Solr
Objective: Index external sources

A ContentBean does *not* need a JCR Node!

ContentBean interface:

public interface ContentBean {
    @IndexField(name="id")
    String getPath();
    void setPath(String path);
}
Objective: Index external sources

An example : GoGreenProductBean in Testsuite
public class   GoGreenProductBean            implements   ContentBean     {

    private String path;
    private String title;
    private String summary;
    private String description;


    public String getPath() {return path;}
    public void setPath(final String path) {this.path = path;}
    @IndexField
    public String getTitle() {return title;}
    public void setTitle(String title) {this.title = title;}
    @IndexField
    public String getSummary() {return summary ;}
    public void setSummary(String summary) {this.summary = summary;}
    @IndexField
    public String getDescription() {return description;}
    public void setDescription(String description) {this.description = description;}
}
Objective: Index external sources

And add the GoGreenProductBean to Solr
{
     List<GoGreenProductBean> gogreenBeans = new ArrayList<GoGreenProductBean>();
     // FILL THE gogreenBeans LIST

     // NOW ADD TO INDEX
     HippoSolrManager solrManager =
                HstServices.getComponentManager().getComponent(
                HippoSolrManager.class.getName(), SOLR_MODULE_NAME);
         try {
             solrManager.getSolrServer().addBeans(gogreenBeans);
             UpdateResponse commit = solrManager.getSolrServer().commit();
         } catch (IOException e) {
             e.printStackTrace();
         } catch (SolrServerException e) {
             e.printStackTrace();
         }
}
Objective: Control the SIZE of the
         index yourself
Objective: Control the SIZE of the
           index yourself
JCR / Jackrabbit / Hippo-Repository has a generic


                   one-fits-all-index   (or one-fits-none-index)




Which grows very large easily, and can hardly be customized
Objective: Control the SIZE of the
           index yourself
However, search is

                      domain specific

Thus,

                 Just index what is needed
                      for the customer
Objective: Don't invent but integrate
Objective: Don't invent but integrate


                   Use Solr

               Use Solrj client

          Expose the Solrj SolrQuery
Objective: Don't invent but integrate

For example:
HippoSolrManager solrManager = ...
String query = ...
HippoQuery hippoQuery = solrManager.createQuery(query);
hippoQuery.setLimit(pageSize);
hippoQuery.setOffset((page - 1) * pageSize);

// hippoQuery.getSolrQuery() is the SolrQuery object
// include scoring

hippoQuery.getSolrQuery().setIncludeScore(true);
hippoQuery.getSolrQuery().setHighlight(true);
hippoQuery.getSolrQuery().setHighlightFragsize(200);
hippoQuery.getSolrQuery().addHighlightField("title");
hippoQuery.getSolrQuery().addHighlightField("summary");
hippoQuery.getSolrQuery().addHighlightField("htmlContent");

HippoQueryResult result = hippoQuery.execute(true);
Objective: Don't invent but integrate

For example:
HippoSolrManager solrManager = ...
String query = ...
HippoQuery hippoQuery = solrManager.createQuery(query);
hippoQuery.setLimit(pageSize);
hippoQuery.setOffset((page - 1) * pageSize);

// hippoQuery.getSolrQuery() is the SolrQuery object
// include scoring

hippoQuery.getSolrQuery().setIncludeScore(true);
hippoQuery.getSolrQuery().setHighlight(true);
hippoQuery.getSolrQuery().setHighlightFragsize(200);
hippoQuery.getSolrQuery().addHighlightField("title");
hippoQuery.getSolrQuery().addHighlightField("summary");
hippoQuery.getSolrQuery().addHighlightField("htmlContent");

HippoQueryResult result = hippoQuery.execute(true);
Outline


1. The current search (HST / repo) architecture
2. The current problems / shortcomings / mismatches
3. What we are trying to improve, the objectives
4. Solr integration to rescue
5. A very fast demo
6. Wrap up
7. Questions
Solr integration to rescue



     No further comments :-)
Outline


1. The current search (HST / repo) architecture
2. The current problems / shortcomings / mismatches
3. What we are trying to improve, the objectives
4. Solr integration to rescue
5. A very fast demo
6. Wrap up
7. Questions
A very fast demo

                 setup
~75.000 long wikipedia docs in repository




    ............... doing the demo .................
That was : a very fast demo
Outline


1. The current search (HST / repo) architecture
2. The current problems / shortcomings / mismatches
3. What we are trying to improve, the objectives
4. Solr integration to rescue
5. A very fast demo
6. Wrap up
7. Questions
Wrap up

I think that with the Solr integration
Wrap up

I think that with the Solr integration

1. Developers will be happier
Wrap up

I think that with the Solr integration

1. Developers will be happier
2. Customers will be happier
Wrap up

I think that with the Solr integration

1. Developers will be happier
2. Customers will be happier
3. Partners will be happier
Wrap up

I think that with the Solr integration

1. Developers will be happier
2. Customers will be happier
3. Partners will be happier
4. Hippo will be happier
Wrap up

I think that with the Solr integration

 1. Developers will be happier
 2. Customers will be happier
 3. Partners will be happier
 4. Hippo will be happier

And finally, last and least
Wrap up

I think that with the Solr integration

1. Developers will be happier
2. Customers will be happier
3. Partners will be happier
4. Hippo will be happier
5. Infra will be happier because the servers stop sweating
Outline


1. The current search (HST / repo) architecture
2. The current problems / shortcomings / mismatches
3. What we are trying to improve, the objectives
4. Solr integration to rescue
5. A very fast demo
6. Wrap up
7. Questions
Questions?

Check out the example at :
http://svn.onehippo.org/repos/hippo/hippo-cms7/testsuite/trunk

More Related Content

What's hot

Apache Solr - search for everyone!
Apache Solr - search for everyone!Apache Solr - search for everyone!
Apache Solr - search for everyone!Jaran Flaath
 
Introduction to Lucene and Solr - 1
Introduction to Lucene and Solr - 1Introduction to Lucene and Solr - 1
Introduction to Lucene and Solr - 1YI-CHING WU
 
Building Intelligent Search Applications with Apache Solr and PHP5
Building Intelligent Search Applications with Apache Solr and PHP5Building Intelligent Search Applications with Apache Solr and PHP5
Building Intelligent Search Applications with Apache Solr and PHP5israelekpo
 
Battle of the giants: Apache Solr vs ElasticSearch
Battle of the giants: Apache Solr vs ElasticSearchBattle of the giants: Apache Solr vs ElasticSearch
Battle of the giants: Apache Solr vs ElasticSearchRafał Kuć
 
Rapid Prototyping with Solr
Rapid Prototyping with SolrRapid Prototyping with Solr
Rapid Prototyping with SolrErik Hatcher
 
New-Age Search through Apache Solr
New-Age Search through Apache SolrNew-Age Search through Apache Solr
New-Age Search through Apache SolrEdureka!
 
Elasticsearch - Devoxx France 2012 - English version
Elasticsearch - Devoxx France 2012 - English versionElasticsearch - Devoxx France 2012 - English version
Elasticsearch - Devoxx France 2012 - English versionDavid Pilato
 
Apache Solr crash course
Apache Solr crash courseApache Solr crash course
Apache Solr crash courseTommaso Teofili
 
Oracle REST Data Services: POUG Edition
Oracle REST Data Services: POUG EditionOracle REST Data Services: POUG Edition
Oracle REST Data Services: POUG EditionJeff Smith
 
SE2016 - Java EE revisits design patterns 2016
SE2016 - Java EE revisits design patterns 2016SE2016 - Java EE revisits design patterns 2016
SE2016 - Java EE revisits design patterns 2016Alex Theedom
 
Introduction to Apache Solr
Introduction to Apache SolrIntroduction to Apache Solr
Introduction to Apache SolrAndy Jackson
 
Introduction to Apache solr
Introduction to Apache solrIntroduction to Apache solr
Introduction to Apache solrKnoldus Inc.
 
Apache Solr Search Course Drupal 7 Acquia
Apache Solr Search Course Drupal 7 AcquiaApache Solr Search Course Drupal 7 Acquia
Apache Solr Search Course Drupal 7 AcquiaDropsolid
 
Lucene for Solr Developers
Lucene for Solr DevelopersLucene for Solr Developers
Lucene for Solr DevelopersErik Hatcher
 
Enterprise Search Using Apache Solr
Enterprise Search Using Apache SolrEnterprise Search Using Apache Solr
Enterprise Search Using Apache Solrsagar chaturvedi
 
Getting Started with Solr
Getting Started with SolrGetting Started with Solr
Getting Started with SolrTravis Carlson
 
Improved Search with Lucene 4.0 - Robert Muir
Improved Search with Lucene 4.0 - Robert MuirImproved Search with Lucene 4.0 - Robert Muir
Improved Search with Lucene 4.0 - Robert Muirlucenerevolution
 
Apache Solr - An Experience Report
Apache Solr - An Experience ReportApache Solr - An Experience Report
Apache Solr - An Experience ReportNetcetera
 

What's hot (20)

Apache Solr - search for everyone!
Apache Solr - search for everyone!Apache Solr - search for everyone!
Apache Solr - search for everyone!
 
Introduction to Lucene and Solr - 1
Introduction to Lucene and Solr - 1Introduction to Lucene and Solr - 1
Introduction to Lucene and Solr - 1
 
Solr vs ElasticSearch
Solr vs ElasticSearchSolr vs ElasticSearch
Solr vs ElasticSearch
 
Building Intelligent Search Applications with Apache Solr and PHP5
Building Intelligent Search Applications with Apache Solr and PHP5Building Intelligent Search Applications with Apache Solr and PHP5
Building Intelligent Search Applications with Apache Solr and PHP5
 
Battle of the giants: Apache Solr vs ElasticSearch
Battle of the giants: Apache Solr vs ElasticSearchBattle of the giants: Apache Solr vs ElasticSearch
Battle of the giants: Apache Solr vs ElasticSearch
 
Rapid Prototyping with Solr
Rapid Prototyping with SolrRapid Prototyping with Solr
Rapid Prototyping with Solr
 
New-Age Search through Apache Solr
New-Age Search through Apache SolrNew-Age Search through Apache Solr
New-Age Search through Apache Solr
 
Elasticsearch - Devoxx France 2012 - English version
Elasticsearch - Devoxx France 2012 - English versionElasticsearch - Devoxx France 2012 - English version
Elasticsearch - Devoxx France 2012 - English version
 
Apache Solr crash course
Apache Solr crash courseApache Solr crash course
Apache Solr crash course
 
Oracle REST Data Services: POUG Edition
Oracle REST Data Services: POUG EditionOracle REST Data Services: POUG Edition
Oracle REST Data Services: POUG Edition
 
SE2016 - Java EE revisits design patterns 2016
SE2016 - Java EE revisits design patterns 2016SE2016 - Java EE revisits design patterns 2016
SE2016 - Java EE revisits design patterns 2016
 
Introduction to Apache Solr
Introduction to Apache SolrIntroduction to Apache Solr
Introduction to Apache Solr
 
Introduction to Apache solr
Introduction to Apache solrIntroduction to Apache solr
Introduction to Apache solr
 
Apache Solr Search Course Drupal 7 Acquia
Apache Solr Search Course Drupal 7 AcquiaApache Solr Search Course Drupal 7 Acquia
Apache Solr Search Course Drupal 7 Acquia
 
Lucene for Solr Developers
Lucene for Solr DevelopersLucene for Solr Developers
Lucene for Solr Developers
 
Solr Flair
Solr FlairSolr Flair
Solr Flair
 
Enterprise Search Using Apache Solr
Enterprise Search Using Apache SolrEnterprise Search Using Apache Solr
Enterprise Search Using Apache Solr
 
Getting Started with Solr
Getting Started with SolrGetting Started with Solr
Getting Started with Solr
 
Improved Search with Lucene 4.0 - Robert Muir
Improved Search with Lucene 4.0 - Robert MuirImproved Search with Lucene 4.0 - Robert Muir
Improved Search with Lucene 4.0 - Robert Muir
 
Apache Solr - An Experience Report
Apache Solr - An Experience ReportApache Solr - An Experience Report
Apache Solr - An Experience Report
 

Viewers also liked

Cms integration of apache solr how we did it.
Cms integration of apache solr   how we did it.Cms integration of apache solr   how we did it.
Cms integration of apache solr how we did it.lucenerevolution
 
Hippo gettogether april 2012 faceted navigation a tale of daemons
Hippo gettogether april 2012 faceted navigation   a tale of daemonsHippo gettogether april 2012 faceted navigation   a tale of daemons
Hippo gettogether april 2012 faceted navigation a tale of daemonsHippo
 
Introducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformIntroducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformNuxeo
 
The Java Content Repository
The Java Content RepositoryThe Java Content Repository
The Java Content Repositorynobby
 
Hippo get together workshop automatic export
Hippo get together   workshop automatic exportHippo get together   workshop automatic export
Hippo get together workshop automatic exportHippo
 
Building high performance
Building high performanceBuilding high performance
Building high performanceRoy Sheinfeld
 
Power point
Power pointPower point
Power pointSiffredo
 
ΚΕΣΥΠ Ηρακλείου Θ Αντωνίου. Μετά το γυμνάσιο Τι; (Ιούνιος 2014)
ΚΕΣΥΠ Ηρακλείου Θ Αντωνίου. Μετά το γυμνάσιο Τι; (Ιούνιος 2014)ΚΕΣΥΠ Ηρακλείου Θ Αντωνίου. Μετά το γυμνάσιο Τι; (Ιούνιος 2014)
ΚΕΣΥΠ Ηρακλείου Θ Αντωνίου. Μετά το γυμνάσιο Τι; (Ιούνιος 2014)kogxylak
 
Web Applications Development
Web Applications DevelopmentWeb Applications Development
Web Applications Developmentriround
 
JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)Carsten Ziegeler
 
2η πανελλήνια ημέρα σχ. αθλητισμού
2η πανελλήνια ημέρα σχ. αθλητισμού2η πανελλήνια ημέρα σχ. αθλητισμού
2η πανελλήνια ημέρα σχ. αθλητισμούkogxylak
 
Module%201%20 physics%20basic%20science
Module%201%20 physics%20basic%20scienceModule%201%20 physics%20basic%20science
Module%201%20 physics%20basic%20scienceSarah Rodriguez
 
Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.
Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.
Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.kogxylak
 
Rapid JCR Applications Development with Sling
Rapid JCR Applications Development with SlingRapid JCR Applications Development with Sling
Rapid JCR Applications Development with SlingFelix Meschberger
 
我想請你吃飯 (繁体)
我想請你吃飯 (繁体)我想請你吃飯 (繁体)
我想請你吃飯 (繁体)Na Li
 
Η χημεία του κρασιού
Η χημεία του κρασιούΗ χημεία του κρασιού
Η χημεία του κρασιούkogxylak
 

Viewers also liked (20)

Cms integration of apache solr how we did it.
Cms integration of apache solr   how we did it.Cms integration of apache solr   how we did it.
Cms integration of apache solr how we did it.
 
Hippo gettogether april 2012 faceted navigation a tale of daemons
Hippo gettogether april 2012 faceted navigation   a tale of daemonsHippo gettogether april 2012 faceted navigation   a tale of daemons
Hippo gettogether april 2012 faceted navigation a tale of daemons
 
Introducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformIntroducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management Platform
 
2008-12 OJUG JCR Demo
2008-12 OJUG JCR Demo2008-12 OJUG JCR Demo
2008-12 OJUG JCR Demo
 
The Java Content Repository
The Java Content RepositoryThe Java Content Repository
The Java Content Repository
 
Hippo get together workshop automatic export
Hippo get together   workshop automatic exportHippo get together   workshop automatic export
Hippo get together workshop automatic export
 
Building high performance
Building high performanceBuilding high performance
Building high performance
 
Power point
Power pointPower point
Power point
 
ΚΕΣΥΠ Ηρακλείου Θ Αντωνίου. Μετά το γυμνάσιο Τι; (Ιούνιος 2014)
ΚΕΣΥΠ Ηρακλείου Θ Αντωνίου. Μετά το γυμνάσιο Τι; (Ιούνιος 2014)ΚΕΣΥΠ Ηρακλείου Θ Αντωνίου. Μετά το γυμνάσιο Τι; (Ιούνιος 2014)
ΚΕΣΥΠ Ηρακλείου Θ Αντωνίου. Μετά το γυμνάσιο Τι; (Ιούνιος 2014)
 
Web Applications Development
Web Applications DevelopmentWeb Applications Development
Web Applications Development
 
Hippo Presentation Jboye Study tour
Hippo Presentation Jboye Study tourHippo Presentation Jboye Study tour
Hippo Presentation Jboye Study tour
 
JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)
 
Hippo CMS at OpenCo Amsterdam 2014
Hippo CMS at OpenCo Amsterdam 2014Hippo CMS at OpenCo Amsterdam 2014
Hippo CMS at OpenCo Amsterdam 2014
 
What's new in JSR-283?
What's new in JSR-283?What's new in JSR-283?
What's new in JSR-283?
 
2η πανελλήνια ημέρα σχ. αθλητισμού
2η πανελλήνια ημέρα σχ. αθλητισμού2η πανελλήνια ημέρα σχ. αθλητισμού
2η πανελλήνια ημέρα σχ. αθλητισμού
 
Module%201%20 physics%20basic%20science
Module%201%20 physics%20basic%20scienceModule%201%20 physics%20basic%20science
Module%201%20 physics%20basic%20science
 
Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.
Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.
Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.
 
Rapid JCR Applications Development with Sling
Rapid JCR Applications Development with SlingRapid JCR Applications Development with Sling
Rapid JCR Applications Development with Sling
 
我想請你吃飯 (繁体)
我想請你吃飯 (繁体)我想請你吃飯 (繁体)
我想請你吃飯 (繁体)
 
Η χημεία του κρασιού
Η χημεία του κρασιούΗ χημεία του κρασιού
Η χημεία του κρασιού
 

Similar to Hippo get together presentation solr integration

Building a Large Scale SEO/SEM Application with Apache Solr: Presented by Rah...
Building a Large Scale SEO/SEM Application with Apache Solr: Presented by Rah...Building a Large Scale SEO/SEM Application with Apache Solr: Presented by Rah...
Building a Large Scale SEO/SEM Application with Apache Solr: Presented by Rah...Lucidworks
 
Building a Large Scale SEO/SEM Application with Apache Solr
Building a Large Scale SEO/SEM Application with Apache SolrBuilding a Large Scale SEO/SEM Application with Apache Solr
Building a Large Scale SEO/SEM Application with Apache SolrRahul Jain
 
FHIR Server internals - sqlonfhir
FHIR Server internals - sqlonfhirFHIR Server internals - sqlonfhir
FHIR Server internals - sqlonfhirBrian Postlethwaite
 
Lucene BootCamp
Lucene BootCampLucene BootCamp
Lucene BootCampGokulD
 
Performant Django - Ara Anjargolian
Performant Django - Ara AnjargolianPerformant Django - Ara Anjargolian
Performant Django - Ara AnjargolianHakka Labs
 
Scaling with mongo db (with notes)
Scaling with mongo db (with notes)Scaling with mongo db (with notes)
Scaling with mongo db (with notes)emiltamas
 
.NET Fringe 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund
.NET Fringe 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund.NET Fringe 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund
.NET Fringe 2017 - Challenges of Managing CoreFX repo -- Karel ZikmundKarel Zikmund
 
Lucene, Solr and java 9 - opportunities and challenges
Lucene, Solr and java 9 - opportunities and challengesLucene, Solr and java 9 - opportunities and challenges
Lucene, Solr and java 9 - opportunities and challengesCharlie Hull
 
Solr at zvents 6 years later & still going strong
Solr at zvents   6 years later & still going strongSolr at zvents   6 years later & still going strong
Solr at zvents 6 years later & still going stronglucenerevolution
 
Backing Data Silo Atack: Alfresco sharding, SOLR for non-flat objects
Backing Data Silo Atack: Alfresco sharding, SOLR for non-flat objectsBacking Data Silo Atack: Alfresco sharding, SOLR for non-flat objects
Backing Data Silo Atack: Alfresco sharding, SOLR for non-flat objectsITD Systems
 
Solr and ElasticSearch demo and speaker feb 2014
Solr  and ElasticSearch demo and speaker feb 2014Solr  and ElasticSearch demo and speaker feb 2014
Solr and ElasticSearch demo and speaker feb 2014nkabra
 
06 integrating extra features and looking forward
06   integrating extra features and looking forward06   integrating extra features and looking forward
06 integrating extra features and looking forwardМарина Босова
 
Agile Data: Building Hadoop Analytics Applications
Agile Data: Building Hadoop Analytics ApplicationsAgile Data: Building Hadoop Analytics Applications
Agile Data: Building Hadoop Analytics ApplicationsDataWorks Summit
 
pandas.(to/from)_sql is simple but not fast
pandas.(to/from)_sql is simple but not fastpandas.(to/from)_sql is simple but not fast
pandas.(to/from)_sql is simple but not fastUwe Korn
 
IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...
IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...
IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...In-Memory Computing Summit
 
Jethro for tableau webinar (11 15)
Jethro for tableau webinar (11 15)Jethro for tableau webinar (11 15)
Jethro for tableau webinar (11 15)Remy Rosenbaum
 
SQL Now! How Optiq brings the best of SQL to NoSQL data.
SQL Now! How Optiq brings the best of SQL to NoSQL data.SQL Now! How Optiq brings the best of SQL to NoSQL data.
SQL Now! How Optiq brings the best of SQL to NoSQL data.Julian Hyde
 
Why databases cry at night
Why databases cry at nightWhy databases cry at night
Why databases cry at nightMichael Yarichuk
 
Best practices for highly available and large scale SolrCloud
Best practices for highly available and large scale SolrCloudBest practices for highly available and large scale SolrCloud
Best practices for highly available and large scale SolrCloudAnshum Gupta
 

Similar to Hippo get together presentation solr integration (20)

Building a Large Scale SEO/SEM Application with Apache Solr: Presented by Rah...
Building a Large Scale SEO/SEM Application with Apache Solr: Presented by Rah...Building a Large Scale SEO/SEM Application with Apache Solr: Presented by Rah...
Building a Large Scale SEO/SEM Application with Apache Solr: Presented by Rah...
 
Building a Large Scale SEO/SEM Application with Apache Solr
Building a Large Scale SEO/SEM Application with Apache SolrBuilding a Large Scale SEO/SEM Application with Apache Solr
Building a Large Scale SEO/SEM Application with Apache Solr
 
FHIR Server internals - sqlonfhir
FHIR Server internals - sqlonfhirFHIR Server internals - sqlonfhir
FHIR Server internals - sqlonfhir
 
Lucene BootCamp
Lucene BootCampLucene BootCamp
Lucene BootCamp
 
Performant Django - Ara Anjargolian
Performant Django - Ara AnjargolianPerformant Django - Ara Anjargolian
Performant Django - Ara Anjargolian
 
Scaling with mongo db (with notes)
Scaling with mongo db (with notes)Scaling with mongo db (with notes)
Scaling with mongo db (with notes)
 
.NET Fringe 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund
.NET Fringe 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund.NET Fringe 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund
.NET Fringe 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund
 
Lucene, Solr and java 9 - opportunities and challenges
Lucene, Solr and java 9 - opportunities and challengesLucene, Solr and java 9 - opportunities and challenges
Lucene, Solr and java 9 - opportunities and challenges
 
Solr at zvents 6 years later & still going strong
Solr at zvents   6 years later & still going strongSolr at zvents   6 years later & still going strong
Solr at zvents 6 years later & still going strong
 
Backing Data Silo Atack: Alfresco sharding, SOLR for non-flat objects
Backing Data Silo Atack: Alfresco sharding, SOLR for non-flat objectsBacking Data Silo Atack: Alfresco sharding, SOLR for non-flat objects
Backing Data Silo Atack: Alfresco sharding, SOLR for non-flat objects
 
Solr and ElasticSearch demo and speaker feb 2014
Solr  and ElasticSearch demo and speaker feb 2014Solr  and ElasticSearch demo and speaker feb 2014
Solr and ElasticSearch demo and speaker feb 2014
 
06 integrating extra features and looking forward
06   integrating extra features and looking forward06   integrating extra features and looking forward
06 integrating extra features and looking forward
 
Agile Data: Building Hadoop Analytics Applications
Agile Data: Building Hadoop Analytics ApplicationsAgile Data: Building Hadoop Analytics Applications
Agile Data: Building Hadoop Analytics Applications
 
pandas.(to/from)_sql is simple but not fast
pandas.(to/from)_sql is simple but not fastpandas.(to/from)_sql is simple but not fast
pandas.(to/from)_sql is simple but not fast
 
IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...
IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...
IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...
 
Jethro for tableau webinar (11 15)
Jethro for tableau webinar (11 15)Jethro for tableau webinar (11 15)
Jethro for tableau webinar (11 15)
 
SQL Now! How Optiq brings the best of SQL to NoSQL data.
SQL Now! How Optiq brings the best of SQL to NoSQL data.SQL Now! How Optiq brings the best of SQL to NoSQL data.
SQL Now! How Optiq brings the best of SQL to NoSQL data.
 
Why databases cry at night
Why databases cry at nightWhy databases cry at night
Why databases cry at night
 
Spark Tips & Tricks
Spark Tips & TricksSpark Tips & Tricks
Spark Tips & Tricks
 
Best practices for highly available and large scale SolrCloud
Best practices for highly available and large scale SolrCloudBest practices for highly available and large scale SolrCloud
Best practices for highly available and large scale SolrCloud
 

Recently uploaded

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
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
 
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
 
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
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
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
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
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
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
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
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
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
 
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
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 

Recently uploaded (20)

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
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...
 
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
 
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
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
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
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
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
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
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...
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
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...
 
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
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 

Hippo get together presentation solr integration

  • 1. Solr integration April 20, 2012 Ard Schrijvers • a.schrijvers@onehippo.com / ard@apache.org
  • 2. About me: Ard Schrijvers 1. Working at Hippo since 2001 2. Email: a.schrijvers@onehippo.com ard@apache.org 3. Worked primarily on: 1. HST 2. Hippo Repository / Jackrabbit 3. Lucene 4. Cocoon 5. Slide 4. Apache committer of Jackrabbit and Cocoon
  • 3. Outline 1. The current search (HST / repo) architecture
  • 4. Outline 1. The current search (HST / repo) architecture 2. The current problems / shortcomings / mismatches
  • 5. Outline 1. The current search (HST / repo) architecture 2. The current problems / shortcomings / mismatches 3. What we are trying to improve, the objectives
  • 6. Outline 1. The current search (HST / repo) architecture 2. The current problems / shortcomings / mismatches 3. What we are trying to improve, the objectives 4. Solr integration to rescue
  • 7. Outline 1. The current search (HST / repo) architecture 2. The current problems / shortcomings / mismatches 3. What we are trying to improve, the objectives 4. Solr integration to rescue 5. A very fast demo
  • 8. Outline 1. The current search (HST / repo) architecture 2. The current problems / shortcomings / mismatches 3. What we are trying to improve, the objectives 4. Solr integration to rescue 5. A very fast demo 6. Wrap up
  • 9. Outline 1. The current search (HST / repo) architecture 2. The current problems / shortcomings / mismatches 3. What we are trying to improve, the objectives 4. Solr integration to rescue 5. A very fast demo 6. Wrap up 7. Questions
  • 11. Current search architecture So An HSTQuery is translated to an XPath query Which is delegated to the repository that returns a JCR NodeIterator which the HST binds back to HippoBean's
  • 12. Current search architecture That sounds doable and not to complex is it?
  • 14. Current search architecture Well, it is ....... very complex
  • 15. Current search architecture Reasons: 1. Back in the days when Jackrabbit 1 started, Lucene was at version 1.4
  • 16. Current search architecture Reasons: 1. Back in the days when Jackrabbit 1 started, Lucene was at version 1.4 2. The first JSR-170 spec imposed some very harsh constraints : A save must result in directly updated search results
  • 17. Current search architecture Reasons: 1. Back in the days when Jackrabbit 1 started, Lucene was at version 1.4 2. The first JSR-170 spec imposed some very harsh constraints : A save must result in directly updated search results 3. Support for XPath / SQL was needed. However, Lucene likes flattened data, JCR with XPath / SQL is all about hierarchical data
  • 18. Current search architecture Reasons: 1. Back in the days when Jackrabbit 1 started, Lucene was at version 1.4 2. The first JSR-170 spec imposed some very harsh constraints : A save must result in directly updated search results 3. Support for XPath / SQL was needed. However, Lucene likes flattened data, JCR with XPath / SQL is all about hierarchical data 4. JCR Nodes != Documents
  • 19. Outline 1. The current search (HST / repo) architecture 2. The current problems / shortcomings / mismatches 3. What we are trying to improve, the objectives 4. Solr integration to rescue 5. A short HOWTO as developer 6. A very fast demo 7. Wrap up 8. Questions
  • 20. Current problems / shortcomings / mismatches 1. JCR Nodes are indexed instead of Documents (#nodes >> #documents)
  • 21. Current problems / shortcomings / mismatches 1. JCR Nodes are indexed instead of Documents (#nodes >> #documents) 2. A search result only returns Nodes (Rows) : what if you want something else, like auto-completion
  • 22. Current problems / shortcomings / mismatches 1. JCR Nodes are indexed instead of Documents (#nodes >> #documents) 2. A search result only returns Nodes (Rows) : what if you want something else, like auto-completion 3. Very hard and very limited to customize
  • 23. Current problems / shortcomings / mismatches 1. JCR Nodes are indexed instead of Documents (#nodes >> #documents) 2. A search result only returns Nodes (Rows) : what if you want something else, like auto-completion 3. Very hard and very limited to customize 4. A single index for an entire workspace
  • 24. Current problems / shortcomings / mismatches 1. JCR Nodes are indexed instead of Documents (#nodes >> #documents) 2. A search result only returns Nodes (Rows) : what if you want something else, like auto-completion 3. Very hard and very limited to customize 4. A single index for an entire workspace 5. Support for very complex XPath / SQL queries at a price of CPU, Memory and complexity
  • 25. Current problems / shortcomings / mismatches 1. JCR Nodes are indexed instead of Documents (#nodes >> #documents) 2. A search result only returns Nodes (Rows) : what if you want something else, like auto-completion 3. Very hard and very limited to customize 4. A single index for an entire workspace 5. Support for very complex XPath / SQL queries at a price of CPU, Memory and complexity 6. Only JCR Nodes and properties are indexed : no 'derived' field indexes
  • 26. Current problems / shortcomings / mismatches 1. JCR Nodes are indexed instead of Documents (#nodes >> #documents) 2. A search result only returns Nodes (Rows) : what if you want something else, like auto-completion 3. Very hard and very limited to customize 4. A single index for an entire workspace 5. Support for very complex XPath / SQL queries at a price of CPU, Memory and complexity 6. Only JCR Nodes and properties are indexed : no 'derived' field indexes 7. To index external sources, the sources need to be stored in the repository
  • 27. Current problems / shortcomings / mismatches 1. JCR Nodes are indexed instead of Documents (#nodes >> #documents) 2. A search result only returns Nodes (Rows) : what if you want something else, like auto-completion 3. Very hard and very limited to customize 4. A single index for an entire workspace 5. Support for very complex XPath / SQL queries at a price of CPU, Memory and complexity 6. Only JCR Nodes and properties are indexed : no 'derived' field indexes 7. To index external sources, the sources need to be stored in the repository 8. Range queries (and others) easily blow up
  • 28. Current problems / shortcomings / mismatches 1. JCR Nodes are indexed instead of Documents (#nodes >> #documents) 2. A search result only returns Nodes (Rows) : what if you want something else, like auto-completion 3. Very hard and very limited to customize 4. A single index for an entire workspace 5. Support for very complex XPath / SQL queries at a price of CPU, Memory and complexity 6. Only JCR Nodes and properties are indexed : no 'derived' field indexes 7. To index external sources, the sources need to be stored in the repository 8. Range queries (and others) easily blow up 9. Getting the number of hits is complex
  • 29. Current problems / shortcomings / mismatches Extra problem JCR Nodes != Documents For example : A news document contains a link to an author document : Through the author name, the news document should be found
  • 30. Outline 1. The current search (HST / repo) architecture 2. The current problems / shortcomings / mismatches 3. What we are trying to improve, the objectives 4. Solr integration to rescue 5. A very fast demo 6. Wrap up 7. Questions
  • 31. Objectives 1. Fix all the 9+ problems / shortcomings/ mismatches from previous slides 2. Easy to use and customize 3. Satisfied customers 4. Satisfied partners 5. Scalable searches : CPU, memory and large document numbers 6. Document oriented 7. Integration with HST ContentBeans (HippoBeans) 8. Index external sources 9. Control the SIZE of the index yourself 10. Don't invent but integrate ( with out-of-the-box features supported by a large community)
  • 32. Objective: Fix all the 9 problems / shortcomings/ mismatches from previous slides
  • 33. Objective: Fix all the 9 problems / shortcomings/ mismatches from previous slides Easy: Solr integration to rescue
  • 34. Objective: Easy to use and customize
  • 35. Objective: Easy to use and customize YOU will be in the driver seat
  • 36. Objective: Easy to use and customize
  • 37. Objective: Easy to use and customize
  • 38. Objective: Easy to use and customize No more complete dependence on what the sometimes not so smAR&D Hippo team thought was good for YOU
  • 39. Objective : Easy to use and customize
  • 40. Objective: Easy to use and customize You decide 'from where', 'what', 'how' and 'when' to index
  • 41. Objective: Easy to use and customize You decide 'from where', 'what', 'how' and 'when' to index 1. from where: which sources (jcr, webpages, database, noSQL store, nuxeo, alfresco, anything)
  • 42. Objective: Easy to use and customize You decide 'from where', 'what', 'how' and 'when' to index 1. from where: which sources (jcr, webpages, database, noSQL store, nuxeo, alfresco, anything) 2. what : which parts of a document (not jcr node) or external source
  • 43. Objective: Easy to use and customize You decide 'from where', 'what', 'how' and 'when' to index 1. from where: which sources (jcr, webpages, database, noSQL store, nuxeo, alfresco, anything) 2. what : which parts of a document (not jcr node) or external source 3. how : 1. which analyzer, 2. index on document level, property level or both 3. store the text
  • 44. Objective: Easy to use and customize You decide 'from where', 'what', 'how' and 'when' to index 1. from where: which sources (jcr, webpages, database, noSQL store, nuxeo, alfresco, anything) 2. what : which parts of a document (not jcr node) or external source 3. how : 1. which analyzer, 2. index on document level, property level or both 3. store the text 4. when : when do you want to index
  • 45. Objective: Easy to use and customize But of course, out-of-the-box support and tooling ready to be used by YOU
  • 46. Objective: Easy to use and customize But of course, out-of-the-box support and tooling ready to be used by YOU 1. Default hippo repository indexer & observer
  • 47. Objective: Easy to use and customize But of course, out-of-the-box support and tooling ready to be used by YOU 1. Default hippo repository indexer & observer 2. ContentBean (HippoBean) annotations for indexing
  • 48. Objective: Easy to use and customize But of course, out-of-the-box support and tooling ready to be used by YOU 1. Default hippo repository indexer & observer 2. ContentBean (HippoBean) annotations for indexing 3. Binding search results to ContentBean's
  • 49. Objective: Easy to use and customize But of course, out-of-the-box support and tooling ready to be used by YOU 1. Default hippo repository indexer & observer 2. ContentBean (HippoBean) annotations for indexing 3. Binding search results to ContentBean's 4. Deployment support
  • 50. Objective: Easy to use and customize But of course, out-of-the-box support and tooling ready to be used by YOU 1. Default hippo repository indexer & observer 2. ContentBean (HippoBean) annotations for indexing 3. Binding search results to ContentBean's 4. Deployment support 5. Clustering support
  • 54. Objective: Satisfied customers Most likely they just will be satisfied
  • 55. Objective: Satisfied customers If they are not satisfied enough you can: 1. Easily customize it (aka tune it until 'je een ons weegt') 2. Hire anyone with Solr experience : All our partners have Solr experience
  • 56. Objective: Satisfied customers Still not satisfied? Let them pay too much for a Google Search appliance, Autonomy or any of the other 'useless to pay for software'
  • 58. Objective: Satisfied partners Although on thin ice here, I strongly believe in this because:
  • 59. Objective: Satisfied partners 1. Our partners frequently have good knowledge about Solr
  • 60. Objective: Satisfied partners 1. Our partners frequently have good knowledge about Solr 2. Our partners depend less on the current search limitations
  • 61. Objective: Satisfied partners 1. Our partners frequently have good knowledge about Solr 2. Our partners depend less on the current search limitations 3. Our partners can pitch with their Solr knowledge
  • 62. Objective: Satisfied partners 1. Our partners frequently have good knowledge about Solr 2. Our partners depend less on the current search limitations 3. Our partners can pitch with their Solr knowledge 4. Our partners can sell more Hippo implementations
  • 63. Objective: Satisfied partners 1. Our partners frequently have good knowledge about Solr 2. Our partners depend less on the current search limitations 3. Our partners can pitch with their Solr knowledge 4. Our partners can sell more Hippo implementations 5. Our partners will earn more on Hippo and have happier developers
  • 64. Objective: Satisfied partners 1. Our partners frequently have good knowledge about Solr 2. Our partners depend less on the current search limitations 3. Our partners can pitch with their Solr knowledge 4. Our partners can sell more Hippo implementations 5. Our partners will earn more on Hippo and have happier developers 6. Hippo will earn more through HES: Which will satisfy partners again, because Hippo can spend more on AR&D ==> more features
  • 66. Objective: Scalable searches 1. Using Solr to do the searches
  • 67. Objective: Scalable searches 1. Using Solr to do the searches 2. Not the complex JCR hierarchical searches
  • 68. Objective: Scalable searches 1. Using Solr to do the searches 2. Not the complex JCR hierarchical searches 3. Document oriented instead of JCR Nodes ( #docs << #nodes)
  • 70. Objective: Document oriented What do we want to search for?
  • 71. Objective: Document oriented Exactly, Documents!!
  • 72. Objective: Document oriented A Document == A HippoBean != JCR Node
  • 74. Objective: Document oriented So let's index HippoBeans (ContentBeans)
  • 76. Objective: Integration with ContentBeans (HippoBeans) As a developer .... how am I going to index my beans?
  • 77. Objective: Integration with ContentBeans (HippoBeans) I know how to write HippoBeans, that all I ever did in my life
  • 78. Objective: Integration with ContentBeans (HippoBeans) How do you expect me to index my beans?
  • 79. Objective: Integration with ContentBeans (HippoBeans) Annotate your getters with @IndexField or @IndexField(name="foo") And account for them in Solr schema.xml <field name="title" type="text_general" indexed="true" stored="true" /> <field name="summary" type="text_general" indexed="true" stored="true"/>
  • 80. Objective: Integration with ContentBeans (HippoBeans) An example: @Node(jcrType="demosite:textdocument") public class TextBean extends BaseDocument { @IndexField public String getTitle() { return getProperty("demosite:title") ; } @IndexField(name="samenvatting") public String getSummary() { return getProperty("demosite:summary") ; } }
  • 81. Objective: Integration with ContentBeans (HippoBeans) Another example: @Node(jcrType="demosite:textdocument") public class TextBean extends BaseDocument { @IndexField public String getTitle() { return getProperty("demosite:title") ; } @IndexField public String getSummary() { return getProperty("demosite:summary") ; } @IndexField public String getAuthor() { return getLinkedBean("demosite:author", Author.class). etAuthor(); g } }
  • 82. Objective: Integration with ContentBeans (HippoBeans) Another example: @Node(jcrType="demosite:textdocument") public class TextBean extends BaseDocument { @IndexField public String getTitle() { return getProperty("demosite:title") ; } @IndexField public String getSummary() { return getProperty("demosite:summary") ; } @ReIndexOnChange @IndexField public Author getAuthor() { return getLinkedBean("demosite:author", Author.class); } }
  • 83. Objective: Integration with ContentBeans (HippoBeans) Another example: Setters @Node(jcrType="demosite:textdocument") public class TextBean extends BaseDocument { private String title; private String summary; @IndexField public String getTitle() { return title == null ? getProperty("demosite:title"): title ; } public void setTitle(String title) { this.title = title; } @IndexField public String getSummary() { return summary == null ? getProperty("demosite:summary"): summary ; } public void setSummary(String summary) { this.summary = summary; } } Bonus : What can we achieve with the Setters?
  • 84. Objective: Integration with ContentBeans (HippoBeans) That's all you need to do And the HST binds some extra indexing fields like 1. The path 2. The canonicalUUID 3. The name 4. The localized name 5. The depth 6. The class hierarchy (including interfaces)
  • 86. Objective: Index external sources You can 1. Push them directly to Solr
  • 87. Objective: Index external sources You can 1. Push them directly to Solr 2. Push them to a HST JAX-RS resource that binds to a ContentBean and commits to Solr
  • 88. Objective: Index external sources You can 1. Push them directly to Solr 2. Push them to a HST JAX-RS resource that binds to a ContentBean and commits to Solr 3. Crawl from the HST and bind to ContentBeans and commit them to Solr
  • 89. Objective: Index external sources A ContentBean does *not* need a JCR Node! ContentBean interface: public interface ContentBean { @IndexField(name="id") String getPath(); void setPath(String path); }
  • 90. Objective: Index external sources An example : GoGreenProductBean in Testsuite public class GoGreenProductBean implements ContentBean { private String path; private String title; private String summary; private String description; public String getPath() {return path;} public void setPath(final String path) {this.path = path;} @IndexField public String getTitle() {return title;} public void setTitle(String title) {this.title = title;} @IndexField public String getSummary() {return summary ;} public void setSummary(String summary) {this.summary = summary;} @IndexField public String getDescription() {return description;} public void setDescription(String description) {this.description = description;} }
  • 91. Objective: Index external sources And add the GoGreenProductBean to Solr { List<GoGreenProductBean> gogreenBeans = new ArrayList<GoGreenProductBean>(); // FILL THE gogreenBeans LIST // NOW ADD TO INDEX HippoSolrManager solrManager = HstServices.getComponentManager().getComponent( HippoSolrManager.class.getName(), SOLR_MODULE_NAME); try { solrManager.getSolrServer().addBeans(gogreenBeans); UpdateResponse commit = solrManager.getSolrServer().commit(); } catch (IOException e) { e.printStackTrace(); } catch (SolrServerException e) { e.printStackTrace(); } }
  • 92. Objective: Control the SIZE of the index yourself
  • 93. Objective: Control the SIZE of the index yourself JCR / Jackrabbit / Hippo-Repository has a generic one-fits-all-index (or one-fits-none-index) Which grows very large easily, and can hardly be customized
  • 94. Objective: Control the SIZE of the index yourself However, search is domain specific Thus, Just index what is needed for the customer
  • 95. Objective: Don't invent but integrate
  • 96. Objective: Don't invent but integrate Use Solr Use Solrj client Expose the Solrj SolrQuery
  • 97. Objective: Don't invent but integrate For example: HippoSolrManager solrManager = ... String query = ... HippoQuery hippoQuery = solrManager.createQuery(query); hippoQuery.setLimit(pageSize); hippoQuery.setOffset((page - 1) * pageSize); // hippoQuery.getSolrQuery() is the SolrQuery object // include scoring hippoQuery.getSolrQuery().setIncludeScore(true); hippoQuery.getSolrQuery().setHighlight(true); hippoQuery.getSolrQuery().setHighlightFragsize(200); hippoQuery.getSolrQuery().addHighlightField("title"); hippoQuery.getSolrQuery().addHighlightField("summary"); hippoQuery.getSolrQuery().addHighlightField("htmlContent"); HippoQueryResult result = hippoQuery.execute(true);
  • 98. Objective: Don't invent but integrate For example: HippoSolrManager solrManager = ... String query = ... HippoQuery hippoQuery = solrManager.createQuery(query); hippoQuery.setLimit(pageSize); hippoQuery.setOffset((page - 1) * pageSize); // hippoQuery.getSolrQuery() is the SolrQuery object // include scoring hippoQuery.getSolrQuery().setIncludeScore(true); hippoQuery.getSolrQuery().setHighlight(true); hippoQuery.getSolrQuery().setHighlightFragsize(200); hippoQuery.getSolrQuery().addHighlightField("title"); hippoQuery.getSolrQuery().addHighlightField("summary"); hippoQuery.getSolrQuery().addHighlightField("htmlContent"); HippoQueryResult result = hippoQuery.execute(true);
  • 99. Outline 1. The current search (HST / repo) architecture 2. The current problems / shortcomings / mismatches 3. What we are trying to improve, the objectives 4. Solr integration to rescue 5. A very fast demo 6. Wrap up 7. Questions
  • 100. Solr integration to rescue No further comments :-)
  • 101. Outline 1. The current search (HST / repo) architecture 2. The current problems / shortcomings / mismatches 3. What we are trying to improve, the objectives 4. Solr integration to rescue 5. A very fast demo 6. Wrap up 7. Questions
  • 102. A very fast demo setup ~75.000 long wikipedia docs in repository ............... doing the demo .................
  • 103. That was : a very fast demo
  • 104. Outline 1. The current search (HST / repo) architecture 2. The current problems / shortcomings / mismatches 3. What we are trying to improve, the objectives 4. Solr integration to rescue 5. A very fast demo 6. Wrap up 7. Questions
  • 105. Wrap up I think that with the Solr integration
  • 106. Wrap up I think that with the Solr integration 1. Developers will be happier
  • 107. Wrap up I think that with the Solr integration 1. Developers will be happier 2. Customers will be happier
  • 108. Wrap up I think that with the Solr integration 1. Developers will be happier 2. Customers will be happier 3. Partners will be happier
  • 109. Wrap up I think that with the Solr integration 1. Developers will be happier 2. Customers will be happier 3. Partners will be happier 4. Hippo will be happier
  • 110. Wrap up I think that with the Solr integration 1. Developers will be happier 2. Customers will be happier 3. Partners will be happier 4. Hippo will be happier And finally, last and least
  • 111. Wrap up I think that with the Solr integration 1. Developers will be happier 2. Customers will be happier 3. Partners will be happier 4. Hippo will be happier 5. Infra will be happier because the servers stop sweating
  • 112. Outline 1. The current search (HST / repo) architecture 2. The current problems / shortcomings / mismatches 3. What we are trying to improve, the objectives 4. Solr integration to rescue 5. A very fast demo 6. Wrap up 7. Questions
  • 113. Questions? Check out the example at : http://svn.onehippo.org/repos/hippo/hippo-cms7/testsuite/trunk