Faceted Navigation on Related Documents
           A tale of Daemons
      Wouter Danes – Hippo Gettogether – 20 april 2012
                                        Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   1
Agenda

•   About me
•   User story: faceted navigation for site wide search
•   Problem: practice doesn’t follow theory
•   Possible solution: Derived Data Engine
•   Better solution: Daemons!
•   Some stuff we learned
•   How to improve Hippo to make this easier



                                   Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   2
About me – Wouter Danes

•   Hired via Orange11 @Rijksoverheid.nl
•   Java (10yrs experience) & Hippo Developer
•   Competence Manager Java & Hippo @ Hinttech
•   Merciless refactorer
•   Loves Test Driven Development
•   Hippo CMS Committer
•   Experience as a Software Architect



                                  Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   3
Faceted Navigation for Site Wide Search

•     Rijksoverheid.nl needed a new side wide search
•     It had to allow a drill down via four facets:
    Responsible Department(s), Document Type
    Applicable Theme(s), Document Date


•     This is pretty easy with Hippo
•     It supports faceted navigation out of the box
•     At least, if all facets are properties on the
    document…

                                        Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   4
Problem: Practice doesn’t follow theory


We would like to see:




                                  Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   5
Problem: Practice doesn’t follow theory


We would like to see:     The horrible truth:




                                  Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   6
Possible solution: Derived Data Engine

•     Derived Data Engine allows you to define input
    properties and then populate some output
    properties
•     You can even point to a single property on ONE
    related Document (property name is secretly a
    relative path… shhh!) f.ex: “common:subject/@title”
•     You cannot point to a property on multiple
    related Documents
•     Crap! Foiled again!


                                      Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   7
We Were About to Give Up…
When Jeroen and me came up with this idea…



                                             Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   8
Daemon Modules

•     Hippo CMS supports Daemon Modules
•     Daemon modules are services that run in the
    Hippo Repository in their own (admin) session
•     We could let this daemon module derive stuff for
    us, all we have to do is send it the UUID of the
    node…
•     Let’s see how that works!


      !! WARNING: DO NOT TRY THIS AT HOME !!

                                    Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   9
Sequence Diagram
Now show us some code..!!



                            Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   10
Nothing Like the Smell of a Good Hack!
(unless you are Hippo Support and got 50+ clients doing this…)



                                                   Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   11
Stuff We Learned

1.     Make Sure Your Daemon Module is Thread Safe
2.     When you Refresh a Session, any Nodes it
     Supplied Become Useless
3.     If a Derived Data Function Throws an Exception,
     any Action that Triggered the Node.save() Fails
4.     This Will Break (Delayed) Publishing!


              1 + 2 + 3 + 4 == Weird Artifacts
              ….That took us ages to debug
                                      Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   12
How to improve Hippo to make this easier

•     Improve Derived Data Engine to Supply a
    Decorated Read Only Node instead of Input &
    Output Properties
•     Read Only is Good, Because You Don’t Want the
    Derived Data Engine to Modify/Save other Nodes
•     Output Concept Can Stay Like it Is


•     Or… Wait for SOLR Integration


                                      Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   13
Wouter Danes
                     @wouterdanes




  Tel: +31–(0)88–268 25 00                                 Address:                           Delftechpark 37i
 Mob: +31-(0) 6 1158 8264                                                                     2628 XJ Delft
E-mail: Wouter.danes@hinttech.com                                                             The Netherlands

         Delft   San Francisco      Novi Sad   Nordic            United Kingdom
                                                    Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   14

More Related Content

PDF
Hippo get together presentation solr integration
PDF
Cms integration of apache solr how we did it.
PPTX
Power point
PPTX
Building high performance
PPT
ΚΕΣΥΠ Ηρακλείου Θ Αντωνίου. Μετά το γυμνάσιο Τι; (Ιούνιος 2014)
PPTX
Hippo CMS at OpenCo Amsterdam 2014
PPTX
Web Applications Development
PPT
Hippo Presentation Jboye Study tour
Hippo get together presentation solr integration
Cms integration of apache solr how we did it.
Power point
Building high performance
ΚΕΣΥΠ Ηρακλείου Θ Αντωνίου. Μετά το γυμνάσιο Τι; (Ιούνιος 2014)
Hippo CMS at OpenCo Amsterdam 2014
Web Applications Development
Hippo Presentation Jboye Study tour

Viewers also liked (15)

