SlideShare une entreprise Scribd logo
1  sur  37
Rapid Prototyping
     Search Applications
     with Solr



Presented by Erik Hatcher
Technical Staff, Lucid Imagination
Why prototype?

     • Demonstrate Solr can handle your needs
     • Mitigate risk, learn the unknown
     • The User Interface is the app
     • It's quick, easy, AND FUN!




                          Lucid Imagination, Inc.
LucidWorks for Solr
      • Great starting point
      • Built-in and pre-configured:
         Clustering
            Carrot2
         Search UI
            Solritas (VelocityResponseWriter)
            Server includes root context, handy for serving static files
         Better stemming
            KStem
         choice of Tomcat or Jetty

                               Lucid Imagination, Inc.
The Requirement

     Make your <Big Enterprise Content Repository>
     searchable
        PDF, Word, PowerPoint,HTML,...
        Accessed through proprietary API




                             Lucid Imagination, Inc.
Simplify

      Do the simplest next step towards the goal
           Let's just index a PDF file




                                  Lucid Imagination, Inc.
File indexing first attempt


  curl "http://localhost:8983
   /solr/ upda t e/ ex t r a c t
   ?stream.file=/docs/file.pdf"


  Document [null] missing required field: id

                 f r om s c hem . x m
                               a     l
                 <field name="id" type="string"
                            indexed="true" stored="true"
                            required="true" />

                 <uniqueKey>id</uniqueKey>



                          Lucid Imagination, Inc.
Unique Key

    • Practically all Solr-based applications use a unique key
     for each document
    • Required to "update" a document, and some
     components need it
    • Determining a unique key scheme:
       May be obvious
          a DB primary key or URL
       May involve a new scheme, especially with multiple data sources
          perhaps prefix data-source specific id's with the data source code:
             <data-source>-<document-id-within-datasource>
             Examples: product-1234, article-1234


                                 Lucid Imagination, Inc.
Unique identifier



  curl "http://localhost:8983
   /solr/update/extract
   ?stream.file=/docs/file.pdf
   &l i t er a l . i d=/ doc s / f i l e. pdf "



       <response>
         <lst name="responseHeader">
           <int name="status">0</int>
           <int name="QTime">1838</int>
         </lst>
       </response>



                                       Lucid Imagination, Inc.
Instant UI



             http://localhost:8983/solr/itas
                                                            Pronounced: so-LAIR-uh-toss




                                  Lucid Imagination, Inc.
Solritas

     • Pronounced: so-LAIR-uh-toss
     • Celeritas is a Latin word, translated as "swiftness" or
      "speed". It is often given as the origin of the symbol c,
      the universal notation for the speed of light -
      http://en.wikipedia.org/wiki/Celeritas
     • VelocityResponseWriter - simply passes the Solr
      response through the Apache Velocity templating
      engine
     • http://wiki.apache.org/solr/VelocityResponseWriter



                            Lucid Imagination, Inc.
Keeping it Clean

      • Customize the schema
         Remove example fields
      • Make URLs domain-specific
         Remove unused/example request handlers
         Add custom handlers with your defaults
         Note: tinkering with URLs requires client / template
         changes too
            specifically in browse.vm and VM_global_library.vm
      • Make a habit of tidying up after each step!


                             Lucid Imagination, Inc.
Specific schema changes
Added stored body field (schema.xml)

      + <f i e l d na m =" body " t y pe=" t ex t " i ndex ed=" t r ue "
                            e
      s t or e d=" t r ue " / >

Copy all fields into catch-all "text" field (schema.xml)

       +   <c opy F i e l d s our c e =" * " de s t =" t e x t " / >


Adjusted /update/extract to body field (solrconfig.xml)

         <! - - Al l t he m i n c ont e nt goe s i nt o " t e x t " . . . i f y ou ne e d t o
                                a
   r e t ur n
   t he e x t r a c t e d t e x t or do hi ghl i ght i ng, us e a s t or e d f i e l d. - - >-

   <s t r na m =" f m p. c ont ent " >t e x t </ s t r >+
              e      a
   <s t r na m =" f m p. c ont ent " >body </ s t r >
              e      a



                                                 Lucid Imagination, Inc.
Get rid of the /itas!

 <requestHandler name="/ br ows e" class="solr.SearchHandler">
   <lst name="defaults">
     <!-- UI settings -->
     <str name="wt">velocity</str>
     <str name="v.template">browse</str>
     <str name="v.layout">layout</str>
     <s t r na me=" t i t l e" >M F i l e S ea r c h Pr ot ot y pe</ s t r >
                                 y

      <!-- results details -->
      <str name="rows">10</str>
      <s t r na me=" f l " >i d, c ont ent _t y pe, l a s t _modi f i ed, s c or e</ s t r >

      <!-- query parsing -->
      <str name="defType">lucene</str>
      <str name="q">*:*</str>

     <!-- faceting -->
     <str name="facet">on</str>
     <s t r na me=" f a c et . f i el d" >c ont ent _t y pe</ s t r >
     <str name="facet.mincount">1</str>
   </lst>
 </requestHandler>

                                                 Lucid Imagination, Inc.
Faceting




http://localhost:8983/solr/browse




                                    Lucid Imagination, Inc.
Changing Solr's config


      Prototyping peace of mind:
         Backup original files :)
         Stop LucidWorks for Solr (ctrl-c)
         Delete index (rm -Rf lucidworks/solr/data)
            Always be able to reindex from scratch!
         Restart LucidWorks for Solr (./start.sh)
         Reindex


                          Lucid Imagination, Inc.
Customizing results display

v el oc i t y / hi t . v m
<div class="result-document">
   <b>$doc . ge t F i el dVa l ue( ' i d' ) </ b>
   <p>L a s t m    odi f i ed:
        $! doc . ge t F i el dVa l ue( ' l a s t _ modi f i e d' )
   </ p>
...
# # l ea v e def a ul t debuggi ng bi t t her e, y ou' l l wa nt i t l a t er




                                     Lucid Imagination, Inc.
last_modified unknown



# i f ( $doc . get F i e l dVa l ue( ' l a s t _ modi f i e d' ) )
<p>L a s t m   odi f i e d:
$doc . get F i el dVa l ue ( ' l a s t _ m odi f i e d' ) </ p># end




                                   Lucid Imagination, Inc.
Hyperlinking to files


<a href="f i l e: / / $doc . get F i el dVa l ue( ' i d' ) ">
  $doc.getFieldValue('id')
</a>




 Note: responsible browsers disallow file:// links from working here (unless
 otherwise configured), though copying and pasting the link should work in a
 new window.




                                   Lucid Imagination, Inc.
Highlighting search terms

add to s ol r c onf i g. x ml

<requestHandler name="/browse" class="solr.SearchHandler">
  <lst name="defaults">
...
    <! - - hi ghl i ght i ng - - >
    <s t r na me=" hl " >on</ s t r >
    <s t r na me=" hl . f l " >body </ s t r >
    <s t r na me=" hl . s ni ppet s " >3</ s t r >

  </lst>
</requestHandler>




                                Lucid Imagination, Inc.
Highlighting display

i n hi t . v m
<p>
#foreach($fragment in
$response.response.highlighting.get($doc.getFi
eldValue('id')).body)
     . . . $f r a gment . . .
#end</p>




                       Lucid Imagination, Inc.
Adding spell checking

      schema.xml changes
          Add textSpell field type to schema.xml
          Add spell field, of type textSpell
          copyField desired fields into spell field
      solrconfig.xml changes
          change the spellchecker field name to "spell"
          set spellchecker buildOnCommit to true
          add spellcheck component and options to handler
      Stop, delete data/ directory, restart, reindex
      Add spell check suggestions to UI



                                   Lucid Imagination, Inc.
Spellcheck config
s c he m . x m
        a     l
+         <fieldType name="textSpell" class="solr.TextField">
+               <analyzer>
+                 <tokenizer class="solr.StandardTokenizerFactory"/>
+                 <filter class="solr.LowerCaseFilterFactory"/>
+               </analyzer>
+       </fieldType>

+    <f i el d na m  e=" s pel l " t y pe=" t e x t Spe l l " i ndex e d=" t r ue " s t or e d=" f a l s e "
m t i Va l ued=" t r ue " / >
  ul
+    <c opy F i e l d s our c e =" body " de s t =" s pel l " / >



s ol r c onf i g. x ml
-<str name="field">name</str>
+<str name="field">spell</str>
+<str name="buildOnCommit">true</str>

+            <!-- spellchecking -->
+            <str name="spellcheck">on</str>
+            <str name="spellcheck.collate">true</str>

+         <arr name="last-components">
+           <str>spellcheck</str>
+         </arr>

                                                           Lucid Imagination, Inc.
Did you mean...?




Added to br ows e. v m
#if($response.response.spellcheck.suggestions.size() > 0)

Di d y ou m a n <a
           e
href="/solr/browse?q=$esc.url($response.response.spellcheck.su
ggestions.collation)">$response.response.spellcheck.suggestion
s.collation</a>?

#end




                            Lucid Imagination, Inc.
Dessert: Pie




               Lucid Imagination, Inc.
How the chart came to life

      • Found simple JavaScript chart package:
       http://www.jscharts.com
      • Looked at an example
      • Downloaded
         placed jschart.js in
         ~/LucidWorks/lucidworks/jetty/webapps/root/scripts/
      • Integrated




                             Lucid Imagination, Inc.
JSChart integration
added to l a y out . v m
<script type="text/javascript"
src="/scripts/jscharts.js"></script>


c onf / v e l oc i t y / j s c ha r t . v m
#set($facet_field=$request.params.get('facet.field'))
#set($chart_type=$request.params.get('jschart.type'))
#set($facets=$response.response.facet_counts.facet_fields.get($facet_field))
<div id="jschart_${chart_type}_${facet_field}">$facet_field</div>
<s c r i pt t y pe =" t e x t / j a v a s c r i pt " >
   f a c e t _a r r a y = new Ar r a y ( ) ;
   #f or e a c h( $f a c e t i n $f a c e t s )
       f a c et _a r r a y . pus h( [ ' ${ f a c e t . k ey } ' , ${ f a c et . v a l ue} ] )
   #e nd
   v a r c ha r t = ne w J SCha r t ( ' j s c ha r t _${ c ha r t _t y pe} _ ${ f a c et _ f i el d} ' , ' ${ c ha r t _t y pe} ' ) ;
   c ha r t . s et Da t a Ar r a y ( f a c et _ a r r a y ) ;
   c ha r t . s et T i t l e( ' $f a c et _f i el d' )
   c ha r t . dr a w( ) ;
</ s c r i pt >



           http://localhost:8983/solr/select?q=*:*&rows=0&facet=on&facet.field=content_typ
           e&wt=velocity&v.template=jschart&v.layout=layout&jschart.type=pie&title=Pie
                                                             Lucid Imagination, Inc.
Cleaning up chart URLs
added to s ol r c onf i g. x m l
<requestHandler name="/ j s c ha r t “ class="solr.SearchHandler">
  <lst name="defaults">
    <!-- UI settings -->
    <str name="wt">velocity</str>
    <s t r na me=" v . t e m a t e " >j s c ha r t </ s t r >
                            pl
    <str name="jschart.type">pie</str>
    <!-- results details -->
    <s t r na me=" r ows " >0</ s t r >
    <!-- query parsing -->
    <str name="defType">lucene</str>
    <str name="q">*:*</str>
    <!-- faceting -->
    <str name="facet">on</str>
    <str name="facet.field">content_type</str>
    <str name="facet.mincount">1</str>
< /lst>
</requestHandler>


                                 Lucid Imagination, Inc.
Standalone views
http://localhost:8983/solr/jschart?v.layout=layout&jschart.type=pie




http://localhost:8983/solr/jschart?v.layout=layout&jschart.type=bar




                                 Lucid Imagination, Inc.
Ajaxifying

added to br ows e . v m inside facet field loop
                       ,

<a href="#"
onClick="javascript:$('#jschart_${field.name}'
).load('/ s ol r / j s c ha r t ? j s c ha r t . t y pe =pi e &q=$!{es
c.url($params.get('q'))}');">Pie</a>

<a href="#"
onClick="javascript:$('#jschart_${field.name}'
).load('/ s ol r / j s c ha r t ? j s c ha r t . t y pe =ba r &q=$!{es
c.url($params.get('q'))}');">Bar</a>
<div id="jschart_${field.name}"></div>




  jQuery is included in the default layout



                                                 Lucid Imagination, Inc.
debugging

     debugQuery=true
        Adds scoring explanations for each hit
        dumps the request and response objects (toString) at the
        bottom of the page




                             Lucid Imagination, Inc.
Score Explanation
http://localhost:8983/solr/browse?q=user+interfaces&debugQuery=true




                                Lucid Imagination, Inc.
Now what?

     • Script the indexer
     • Customize header & footer, adjust styles and colors,
      add your logo
     • Show your boss
     • Ask "what now?"




                            Lucid Imagination, Inc.
General next steps

      • Script full & incremental indexing processes
      • Adjust schema
         fields, field types, analysis
      • Tweak configuration as needed
         caches, indexing parameters
      • Deploy to staging/production environments




                                Lucid Imagination, Inc.
Is it done?

       No.
       Keep it (slightly) ugly, for this reason.
          iron out capabilities, then pretty it up
       prototyping provides the Solr requests your REAL
        application will use. Copy and paste what you need
        from Solr's logs and prototype templates




                                Lucid Imagination, Inc.