PDF
Hippo get together workshop automatic export
PDF
JCR In Action (ApacheCon US 2009)
PDF
What's new in JSR-283?
PPTX
2η πανελλήνια ημέρα σχ. αθλητισμού
PDF
Module%201%20 physics%20basic%20science
PPT
Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.
PDF
2008-12 OJUG JCR Demo
KEY
Introducing Apricot, The Eclipse Content Management Platform
PDF
The Java Content Repository
PPTX
我想請你吃飯 (繁体)
PPSX
Η χημεία του κρασιού
PPTX
App and web with Hippo CMS and AngularJS
ODP
JCR and ModeShape
PPTX
你不是我的男朋友 (繁體)
PDF
Introducing Hippo CMS 10.2
Hippo get together workshop automatic export
JCR In Action (ApacheCon US 2009)
What's new in JSR-283?
2η πανελλήνια ημέρα σχ. αθλητισμού
Module%201%20 physics%20basic%20science
Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.
2008-12 OJUG JCR Demo
Introducing Apricot, The Eclipse Content Management Platform
The Java Content Repository
我想請你吃飯 (繁体)
Η χημεία του κρασιού
App and web with Hippo CMS and AngularJS
JCR and ModeShape
你不是我的男朋友 (繁體)
Introducing Hippo CMS 10.2
Ad

Similar to Hippo gettogether april 2012 faceted navigation a tale of daemons (17)

PPTX
32672 hplabs overviewnn
ODP
Kerry osborne hadoop meets exadata
PPTX
Dominion over domains
PDF
Infinitytech New
DOCX
Mi0041 java and web design
PDF
Lotusphere 2012 - What's next in Lotus Notes & Domino
PDF
Lotusphere 2012 - What's new in Lotus Notes & Domino
PPTX
The 2011 IBM Tech Trends Report
ODP
Portlet factory 101
PPT
The Technical Debt Trap - AgileIndy 2013
ODP
Hadoop Meets Exadata- Kerry Osborne
PDF
Java EE 7 - Embracing the Cloud and HTML 5
PDF
Resume_ver_5
PDF
PenO1: les 2
PDF
marshal_patel
PDF
Lightning talks percona live mysql_2012
PDF
Demo trim
32672 hplabs overviewnn
Kerry osborne hadoop meets exadata
Dominion over domains
Infinitytech New
Mi0041 java and web design
Lotusphere 2012 - What's next in Lotus Notes & Domino
Lotusphere 2012 - What's new in Lotus Notes & Domino
The 2011 IBM Tech Trends Report
Portlet factory 101
The Technical Debt Trap - AgileIndy 2013
Hadoop Meets Exadata- Kerry Osborne
Java EE 7 - Embracing the Cloud and HTML 5
Resume_ver_5
PenO1: les 2
marshal_patel
Lightning talks percona live mysql_2012
Demo trim
Ad

Recently uploaded (20)

PPTX
Module 1 Introduction to Web Programming .pptx
PDF
5-Ways-AI-is-Revolutionizing-Telecom-Quality-Engineering.pdf
PDF
IT-ITes Industry bjjbnkmkhkhknbmhkhmjhjkhj
PDF
MENA-ECEONOMIC-CONTEXT-VC MENA-ECEONOMIC
PPTX
AI-driven Assurance Across Your End-to-end Network With ThousandEyes
PDF
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
PDF
AI.gov: A Trojan Horse in the Age of Artificial Intelligence
PPTX
GROUP4NURSINGINFORMATICSREPORT-2 PRESENTATION
PDF
Lung cancer patients survival prediction using outlier detection and optimize...
PDF
Auditboard EB SOX Playbook 2023 edition.
PDF
The-2025-Engineering-Revolution-AI-Quality-and-DevOps-Convergence.pdf
PDF
Dell Pro Micro: Speed customer interactions, patient processing, and learning...
PDF
Electrocardiogram sequences data analytics and classification using unsupervi...
PDF
giants, standing on the shoulders of - by Daniel Stenberg
PDF
Rapid Prototyping: A lecture on prototyping techniques for interface design
PDF
The-Future-of-Automotive-Quality-is-Here-AI-Driven-Engineering.pdf
PDF
Transform-Your-Streaming-Platform-with-AI-Driven-Quality-Engineering.pdf
DOCX
Basics of Cloud Computing - Cloud Ecosystem
PDF
EIS-Webinar-Regulated-Industries-2025-08.pdf
PPTX
MuleSoft-Compete-Deck for midddleware integrations
Module 1 Introduction to Web Programming .pptx
5-Ways-AI-is-Revolutionizing-Telecom-Quality-Engineering.pdf
IT-ITes Industry bjjbnkmkhkhknbmhkhmjhjkhj
MENA-ECEONOMIC-CONTEXT-VC MENA-ECEONOMIC
AI-driven Assurance Across Your End-to-end Network With ThousandEyes
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
AI.gov: A Trojan Horse in the Age of Artificial Intelligence
GROUP4NURSINGINFORMATICSREPORT-2 PRESENTATION
Lung cancer patients survival prediction using outlier detection and optimize...
Auditboard EB SOX Playbook 2023 edition.
The-2025-Engineering-Revolution-AI-Quality-and-DevOps-Convergence.pdf
Dell Pro Micro: Speed customer interactions, patient processing, and learning...
Electrocardiogram sequences data analytics and classification using unsupervi...
giants, standing on the shoulders of - by Daniel Stenberg
Rapid Prototyping: A lecture on prototyping techniques for interface design
The-Future-of-Automotive-Quality-is-Here-AI-Driven-Engineering.pdf
Transform-Your-Streaming-Platform-with-AI-Driven-Quality-Engineering.pdf
Basics of Cloud Computing - Cloud Ecosystem
EIS-Webinar-Regulated-Industries-2025-08.pdf
MuleSoft-Compete-Deck for midddleware integrations