Prototyping tools

      • CSV update handler
      • Schema Browser (in Solr's admin)
      • Solritas
      • Solr Explorer
         https://issues.apache.org/jira/browse/SOLR-1163
      • Solr Flare
         http://wiki.apache.org/solr/Flare




                              Lucid Imagination, Inc.
Test

       • Performance
       • Scalability
       • Relevance
       • Automate all of the above,
        start baselines and avoid regressions




                            Lucid Imagination, Inc.
Questions?



      Thank You!




                   Lucid Imagination, Inc.

Contenu connexe

Tendances

Schemaless Solr and the Solr Schema REST API
Schemaless Solr and the Solr Schema REST APISchemaless Solr and the Solr Schema REST API
Schemaless Solr and the Solr Schema REST APIlucenerevolution
 
Developing for Node.JS with MySQL and NoSQL
Developing for Node.JS with MySQL and NoSQLDeveloping for Node.JS with MySQL and NoSQL
Developing for Node.JS with MySQL and NoSQLJohn David Duncan
 
Omnisearch in AEM 6.2 - Search All the Things
Omnisearch in AEM 6.2 - Search All the ThingsOmnisearch in AEM 6.2 - Search All the Things
Omnisearch in AEM 6.2 - Search All the ThingsJustin Edelson
 
Web2py tutorial to create db driven application.
Web2py tutorial to create db driven application.Web2py tutorial to create db driven application.
Web2py tutorial to create db driven application.fRui Apps
 
Web2py Code Lab
Web2py Code LabWeb2py Code Lab
Web2py Code LabColin Su
 
An introduction to SQLAlchemy
An introduction to SQLAlchemyAn introduction to SQLAlchemy
An introduction to SQLAlchemymengukagan
 
DEF CON 27 -OMER GULL - select code execution from using sq lite
DEF CON 27 -OMER GULL - select code execution from using sq liteDEF CON 27 -OMER GULL - select code execution from using sq lite
DEF CON 27 -OMER GULL - select code execution from using sq liteFelipe Prado
 
High Performance XQuery Processing in PHP with Zorba by Vikram Vaswani
High Performance XQuery Processing in PHP with Zorba by Vikram VaswaniHigh Performance XQuery Processing in PHP with Zorba by Vikram Vaswani
High Performance XQuery Processing in PHP with Zorba by Vikram Vaswanivvaswani
 
PofEAA and SQLAlchemy
PofEAA and SQLAlchemyPofEAA and SQLAlchemy
PofEAA and SQLAlchemyInada Naoki
 
Java FX 2.0 - A Developer's Guide
Java FX 2.0 - A Developer's GuideJava FX 2.0 - A Developer's Guide
Java FX 2.0 - A Developer's GuideStephen Chin
 
SQLAlchemy Core: An Introduction
SQLAlchemy Core: An IntroductionSQLAlchemy Core: An Introduction
SQLAlchemy Core: An IntroductionJason Myers
 
PyCon 2010 SQLAlchemy tutorial
PyCon 2010 SQLAlchemy tutorialPyCon 2010 SQLAlchemy tutorial
PyCon 2010 SQLAlchemy tutorialjbellis
 
My sql regis_handsonlab
My sql regis_handsonlabMy sql regis_handsonlab
My sql regis_handsonlabsqlhjalp
 
Let ColdFusion ORM do the work for you!
Let ColdFusion ORM do the work for you!Let ColdFusion ORM do the work for you!
Let ColdFusion ORM do the work for you!Masha Edelen
 

Tendances (20)

Schemaless Solr and the Solr Schema REST API
Schemaless Solr and the Solr Schema REST APISchemaless Solr and the Solr Schema REST API
Schemaless Solr and the Solr Schema REST API
 
Developing for Node.JS with MySQL and NoSQL
Developing for Node.JS with MySQL and NoSQLDeveloping for Node.JS with MySQL and NoSQL
Developing for Node.JS with MySQL and NoSQL
 
Omnisearch in AEM 6.2 - Search All the Things
Omnisearch in AEM 6.2 - Search All the ThingsOmnisearch in AEM 6.2 - Search All the Things
Omnisearch in AEM 6.2 - Search All the Things
 
Web2py tutorial to create db driven application.
Web2py tutorial to create db driven application.Web2py tutorial to create db driven application.
Web2py tutorial to create db driven application.
 
Web2py Code Lab
Web2py Code LabWeb2py Code Lab
Web2py Code Lab
 
An introduction to SQLAlchemy
An introduction to SQLAlchemyAn introduction to SQLAlchemy
An introduction to SQLAlchemy
 
Play!ng with scala
Play!ng with scalaPlay!ng with scala
Play!ng with scala
 
DEF CON 27 -OMER GULL - select code execution from using sq lite
DEF CON 27 -OMER GULL - select code execution from using sq liteDEF CON 27 -OMER GULL - select code execution from using sq lite
DEF CON 27 -OMER GULL - select code execution from using sq lite
 
High Performance XQuery Processing in PHP with Zorba by Vikram Vaswani
High Performance XQuery Processing in PHP with Zorba by Vikram VaswaniHigh Performance XQuery Processing in PHP with Zorba by Vikram Vaswani
High Performance XQuery Processing in PHP with Zorba by Vikram Vaswani
 
PofEAA and SQLAlchemy
PofEAA and SQLAlchemyPofEAA and SQLAlchemy
PofEAA and SQLAlchemy
 
Java FX 2.0 - A Developer's Guide
Java FX 2.0 - A Developer's GuideJava FX 2.0 - A Developer's Guide
Java FX 2.0 - A Developer's Guide
 
SQLAlchemy Core: An Introduction
SQLAlchemy Core: An IntroductionSQLAlchemy Core: An Introduction
SQLAlchemy Core: An Introduction
 
My sql tutorial-oscon-2012
My sql tutorial-oscon-2012My sql tutorial-oscon-2012
My sql tutorial-oscon-2012
 
PyCon 2010 SQLAlchemy tutorial
PyCon 2010 SQLAlchemy tutorialPyCon 2010 SQLAlchemy tutorial
PyCon 2010 SQLAlchemy tutorial
 
Quebec pdo
Quebec pdoQuebec pdo
Quebec pdo
 
My sql regis_handsonlab
My sql regis_handsonlabMy sql regis_handsonlab
My sql regis_handsonlab
 
CodeIgniter 3.0
CodeIgniter 3.0CodeIgniter 3.0
CodeIgniter 3.0
 
Fatc
FatcFatc
Fatc
 
Let ColdFusion ORM do the work for you!
Let ColdFusion ORM do the work for you!Let ColdFusion ORM do the work for you!
Let ColdFusion ORM do the work for you!
 
Percona toolkit
Percona toolkitPercona toolkit
Percona toolkit
 

En vedette

Solr Flair: Search User Interfaces Powered by Apache Solr
Solr Flair: Search User Interfaces Powered by Apache SolrSolr Flair: Search User Interfaces Powered by Apache Solr
Solr Flair: Search User Interfaces Powered by Apache SolrErik Hatcher
 
Using Solr to find the Right Person for the Right Job
Using Solr to find the Right Person for the Right JobUsing Solr to find the Right Person for the Right Job
Using Solr to find the Right Person for the Right JobLucidworks (Archived)
 
Already, just, still, yet
Already, just, still, yetAlready, just, still, yet
Already, just, still, yettanica
 
Presentation to Virginia Beach Vision, 1 27-14
Presentation to Virginia Beach Vision, 1 27-14Presentation to Virginia Beach Vision, 1 27-14
Presentation to Virginia Beach Vision, 1 27-14Marty Kaszubowski
 
Impact of open source search on the intelligence community
Impact of open source search on the intelligence communityImpact of open source search on the intelligence community
Impact of open source search on the intelligence communityLucidworks (Archived)
 
Chicago Solr Meetup - June 10th: This Ain't Your Parents' Search Engine
Chicago Solr Meetup - June 10th: This Ain't Your Parents' Search EngineChicago Solr Meetup - June 10th: This Ain't Your Parents' Search Engine
Chicago Solr Meetup - June 10th: This Ain't Your Parents' Search EngineLucidworks (Archived)
 
Tate Tyler - Designing the Search Experience
Tate Tyler - Designing the Search ExperienceTate Tyler - Designing the Search Experience
Tate Tyler - Designing the Search ExperienceLucidworks (Archived)
 
Lady gaga
Lady gaga Lady gaga
Lady gaga tanica
 
Discover the new techniques about search application
Discover the new techniques about search applicationDiscover the new techniques about search application
Discover the new techniques about search applicationLucidworks (Archived)
 
Amazing grace[1]
Amazing grace[1]Amazing grace[1]
Amazing grace[1]tanica
 
2010 10-building-global-listening-platform-with-solr
2010 10-building-global-listening-platform-with-solr2010 10-building-global-listening-platform-with-solr
2010 10-building-global-listening-platform-with-solrLucidworks (Archived)
 
Downtown SF Lucene/Solr Meetup - September 17: Thoth: Real-time Solr Monitori...
Downtown SF Lucene/Solr Meetup - September 17: Thoth: Real-time Solr Monitori...Downtown SF Lucene/Solr Meetup - September 17: Thoth: Real-time Solr Monitori...
Downtown SF Lucene/Solr Meetup - September 17: Thoth: Real-time Solr Monitori...Lucidworks (Archived)
 
Updated: Getting Ready for Due-Diligence
Updated:  Getting Ready for Due-DiligenceUpdated:  Getting Ready for Due-Diligence
Updated: Getting Ready for Due-DiligenceMarty Kaszubowski
 

En vedette (20)

Ajax solr
Ajax solrAjax solr
Ajax solr
 
Solr Flair: Search User Interfaces Powered by Apache Solr
Solr Flair: Search User Interfaces Powered by Apache SolrSolr Flair: Search User Interfaces Powered by Apache Solr
Solr Flair: Search User Interfaces Powered by Apache Solr
 
Using Solr to find the Right Person for the Right Job
Using Solr to find the Right Person for the Right JobUsing Solr to find the Right Person for the Right Job
Using Solr to find the Right Person for the Right Job
 
The Seven Deadly Sins of Solr
The Seven Deadly Sins of SolrThe Seven Deadly Sins of Solr
The Seven Deadly Sins of Solr
 
Already, just, still, yet
Already, just, still, yetAlready, just, still, yet
Already, just, still, yet
 
Presentation to Virginia Beach Vision, 1 27-14
Presentation to Virginia Beach Vision, 1 27-14Presentation to Virginia Beach Vision, 1 27-14
Presentation to Virginia Beach Vision, 1 27-14
 
Real Time Search at Yammer
Real Time Search at YammerReal Time Search at Yammer
Real Time Search at Yammer
 
Impact of open source search on the intelligence community
Impact of open source search on the intelligence communityImpact of open source search on the intelligence community
Impact of open source search on the intelligence community
 
Chicago Solr Meetup - June 10th: This Ain't Your Parents' Search Engine
Chicago Solr Meetup - June 10th: This Ain't Your Parents' Search EngineChicago Solr Meetup - June 10th: This Ain't Your Parents' Search Engine
Chicago Solr Meetup - June 10th: This Ain't Your Parents' Search Engine
 
Tate Tyler - Designing the Search Experience
Tate Tyler - Designing the Search ExperienceTate Tyler - Designing the Search Experience
Tate Tyler - Designing the Search Experience
 
What’s new in apache lucene 3.0
What’s new in apache lucene 3.0What’s new in apache lucene 3.0
What’s new in apache lucene 3.0
 
Lady gaga
Lady gaga Lady gaga
Lady gaga
 
Solr & Lucene at Etsy
Solr & Lucene at EtsySolr & Lucene at Etsy
Solr & Lucene at Etsy
 
Discover the new techniques about search application
Discover the new techniques about search applicationDiscover the new techniques about search application
Discover the new techniques about search application
 
Com camp2014
Com camp2014Com camp2014
Com camp2014
 
Lucene rev preso cisco gannu
Lucene rev preso cisco gannuLucene rev preso cisco gannu
Lucene rev preso cisco gannu
 
Amazing grace[1]
Amazing grace[1]Amazing grace[1]
Amazing grace[1]
 
2010 10-building-global-listening-platform-with-solr
2010 10-building-global-listening-platform-with-solr2010 10-building-global-listening-platform-with-solr
2010 10-building-global-listening-platform-with-solr
 
Downtown SF Lucene/Solr Meetup - September 17: Thoth: Real-time Solr Monitori...
Downtown SF Lucene/Solr Meetup - September 17: Thoth: Real-time Solr Monitori...Downtown SF Lucene/Solr Meetup - September 17: Thoth: Real-time Solr Monitori...
Downtown SF Lucene/Solr Meetup - September 17: Thoth: Real-time Solr Monitori...
 
Updated: Getting Ready for Due-Diligence
Updated:  Getting Ready for Due-DiligenceUpdated:  Getting Ready for Due-Diligence
Updated: Getting Ready for Due-Diligence
 

Similaire à Rapid prototyping search applications with solr

Rapid Prototyping with Solr
Rapid Prototyping with SolrRapid Prototyping with Solr
Rapid Prototyping with SolrErik Hatcher
 
Rapid Prototyping with Solr
Rapid Prototyping with SolrRapid Prototyping with Solr
Rapid Prototyping with SolrErik Hatcher
 
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguajeKotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguajeVíctor Leonel Orozco López
 
Beyond full-text searches with Lucene and Solr
Beyond full-text searches with Lucene and SolrBeyond full-text searches with Lucene and Solr
Beyond full-text searches with Lucene and SolrBertrand Delacretaz
 
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)James Titcumb
 
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)Pat Patterson
 
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)James Titcumb
 
Dev8d Apache Solr Tutorial
Dev8d Apache Solr TutorialDev8d Apache Solr Tutorial
Dev8d Apache Solr TutorialSourcesense
 
E3 appspresso hands on lab
E3 appspresso hands on labE3 appspresso hands on lab
E3 appspresso hands on labNAVER D2
 
E2 appspresso hands on lab
E2 appspresso hands on labE2 appspresso hands on lab
E2 appspresso hands on labNAVER D2
 
Burn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websitesBurn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websitesLindsay Holmwood
 
Agile Data Science 2.0
Agile Data Science 2.0Agile Data Science 2.0
Agile Data Science 2.0Russell Jurney
 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup PerformanceJustin Cataldo
 
Agile Data Science 2.0
Agile Data Science 2.0Agile Data Science 2.0
Agile Data Science 2.0Russell Jurney
 
Using Apache Solr
Using Apache SolrUsing Apache Solr
Using Apache Solrpittaya
 
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)Igor Bronovskyy
 
Agile Data Science 2.0 - Big Data Science Meetup
Agile Data Science 2.0 - Big Data Science MeetupAgile Data Science 2.0 - Big Data Science Meetup
Agile Data Science 2.0 - Big Data Science MeetupRussell Jurney
 
Performance Optimization and JavaScript Best Practices
Performance Optimization and JavaScript Best PracticesPerformance Optimization and JavaScript Best Practices
Performance Optimization and JavaScript Best PracticesDoris Chen
 