Hippo gettogether april 2012 faceted navigation a tale of daemons

  • 1. Faceted Navigation on Related Documents A tale of Daemons Wouter Danes – Hippo Gettogether – 20 april 2012 Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 1
  • 2. Agenda • About me • User story: faceted navigation for site wide search • Problem: practice doesn’t follow theory • Possible solution: Derived Data Engine • Better solution: Daemons! • Some stuff we learned • How to improve Hippo to make this easier Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 2
  • 3. About me – Wouter Danes • Hired via Orange11 @Rijksoverheid.nl • Java (10yrs experience) & Hippo Developer • Competence Manager Java & Hippo @ Hinttech • Merciless refactorer • Loves Test Driven Development • Hippo CMS Committer • Experience as a Software Architect Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 3
  • 4. Faceted Navigation for Site Wide Search • Rijksoverheid.nl needed a new side wide search • It had to allow a drill down via four facets: Responsible Department(s), Document Type Applicable Theme(s), Document Date • This is pretty easy with Hippo • It supports faceted navigation out of the box • At least, if all facets are properties on the document… Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 4
  • 5. Problem: Practice doesn’t follow theory We would like to see: Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 5
  • 6. Problem: Practice doesn’t follow theory We would like to see: The horrible truth: Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 6
  • 7. Possible solution: Derived Data Engine • Derived Data Engine allows you to define input properties and then populate some output properties • You can even point to a single property on ONE related Document (property name is secretly a relative path… shhh!) f.ex: “common:subject/@title” • You cannot point to a property on multiple related Documents • Crap! Foiled again! Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 7
  • 8. We Were About to Give Up… When Jeroen and me came up with this idea… Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 8
  • 9. Daemon Modules • Hippo CMS supports Daemon Modules • Daemon modules are services that run in the Hippo Repository in their own (admin) session • We could let this daemon module derive stuff for us, all we have to do is send it the UUID of the node… • Let’s see how that works! !! WARNING: DO NOT TRY THIS AT HOME !! Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 9
  • 10. Sequence Diagram Now show us some code..!! Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 10
  • 11. Nothing Like the Smell of a Good Hack! (unless you are Hippo Support and got 50+ clients doing this…) Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 11
  • 12. Stuff We Learned 1. Make Sure Your Daemon Module is Thread Safe 2. When you Refresh a Session, any Nodes it Supplied Become Useless 3. If a Derived Data Function Throws an Exception, any Action that Triggered the Node.save() Fails 4. This Will Break (Delayed) Publishing! 1 + 2 + 3 + 4 == Weird Artifacts ….That took us ages to debug Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 12
  • 13. How to improve Hippo to make this easier • Improve Derived Data Engine to Supply a Decorated Read Only Node instead of Input & Output Properties • Read Only is Good, Because You Don’t Want the Derived Data Engine to Modify/Save other Nodes • Output Concept Can Stay Like it Is • Or… Wait for SOLR Integration Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 13
  • 14. Wouter Danes @wouterdanes Tel: +31–(0)88–268 25 00 Address: Delftechpark 37i Mob: +31-(0) 6 1158 8264 2628 XJ Delft E-mail: [email protected] The Netherlands Delft San Francisco Novi Sad Nordic United Kingdom Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 14