12-security.ppt - PHP and Arabic Language - Index
12-security.ppt - PHP and Arabic Language - Index12-security.ppt - PHP and Arabic Language - Index
12-security.ppt - PHP and Arabic Language - Indexwebhostingguy
 

Similaire à Rapid prototyping search applications with solr (20)

Rapid Prototyping with Solr
Rapid Prototyping with SolrRapid Prototyping with Solr
Rapid Prototyping with Solr
 
Rapid Prototyping with Solr
Rapid Prototyping with SolrRapid Prototyping with Solr
Rapid Prototyping with Solr
 
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguajeKotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
 
Beyond full-text searches with Lucene and Solr
Beyond full-text searches with Lucene and SolrBeyond full-text searches with Lucene and Solr
Beyond full-text searches with Lucene and Solr
 
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
 
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
 
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)
 
Dev8d Apache Solr Tutorial
Dev8d Apache Solr TutorialDev8d Apache Solr Tutorial
Dev8d Apache Solr Tutorial
 
E3 appspresso hands on lab
E3 appspresso hands on labE3 appspresso hands on lab
E3 appspresso hands on lab
 
E2 appspresso hands on lab
E2 appspresso hands on labE2 appspresso hands on lab
E2 appspresso hands on lab
 
Burn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websitesBurn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websites
 
Agile Data Science 2.0
Agile Data Science 2.0Agile Data Science 2.0
Agile Data Science 2.0
 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup Performance
 
Agile Data Science 2.0
Agile Data Science 2.0Agile Data Science 2.0
Agile Data Science 2.0
 
Using Apache Solr
Using Apache SolrUsing Apache Solr
Using Apache Solr
 
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
 
Agile Data Science 2.0 - Big Data Science Meetup
Agile Data Science 2.0 - Big Data Science MeetupAgile Data Science 2.0 - Big Data Science Meetup
Agile Data Science 2.0 - Big Data Science Meetup
 
Performance Optimization and JavaScript Best Practices
Performance Optimization and JavaScript Best PracticesPerformance Optimization and JavaScript Best Practices
Performance Optimization and JavaScript Best Practices
 
12-security.ppt - PHP and Arabic Language - Index
12-security.ppt - PHP and Arabic Language - Index12-security.ppt - PHP and Arabic Language - Index
12-security.ppt - PHP and Arabic Language - Index
 
Security.ppt
Security.pptSecurity.ppt
Security.ppt
 

Plus de Lucidworks (Archived)

SFBay Area Solr Meetup - July 15th: Integrating Hadoop and Solr
 SFBay Area Solr Meetup - July 15th: Integrating Hadoop and Solr SFBay Area Solr Meetup - July 15th: Integrating Hadoop and Solr
SFBay Area Solr Meetup - July 15th: Integrating Hadoop and SolrLucidworks (Archived)
 
SFBay Area Solr Meetup - June 18th: Box + Solr = Content Search for Business
SFBay Area Solr Meetup - June 18th: Box + Solr = Content Search for BusinessSFBay Area Solr Meetup - June 18th: Box + Solr = Content Search for Business
SFBay Area Solr Meetup - June 18th: Box + Solr = Content Search for BusinessLucidworks (Archived)
 
SFBay Area Solr Meetup - June 18th: Benchmarking Solr Performance
SFBay Area Solr Meetup - June 18th: Benchmarking Solr PerformanceSFBay Area Solr Meetup - June 18th: Benchmarking Solr Performance
SFBay Area Solr Meetup - June 18th: Benchmarking Solr PerformanceLucidworks (Archived)
 
Chicago Solr Meetup - June 10th: Exploring Hadoop with Search
Chicago Solr Meetup - June 10th: Exploring Hadoop with SearchChicago Solr Meetup - June 10th: Exploring Hadoop with Search
Chicago Solr Meetup - June 10th: Exploring Hadoop with SearchLucidworks (Archived)
 
Minneapolis Solr Meetup - May 28, 2014: eCommerce Search with Apache Solr
Minneapolis Solr Meetup - May 28, 2014: eCommerce Search with Apache SolrMinneapolis Solr Meetup - May 28, 2014: eCommerce Search with Apache Solr
Minneapolis Solr Meetup - May 28, 2014: eCommerce Search with Apache SolrLucidworks (Archived)
 
Minneapolis Solr Meetup - May 28, 2014: Target.com Search
Minneapolis Solr Meetup - May 28, 2014: Target.com SearchMinneapolis Solr Meetup - May 28, 2014: Target.com Search
Minneapolis Solr Meetup - May 28, 2014: Target.com SearchLucidworks (Archived)
 
Exploration of multidimensional biomedical data in pub chem, Presented by Lia...
Exploration of multidimensional biomedical data in pub chem, Presented by Lia...Exploration of multidimensional biomedical data in pub chem, Presented by Lia...
Exploration of multidimensional biomedical data in pub chem, Presented by Lia...Lucidworks (Archived)
 
Unstructured Or: How I Learned to Stop Worrying and Love the xml, Presented...
Unstructured   Or: How I Learned to Stop Worrying and Love the xml, Presented...Unstructured   Or: How I Learned to Stop Worrying and Love the xml, Presented...
Unstructured Or: How I Learned to Stop Worrying and Love the xml, Presented...Lucidworks (Archived)
 
Building a Lightweight Discovery Interface for Chinese Patents, Presented by ...
Building a Lightweight Discovery Interface for Chinese Patents, Presented by ...Building a Lightweight Discovery Interface for Chinese Patents, Presented by ...
Building a Lightweight Discovery Interface for Chinese Patents, Presented by ...Lucidworks (Archived)
 
Big Data Challenges, Presented by Wes Caldwell at SolrExchage DC
Big Data Challenges, Presented by Wes Caldwell at SolrExchage DCBig Data Challenges, Presented by Wes Caldwell at SolrExchage DC
Big Data Challenges, Presented by Wes Caldwell at SolrExchage DCLucidworks (Archived)
 
What's New in Lucene/Solr Presented by Grant Ingersoll at SolrExchage DC
What's New  in Lucene/Solr Presented by Grant Ingersoll at SolrExchage DCWhat's New  in Lucene/Solr Presented by Grant Ingersoll at SolrExchage DC
What's New in Lucene/Solr Presented by Grant Ingersoll at SolrExchage DCLucidworks (Archived)
 
Solr At AOL, Presented by Sean Timm at SolrExchage DC
Solr At AOL, Presented by Sean Timm at SolrExchage DCSolr At AOL, Presented by Sean Timm at SolrExchage DC
Solr At AOL, Presented by Sean Timm at SolrExchage DCLucidworks (Archived)
 
Intro to Solr Cloud, Presented by Tim Potter at SolrExchage DC
Intro to Solr Cloud, Presented by Tim Potter at SolrExchage DCIntro to Solr Cloud, Presented by Tim Potter at SolrExchage DC
Intro to Solr Cloud, Presented by Tim Potter at SolrExchage DCLucidworks (Archived)
 
Test Driven Relevancy, Presented by Doug Turnbull at SolrExchage DC
Test Driven Relevancy, Presented by Doug Turnbull at SolrExchage DCTest Driven Relevancy, Presented by Doug Turnbull at SolrExchage DC
Test Driven Relevancy, Presented by Doug Turnbull at SolrExchage DCLucidworks (Archived)
 
Building a data driven search application with LucidWorks SiLK
Building a data driven search application with LucidWorks SiLKBuilding a data driven search application with LucidWorks SiLK
Building a data driven search application with LucidWorks SiLKLucidworks (Archived)
 
Introducing LucidWorks App for Splunk Enterprise webinar
Introducing LucidWorks App for Splunk Enterprise webinarIntroducing LucidWorks App for Splunk Enterprise webinar
Introducing LucidWorks App for Splunk Enterprise webinarLucidworks (Archived)
 

Plus de Lucidworks (Archived) (20)

Integrating Hadoop & Solr
Integrating Hadoop & SolrIntegrating Hadoop & Solr
Integrating Hadoop & Solr
 
The Data-Driven Paradigm
The Data-Driven ParadigmThe Data-Driven Paradigm
The Data-Driven Paradigm
 
SFBay Area Solr Meetup - July 15th: Integrating Hadoop and Solr
 SFBay Area Solr Meetup - July 15th: Integrating Hadoop and Solr SFBay Area Solr Meetup - July 15th: Integrating Hadoop and Solr
SFBay Area Solr Meetup - July 15th: Integrating Hadoop and Solr
 
SFBay Area Solr Meetup - June 18th: Box + Solr = Content Search for Business
SFBay Area Solr Meetup - June 18th: Box + Solr = Content Search for BusinessSFBay Area Solr Meetup - June 18th: Box + Solr = Content Search for Business
SFBay Area Solr Meetup - June 18th: Box + Solr = Content Search for Business
 
SFBay Area Solr Meetup - June 18th: Benchmarking Solr Performance
SFBay Area Solr Meetup - June 18th: Benchmarking Solr PerformanceSFBay Area Solr Meetup - June 18th: Benchmarking Solr Performance
SFBay Area Solr Meetup - June 18th: Benchmarking Solr Performance
 
Chicago Solr Meetup - June 10th: Exploring Hadoop with Search
Chicago Solr Meetup - June 10th: Exploring Hadoop with SearchChicago Solr Meetup - June 10th: Exploring Hadoop with Search
Chicago Solr Meetup - June 10th: Exploring Hadoop with Search
 
What's new in solr june 2014
What's new in solr june 2014What's new in solr june 2014
What's new in solr june 2014
 
Minneapolis Solr Meetup - May 28, 2014: eCommerce Search with Apache Solr
Minneapolis Solr Meetup - May 28, 2014: eCommerce Search with Apache SolrMinneapolis Solr Meetup - May 28, 2014: eCommerce Search with Apache Solr
Minneapolis Solr Meetup - May 28, 2014: eCommerce Search with Apache Solr
 
Minneapolis Solr Meetup - May 28, 2014: Target.com Search
Minneapolis Solr Meetup - May 28, 2014: Target.com SearchMinneapolis Solr Meetup - May 28, 2014: Target.com Search
Minneapolis Solr Meetup - May 28, 2014: Target.com Search
 
Exploration of multidimensional biomedical data in pub chem, Presented by Lia...
Exploration of multidimensional biomedical data in pub chem, Presented by Lia...Exploration of multidimensional biomedical data in pub chem, Presented by Lia...
Exploration of multidimensional biomedical data in pub chem, Presented by Lia...
 
Unstructured Or: How I Learned to Stop Worrying and Love the xml, Presented...
Unstructured   Or: How I Learned to Stop Worrying and Love the xml, Presented...Unstructured   Or: How I Learned to Stop Worrying and Love the xml, Presented...
Unstructured Or: How I Learned to Stop Worrying and Love the xml, Presented...
 
Building a Lightweight Discovery Interface for Chinese Patents, Presented by ...
Building a Lightweight Discovery Interface for Chinese Patents, Presented by ...Building a Lightweight Discovery Interface for Chinese Patents, Presented by ...
Building a Lightweight Discovery Interface for Chinese Patents, Presented by ...
 
Big Data Challenges, Presented by Wes Caldwell at SolrExchage DC
Big Data Challenges, Presented by Wes Caldwell at SolrExchage DCBig Data Challenges, Presented by Wes Caldwell at SolrExchage DC
Big Data Challenges, Presented by Wes Caldwell at SolrExchage DC
 
What's New in Lucene/Solr Presented by Grant Ingersoll at SolrExchage DC
What's New  in Lucene/Solr Presented by Grant Ingersoll at SolrExchage DCWhat's New  in Lucene/Solr Presented by Grant Ingersoll at SolrExchage DC
What's New in Lucene/Solr Presented by Grant Ingersoll at SolrExchage DC
 
Solr At AOL, Presented by Sean Timm at SolrExchage DC
Solr At AOL, Presented by Sean Timm at SolrExchage DCSolr At AOL, Presented by Sean Timm at SolrExchage DC
Solr At AOL, Presented by Sean Timm at SolrExchage DC
 
Intro to Solr Cloud, Presented by Tim Potter at SolrExchage DC
Intro to Solr Cloud, Presented by Tim Potter at SolrExchage DCIntro to Solr Cloud, Presented by Tim Potter at SolrExchage DC
Intro to Solr Cloud, Presented by Tim Potter at SolrExchage DC
 
Test Driven Relevancy, Presented by Doug Turnbull at SolrExchage DC
Test Driven Relevancy, Presented by Doug Turnbull at SolrExchage DCTest Driven Relevancy, Presented by Doug Turnbull at SolrExchage DC
Test Driven Relevancy, Presented by Doug Turnbull at SolrExchage DC
 
Building a data driven search application with LucidWorks SiLK
Building a data driven search application with LucidWorks SiLKBuilding a data driven search application with LucidWorks SiLK
Building a data driven search application with LucidWorks SiLK
 
Introducing LucidWorks App for Splunk Enterprise webinar
Introducing LucidWorks App for Splunk Enterprise webinarIntroducing LucidWorks App for Splunk Enterprise webinar
Introducing LucidWorks App for Splunk Enterprise webinar
 
Solr4 nosql search_server_2013
Solr4 nosql search_server_2013Solr4 nosql search_server_2013
Solr4 nosql search_server_2013
 

Dernier

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
 
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
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
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
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
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
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
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
 
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
 

Dernier (20)

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
 
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.
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
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
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
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
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
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
 
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
 

Rapid prototyping search applications with solr

  • 1. Rapid Prototyping Search Applications with Solr Presented by Erik Hatcher Technical Staff, Lucid Imagination
  • 2. Why prototype? • Demonstrate Solr can handle your needs • Mitigate risk, learn the unknown • The User Interface is the app • It's quick, easy, AND FUN! Lucid Imagination, Inc.
  • 3. LucidWorks for Solr • Great starting point • Built-in and pre-configured: Clustering Carrot2 Search UI Solritas (VelocityResponseWriter) Server includes root context, handy for serving static files Better stemming KStem choice of Tomcat or Jetty Lucid Imagination, Inc.
  • 4. The Requirement Make your <Big Enterprise Content Repository> searchable PDF, Word, PowerPoint,HTML,... Accessed through proprietary API Lucid Imagination, Inc.
  • 5. Simplify Do the simplest next step towards the goal Let's just index a PDF file Lucid Imagination, Inc.
  • 6. File indexing first attempt curl "http://localhost:8983 /solr/ upda t e/ ex t r a c t ?stream.file=/docs/file.pdf" Document [null] missing required field: id f r om s c hem . x m a l <field name="id" type="string" indexed="true" stored="true" required="true" /> <uniqueKey>id</uniqueKey> Lucid Imagination, Inc.
  • 7. Unique Key • Practically all Solr-based applications use a unique key for each document • Required to "update" a document, and some components need it • Determining a unique key scheme: May be obvious a DB primary key or URL May involve a new scheme, especially with multiple data sources perhaps prefix data-source specific id's with the data source code: <data-source>-<document-id-within-datasource> Examples: product-1234, article-1234 Lucid Imagination, Inc.
  • 8. Unique identifier curl "http://localhost:8983 /solr/update/extract ?stream.file=/docs/file.pdf &l i t er a l . i d=/ doc s / f i l e. pdf " <response> <lst name="responseHeader"> <int name="status">0</int> <int name="QTime">1838</int> </lst> </response> Lucid Imagination, Inc.
  • 9. Instant UI http://localhost:8983/solr/itas Pronounced: so-LAIR-uh-toss Lucid Imagination, Inc.
  • 10. Solritas • Pronounced: so-LAIR-uh-toss • Celeritas is a Latin word, translated as "swiftness" or "speed". It is often given as the origin of the symbol c, the universal notation for the speed of light - http://en.wikipedia.org/wiki/Celeritas • VelocityResponseWriter - simply passes the Solr response through the Apache Velocity templating engine • http://wiki.apache.org/solr/VelocityResponseWriter Lucid Imagination, Inc.
  • 11. Keeping it Clean • Customize the schema Remove example fields • Make URLs domain-specific Remove unused/example request handlers Add custom handlers with your defaults Note: tinkering with URLs requires client / template changes too specifically in browse.vm and VM_global_library.vm • Make a habit of tidying up after each step! Lucid Imagination, Inc.
  • 12. Specific schema changes Added stored body field (schema.xml) + <f i e l d na m =" body " t y pe=" t ex t " i ndex ed=" t r ue " e s t or e d=" t r ue " / > Copy all fields into catch-all "text" field (schema.xml) + <c opy F i e l d s our c e =" * " de s t =" t e x t " / > Adjusted /update/extract to body field (solrconfig.xml) <! - - Al l t he m i n c ont e nt goe s i nt o " t e x t " . . . i f y ou ne e d t o a r e t ur n t he e x t r a c t e d t e x t or do hi ghl i ght i ng, us e a s t or e d f i e l d. - - >- <s t r na m =" f m p. c ont ent " >t e x t </ s t r >+ e a <s t r na m =" f m p. c ont ent " >body </ s t r > e a Lucid Imagination, Inc.
  • 13. Get rid of the /itas! <requestHandler name="/ br ows e" class="solr.SearchHandler"> <lst name="defaults"> <!-- UI settings --> <str name="wt">velocity</str> <str name="v.template">browse</str> <str name="v.layout">layout</str> <s t r na me=" t i t l e" >M F i l e S ea r c h Pr ot ot y pe</ s t r > y <!-- results details --> <str name="rows">10</str> <s t r na me=" f l " >i d, c ont ent _t y pe, l a s t _modi f i ed, s c or e</ s t r > <!-- query parsing --> <str name="defType">lucene</str> <str name="q">*:*</str> <!-- faceting --> <str name="facet">on</str> <s t r na me=" f a c et . f i el d" >c ont ent _t y pe</ s t r > <str name="facet.mincount">1</str> </lst> </requestHandler> Lucid Imagination, Inc.
  • 15. Changing Solr's config Prototyping peace of mind: Backup original files :) Stop LucidWorks for Solr (ctrl-c) Delete index (rm -Rf lucidworks/solr/data) Always be able to reindex from scratch! Restart LucidWorks for Solr (./start.sh) Reindex Lucid Imagination, Inc.
  • 16. Customizing results display v el oc i t y / hi t . v m <div class="result-document"> <b>$doc . ge t F i el dVa l ue( ' i d' ) </ b> <p>L a s t m odi f i ed: $! doc . ge t F i el dVa l ue( ' l a s t _ modi f i e d' ) </ p> ... # # l ea v e def a ul t debuggi ng bi t t her e, y ou' l l wa nt i t l a t er Lucid Imagination, Inc.
  • 17. last_modified unknown # i f ( $doc . get F i e l dVa l ue( ' l a s t _ modi f i e d' ) ) <p>L a s t m odi f i e d: $doc . get F i el dVa l ue ( ' l a s t _ m odi f i e d' ) </ p># end Lucid Imagination, Inc.
  • 18. Hyperlinking to files <a href="f i l e: / / $doc . get F i el dVa l ue( ' i d' ) "> $doc.getFieldValue('id') </a> Note: responsible browsers disallow file:// links from working here (unless otherwise configured), though copying and pasting the link should work in a new window. Lucid Imagination, Inc.
  • 19. Highlighting search terms add to s ol r c onf i g. x ml <requestHandler name="/browse" class="solr.SearchHandler"> <lst name="defaults"> ... <! - - hi ghl i ght i ng - - > <s t r na me=" hl " >on</ s t r > <s t r na me=" hl . f l " >body </ s t r > <s t r na me=" hl . s ni ppet s " >3</ s t r > </lst> </requestHandler> Lucid Imagination, Inc.
  • 20. Highlighting display i n hi t . v m <p> #foreach($fragment in $response.response.highlighting.get($doc.getFi eldValue('id')).body) . . . $f r a gment . . . #end</p> Lucid Imagination, Inc.
  • 21. Adding spell checking schema.xml changes Add textSpell field type to schema.xml Add spell field, of type textSpell copyField desired fields into spell field solrconfig.xml changes change the spellchecker field name to "spell" set spellchecker buildOnCommit to true add spellcheck component and options to handler Stop, delete data/ directory, restart, reindex Add spell check suggestions to UI Lucid Imagination, Inc.
  • 22. Spellcheck config s c he m . x m a l + <fieldType name="textSpell" class="solr.TextField"> + <analyzer> + <tokenizer class="solr.StandardTokenizerFactory"/> + <filter class="solr.LowerCaseFilterFactory"/> + </analyzer> + </fieldType> + <f i el d na m e=" s pel l " t y pe=" t e x t Spe l l " i ndex e d=" t r ue " s t or e d=" f a l s e " m t i Va l ued=" t r ue " / > ul + <c opy F i e l d s our c e =" body " de s t =" s pel l " / > s ol r c onf i g. x ml -<str name="field">name</str> +<str name="field">spell</str> +<str name="buildOnCommit">true</str> + <!-- spellchecking --> + <str name="spellcheck">on</str> + <str name="spellcheck.collate">true</str> + <arr name="last-components"> + <str>spellcheck</str> + </arr> Lucid Imagination, Inc.
  • 23. Did you mean...? Added to br ows e. v m #if($response.response.spellcheck.suggestions.size() > 0) Di d y ou m a n <a e href="/solr/browse?q=$esc.url($response.response.spellcheck.su ggestions.collation)">$response.response.spellcheck.suggestion s.collation</a>? #end Lucid Imagination, Inc.
  • 24. Dessert: Pie Lucid Imagination, Inc.
  • 25. How the chart came to life • Found simple JavaScript chart package: http://www.jscharts.com • Looked at an example • Downloaded placed jschart.js in ~/LucidWorks/lucidworks/jetty/webapps/root/scripts/ • Integrated Lucid Imagination, Inc.
  • 26. JSChart integration added to l a y out . v m <script type="text/javascript" src="/scripts/jscharts.js"></script> c onf / v e l oc i t y / j s c ha r t . v m #set($facet_field=$request.params.get('facet.field')) #set($chart_type=$request.params.get('jschart.type')) #set($facets=$response.response.facet_counts.facet_fields.get($facet_field)) <div id="jschart_${chart_type}_${facet_field}">$facet_field</div> <s c r i pt t y pe =" t e x t / j a v a s c r i pt " > f a c e t _a r r a y = new Ar r a y ( ) ; #f or e a c h( $f a c e t i n $f a c e t s ) f a c et _a r r a y . pus h( [ ' ${ f a c e t . k ey } ' , ${ f a c et . v a l ue} ] ) #e nd v a r c ha r t = ne w J SCha r t ( ' j s c ha r t _${ c ha r t _t y pe} _ ${ f a c et _ f i el d} ' , ' ${ c ha r t _t y pe} ' ) ; c ha r t . s et Da t a Ar r a y ( f a c et _ a r r a y ) ; c ha r t . s et T i t l e( ' $f a c et _f i el d' ) c ha r t . dr a w( ) ; </ s c r i pt > http://localhost:8983/solr/select?q=*:*&rows=0&facet=on&facet.field=content_typ e&wt=velocity&v.template=jschart&v.layout=layout&jschart.type=pie&title=Pie Lucid Imagination, Inc.
  • 27. Cleaning up chart URLs added to s ol r c onf i g. x m l <requestHandler name="/ j s c ha r t “ class="solr.SearchHandler"> <lst name="defaults"> <!-- UI settings --> <str name="wt">velocity</str> <s t r na me=" v . t e m a t e " >j s c ha r t </ s t r > pl <str name="jschart.type">pie</str> <!-- results details --> <s t r na me=" r ows " >0</ s t r > <!-- query parsing --> <str name="defType">lucene</str> <str name="q">*:*</str> <!-- faceting --> <str name="facet">on</str> <str name="facet.field">content_type</str> <str name="facet.mincount">1</str> < /lst> </requestHandler> Lucid Imagination, Inc.
  • 29. Ajaxifying added to br ows e . v m inside facet field loop , <a href="#" onClick="javascript:$('#jschart_${field.name}' ).load('/ s ol r / j s c ha r t ? j s c ha r t . t y pe =pi e &q=$!{es c.url($params.get('q'))}');">Pie</a> <a href="#" onClick="javascript:$('#jschart_${field.name}' ).load('/ s ol r / j s c ha r t ? j s c ha r t . t y pe =ba r &q=$!{es c.url($params.get('q'))}');">Bar</a> <div id="jschart_${field.name}"></div> jQuery is included in the default layout Lucid Imagination, Inc.
  • 30. debugging debugQuery=true Adds scoring explanations for each hit dumps the request and response objects (toString) at the bottom of the page Lucid Imagination, Inc.
  • 32. Now what? • Script the indexer • Customize header & footer, adjust styles and colors, add your logo • Show your boss • Ask "what now?" Lucid Imagination, Inc.
  • 33. General next steps • Script full & incremental indexing processes • Adjust schema fields, field types, analysis • Tweak configuration as needed caches, indexing parameters • Deploy to staging/production environments Lucid Imagination, Inc.
  • 34. Is it done? No. Keep it (slightly) ugly, for this reason. iron out capabilities, then pretty it up prototyping provides the Solr requests your REAL application will use. Copy and paste what you need from Solr's logs and prototype templates Lucid Imagination, Inc.
  • 35. Prototyping tools • CSV update handler • Schema Browser (in Solr's admin) • Solritas • Solr Explorer https://issues.apache.org/jira/browse/SOLR-1163 • Solr Flare http://wiki.apache.org/solr/Flare Lucid Imagination, Inc.
  • 36. Test • Performance • Scalability • Relevance • Automate all of the above, start baselines and avoid regressions Lucid Imagination, Inc.
  • 37. Questions? Thank You! Lucid Imagination, Inc.