SlideShare a Scribd company logo
1



Rapid Prototyping
      with
       Solr
                 presented by
Erik Hatcher, Technical Staff, Lucid Imagination




                                                       1
Abstract

   Got data?  Let's make it searchable!  This interactive
   presentation will demonstrate getting documents into
   Solr quickly, provide some tips in adjusting Solr's
   schema to match your needs better, and finally showcase
   your data in a flexible search user interface.  We'll
   see how to rapidly leverage faceting, highlighting,
   spell checking, and debugging.  Even after all that,
   there will be enough time left to outline the next
   steps in developing your search application and taking
   it to production.




                                                             2

                                                                 2
Why prototype?
   Demonstrate Solr can handle your needs
   Buy-in
   "Prototyping: faster than teaching a 9-year-old
    Ju-Jitsu"
   It's quick, easy, AND FUN!
   The User Interface is the app



                                                      3

                                                          3
Got Data?
   Files?
       Solr Cell

   Databases?
       Data Import Handler

   Feeds (Atom/RSS/XML)?
       Data Import Handler

   3rd party repositories?
       Lucene Connectors Framework
       custom indexing scripts using a Solr API

   CSV!!!
     CSV upload handler
                                                   4

                                                       4
UI
   Solritas (VelocityResponseWriter)
   http://localhost:8983/solr/itas
   Documentation:
       http://wiki.apache.org/solr/VelocityResponseWriter




                                                             5

                                                                 5
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

       Tomcat, optionally


                                                                        6

                                                                            6
~/LucidWorks: start.sh
2010-05-21 08:53:49.595::INFO: Logging to STDERR via
org.mortbay.log.StdErrLog
2010-05-21 08:53:49.764::INFO: jetty-6.1.3
May 21, 2010 8:53:50 AM org.apache.solr.core.SolrResourceLoader
locateSolrHome
INFO: JNDI not configured for solr (NoInitialContextEx)
May 21, 2010 8:53:50 AM org.apache.solr.core.SolrResourceLoader
locateSolrHome
INFO: using system property solr.solr.home: /Users/erikhatcher/
LucidWorks/lucidworks/jetty/../solr
May 21, 2010 8:53:50 AM org.apache.solr.core.SolrResourceLoader <init>
INFO: Solr home set to '/Users/erikhatcher/LucidWorks/lucidworks/
jetty/../solr/'
.
.
.
May 21, 2010 8:53:51 AM org.apache.solr.core.SolrCore registerSearcher
INFO: [] Registered new searcher Searcher@21fb3211 main


                                                                         7

                                                                             7
Your Data
First Name,Last Name,Company,Title,Work Country
Erik,Hatcher,Lucid Imagination,"Member, Technical Staff", USA
.
.
.




                                                                8

                                                                    8
First try

curl "http://localhost:8983/solr/update/csv?stream.file=EuroCon2010.csv"

undefined field First Name




                                                                       9

                                                                           9
Schema: dynamic field flexibility


<dynamicField name="*_s"   type="string"   indexed="true"   stored="true"/>
<dynamicField name="*_t"   type="text"     indexed="true"   stored="true"/>




                                                                          10

                                                                               10
Mapping to dynamic fields


curl "http://localhost:8983/solr/update/csv?
stream.file=EuroCon2010.csv&fieldnames=first_s,last_s,company_s,title_t,
country_s&header=true"

Document [null] missing required field: id




                                                                       11

                                                                            11
Identifying uniqueKey, or not
curl "http://localhost:8983/solr/update/csv?

stream.file=EuroCon2010.csv&fieldnames=first_s,   id,company_s,title_t,co
untry_s&header=true"

<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">0</int><int
name="QTime">40</int></lst>
</response>




                                                                        12

                                                                             12
http://localhost:8983/solr/itas




                                  13

                                       13
Schema tinkering
   Removed all example field definitions
   Uncomment and adjust catch-all dynamic field:
       <dynamicField name="*" type="string" multiValued="false"/>

   Ensure uniqueKey is appropriate
       Unusual in this data example:
       <!-- <uniqueKey>id</uniqueKey> -->

   Make every document/field fully searchable!
       <copyField source="*" dest="text"/>

   Then restart!
                                                                     14

                                                                          14
Issues with no uniqueKey
   Remove from solrconfig.xml references to:
       clustering component
       query elevation component
       data import handler

   Then restart!




                                               15

                                                    15
Reindexing with cleaner field names
# Delete all documents
curl "http://localhost:8983/solr/update?stream.body=%3Cdelete%3E%3Cquery
%3E*:*%3C/query%3E%3C/delete%3E&commit=true"

# Index your data
curl "http://localhost:8983/solr/update/csv?
commit=true&stream.file=EuroCon2010.csv&fieldnames=   first,last,
company,title,country&header=true"




                                                                       16

                                                                            16
Faceting
 http://localhost:8983/solr/itas?facet.field=country




                                                      17

                                                           17
country normalization
http://localhost:8983/solr/update/csv?
commit=true&stream.file=EuroCon2010.csv&fieldnames=first,last,company,ti
             f.country.map=Great
tle,country&header=true&

+Britain:United+Kingdom




                                                                       18

                                                                            18
UI treatments
   Customize request handler mappings
   Edit templates
       hit display
       header/footer
       style




                                         19

                                              19
Customize request handlers
  <requestHandler name="/browse" class="solr.SearchHandler">
    <lst name="defaults">
      <str name="wt">velocity</str>
      <str name="v.template">browse</str>
      <str name="v.layout">layout</str>

     <str name="rows">10</str>
     <str name="fl">*,score</str>

     <str   name="defType">lucene</str>
     <str   name="q">*:*</str>
     <str   name="debugQuery">true</str>
     <str   name="hl">on</str>
     <str   name="hl.fl">title</str>
     <str   name="hl.fragsize">0</str>
     <str   name="hl.alternateField">title</str>

      <str name="facet">on</str>
      <str name="facet.mincount">1</str>
      <str name="facet.missing">true</str>
    </lst>
    <lst name="appends">
      <str name="facet.field">country</str>
    </lst>
  </requestHandler>                                            20

                                                                    20
hit.vm

<div class="result-document">
  <p>$doc.getFieldValue('first') $doc.getFieldValue('last')</p>
  <p>$!doc.getFieldValue('title'), $!doc.getFieldValue('company')</p>
  <p>$!doc.getFieldValue('country')</p>
</div>




                                                                        21

                                                                             21
Voila!




         22

              22
Adding bells and whistles
   JQuery
       <script type="text/javascript" src="/solr/admin/
        jquery-1.2.3.min.js"></script>

   Let's add a tree map
       <script type="text/javascript" src="/scripts/treemap.js"></script>
       http://plugins.jquery.com/project/Treemap




                                                                             23

                                                                                  23
tree map table
<script type="text/javascript">
  function onLoad() {
     jQuery("#treemap-country").treemap(640,480, {});
  }
</script>
----------------------------
<body onload="onLoad();">
----------------------------
<table id="treemap-country">
#foreach($facet in $response.getFacetField('country').values)
  <tr>
     <td>#if($facet.name)
$esc.html($facet.name)#else&lt;Unspecified&gt;#end</td>
     <td>$facet.count</td>
     <td>#if($facet.name)$esc.html($facet.name)#{else}Unspecified#end</
td>
  </tr>
#end
</table>

                                                                          24

                                                                               24
Tree map




           25

                25
Ajax fun: giveaways
   Add "static" templated page
   JQuery Ajax request
   snippet templated output




                                  26

                                       26
"static" Solritas page
 solrconfig.xml
 <requestHandler name="/giveaways" class="solr.DumpRequestHandler">
   <lst name="defaults">
     <str name="wt">velocity</str>
     <str name="v.template">giveaways</str>
     <str name="v.layout">layout</str>
   </lst>
 </requestHandler>

 giveaways.vm
 <input type="button" value="Pick a Winner" onClick="javascript:$
 ('#winner').load('/solr/generate_winner?sort=random_' + new
 Date().getTime() + '+asc');">
 <h2>And the winner is...</h2>
 <center><font size="20"><div id="winner"></div></font></center>




                                                                      27

                                                                           27
fragment template
solrconfig.xml
<requestHandler name="/generate_winner" class="solr.SearchHandler">
  <!-- sort=random_... required -->
  <lst name="defaults">
    <str name="wt">velocity</str>
    <str name="v.template">winner</str>

    <str name="rows">1</str>
    <str name="fl">first,last</str>

    <str name="defType">lucene</str>
    <str name="q">*:* -company:"Lucid Imagination" -company:"Stone Circle
Productions"</str>
      </lst>
   </requestHandler>


winner.vm
#set($winner=$response.results.get(0))
$winner.getFieldValue('first') $winner.getFieldValue('last')

                                                                       28

                                                                            28
And the winner is...




                       29

                            29
Prototyping tools
   CSV update handler
   Schema Browser
   Solritas
   Solr Explorer
       https://issues.apache.org/jira/browse/SOLR-1163

   Solr Flare
       http://wiki.apache.org/solr/Flare



                                                          30

                                                               30
Refine, iterate, integrate
   What's next?
       script full & delta indexing processes
       adjust schema
         define fields, field types, analysis

       tweak configuration
         caches, indexing parameters

       deploy to staging/production environments




                                                    31

                                                         31
Test
   Performance
   Scalability
   Relevance
   Automate all of the above, start baselines and avoid
    regressions




                                                           32

                                                                32

More Related Content

PDF
Rapid prototyping search applications with solr
PDF
Make your gui shine with ajax solr
PPTX
Apache Solr + ajax solr
PDF
Solr Anti-Patterns: Presented by Rafał Kuć, Sematext
PDF
Solr Anti - patterns
PDF
Scala active record
PDF
Solr workshop
PPTX
Playing With (B)Sqli
Rapid prototyping search applications with solr
Make your gui shine with ajax solr
Apache Solr + ajax solr
Solr Anti-Patterns: Presented by Rafał Kuć, Sematext
Solr Anti - patterns
Scala active record
Solr workshop
Playing With (B)Sqli

What's hot (20)

PDF
Scala ActiveRecord
PDF
Building node.js applications with Database Jones
PDF
Add Powerful Full Text Search to Your Web App with Solr
PDF
ORM Injection
PDF
ERRest
PDF
Developing for Node.JS with MySQL and NoSQL
PDF
ERRest - The Next Steps
PDF
Web2py Code Lab
ODP
An introduction to SQLAlchemy
PDF
Web2py tutorial to create db driven application.
PDF
PofEAA and SQLAlchemy
PDF
Alfredo-PUMEX
PDF
ORM2Pwn: Exploiting injections in Hibernate ORM
PDF
RicoLiveGrid
PDF
td_mxc_rubyrails_shin
PDF
Let ColdFusion ORM do the work for you!
ODP
Introduction to Apache solr
PDF
XQuery Design Patterns
PPT
ShmooCon 2009 - (Re)Playing(Blind)Sql
PDF
New methods for exploiting ORM injections in Java applications
Scala ActiveRecord
Building node.js applications with Database Jones
Add Powerful Full Text Search to Your Web App with Solr
ORM Injection
ERRest
Developing for Node.JS with MySQL and NoSQL
ERRest - The Next Steps
Web2py Code Lab
An introduction to SQLAlchemy
Web2py tutorial to create db driven application.
PofEAA and SQLAlchemy
Alfredo-PUMEX
ORM2Pwn: Exploiting injections in Hibernate ORM
RicoLiveGrid
td_mxc_rubyrails_shin
Let ColdFusion ORM do the work for you!
Introduction to Apache solr
XQuery Design Patterns
ShmooCon 2009 - (Re)Playing(Blind)Sql
New methods for exploiting ORM injections in Java applications
Ad

Similar to Rapid Prototyping with Solr (20)

PDF
Rapid Prototyping with Solr
PDF
Rapid Prototyping with Solr
PDF
Apache Solr 1.4 – Faster, Easier, and More Versatile than Ever
PDF
Introduction to Solr
PDF
Rapid prototyping with solr - By Erik Hatcher
PDF
Rapid Prototyping with Solr
PDF
Apache Solr crash course
PDF
Solr Powered Lucene
PDF
Get the most out of Solr search with PHP
KEY
Solr 101
PDF
Solr Recipes
PDF
Find it, possibly also near you!
PDF
Solr Masterclass Bangkok, June 2014
PPTX
Apache Solr - search for everyone!
PPTX
Solr introduction
PDF
Introduction to Solr
PPTX
Assamese search engine using SOLR by Moinuddin Ahmed ( moin )
PDF
NoSQL, Apache SOLR and Apache Hadoop
ODP
Solr features
PDF
Lucene for Solr Developers
Rapid Prototyping with Solr
Rapid Prototyping with Solr
Apache Solr 1.4 – Faster, Easier, and More Versatile than Ever
Introduction to Solr
Rapid prototyping with solr - By Erik Hatcher
Rapid Prototyping with Solr
Apache Solr crash course
Solr Powered Lucene
Get the most out of Solr search with PHP
Solr 101
Solr Recipes
Find it, possibly also near you!
Solr Masterclass Bangkok, June 2014
Apache Solr - search for everyone!
Solr introduction
Introduction to Solr
Assamese search engine using SOLR by Moinuddin Ahmed ( moin )
NoSQL, Apache SOLR and Apache Hadoop
Solr features
Lucene for Solr Developers
Ad

More from Erik Hatcher (20)

PDF
Ted Talk
PDF
Solr Payloads
PDF
it's just search
PDF
Lucene's Latest (for Libraries)
PDF
Solr Indexing and Analysis Tricks
PDF
Solr Powered Libraries
PDF
Solr Query Parsing
PDF
"Solr Update" at code4lib '13 - Chicago
PDF
Query Parsing - Tips and Tricks
PDF
Solr 4
PDF
Solr Flair
PDF
Introduction to Solr
PDF
Lucene for Solr Developers
PDF
Lucene for Solr Developers
PDF
What's New in Solr 3.x / 4.0
PDF
Solr Application Development Tutorial
PDF
Solr Recipes Workshop
PDF
Lucene for Solr Developers
PDF
code4lib 2011 preconference: What's New in Solr (since 1.4.1)
PDF
Rapid Prototyping with Solr
Ted Talk
Solr Payloads
it's just search
Lucene's Latest (for Libraries)
Solr Indexing and Analysis Tricks
Solr Powered Libraries
Solr Query Parsing
"Solr Update" at code4lib '13 - Chicago
Query Parsing - Tips and Tricks
Solr 4
Solr Flair
Introduction to Solr
Lucene for Solr Developers
Lucene for Solr Developers
What's New in Solr 3.x / 4.0
Solr Application Development Tutorial
Solr Recipes Workshop
Lucene for Solr Developers
code4lib 2011 preconference: What's New in Solr (since 1.4.1)
Rapid Prototyping with Solr

Recently uploaded (20)

PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Empathic Computing: Creating Shared Understanding
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
Cloud computing and distributed systems.
PDF
Encapsulation theory and applications.pdf
PPT
Teaching material agriculture food technology
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
NewMind AI Monthly Chronicles - July 2025
Empathic Computing: Creating Shared Understanding
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Encapsulation_ Review paper, used for researhc scholars
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Cloud computing and distributed systems.
Encapsulation theory and applications.pdf
Teaching material agriculture food technology
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Building Integrated photovoltaic BIPV_UPV.pdf
Big Data Technologies - Introduction.pptx
Review of recent advances in non-invasive hemoglobin estimation
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Digital-Transformation-Roadmap-for-Companies.pptx
The AUB Centre for AI in Media Proposal.docx
20250228 LYD VKU AI Blended-Learning.pptx
Understanding_Digital_Forensics_Presentation.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Reach Out and Touch Someone: Haptics and Empathic Computing

Rapid Prototyping with Solr

  • 1. 1 Rapid Prototyping with Solr presented by Erik Hatcher, Technical Staff, Lucid Imagination 1
  • 2. Abstract Got data?  Let's make it searchable!  This interactive presentation will demonstrate getting documents into Solr quickly, provide some tips in adjusting Solr's schema to match your needs better, and finally showcase your data in a flexible search user interface.  We'll see how to rapidly leverage faceting, highlighting, spell checking, and debugging.  Even after all that, there will be enough time left to outline the next steps in developing your search application and taking it to production. 2 2
  • 3. Why prototype?  Demonstrate Solr can handle your needs  Buy-in  "Prototyping: faster than teaching a 9-year-old Ju-Jitsu"  It's quick, easy, AND FUN!  The User Interface is the app 3 3
  • 4. Got Data?  Files?  Solr Cell  Databases?  Data Import Handler  Feeds (Atom/RSS/XML)?  Data Import Handler  3rd party repositories?  Lucene Connectors Framework  custom indexing scripts using a Solr API  CSV!!!  CSV upload handler 4 4
  • 5. UI  Solritas (VelocityResponseWriter)  http://localhost:8983/solr/itas  Documentation:  http://wiki.apache.org/solr/VelocityResponseWriter 5 5
  • 6. 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  Tomcat, optionally 6 6
  • 7. ~/LucidWorks: start.sh 2010-05-21 08:53:49.595::INFO: Logging to STDERR via org.mortbay.log.StdErrLog 2010-05-21 08:53:49.764::INFO: jetty-6.1.3 May 21, 2010 8:53:50 AM org.apache.solr.core.SolrResourceLoader locateSolrHome INFO: JNDI not configured for solr (NoInitialContextEx) May 21, 2010 8:53:50 AM org.apache.solr.core.SolrResourceLoader locateSolrHome INFO: using system property solr.solr.home: /Users/erikhatcher/ LucidWorks/lucidworks/jetty/../solr May 21, 2010 8:53:50 AM org.apache.solr.core.SolrResourceLoader <init> INFO: Solr home set to '/Users/erikhatcher/LucidWorks/lucidworks/ jetty/../solr/' . . . May 21, 2010 8:53:51 AM org.apache.solr.core.SolrCore registerSearcher INFO: [] Registered new searcher Searcher@21fb3211 main 7 7
  • 8. Your Data First Name,Last Name,Company,Title,Work Country Erik,Hatcher,Lucid Imagination,"Member, Technical Staff", USA . . . 8 8
  • 10. Schema: dynamic field flexibility <dynamicField name="*_s" type="string" indexed="true" stored="true"/> <dynamicField name="*_t" type="text" indexed="true" stored="true"/> 10 10
  • 11. Mapping to dynamic fields curl "http://localhost:8983/solr/update/csv? stream.file=EuroCon2010.csv&fieldnames=first_s,last_s,company_s,title_t, country_s&header=true" Document [null] missing required field: id 11 11
  • 12. Identifying uniqueKey, or not curl "http://localhost:8983/solr/update/csv? stream.file=EuroCon2010.csv&fieldnames=first_s, id,company_s,title_t,co untry_s&header=true" <?xml version="1.0" encoding="UTF-8"?> <response> <lst name="responseHeader"><int name="status">0</int><int name="QTime">40</int></lst> </response> 12 12
  • 14. Schema tinkering  Removed all example field definitions  Uncomment and adjust catch-all dynamic field:  <dynamicField name="*" type="string" multiValued="false"/>  Ensure uniqueKey is appropriate  Unusual in this data example:  <!-- <uniqueKey>id</uniqueKey> -->  Make every document/field fully searchable!  <copyField source="*" dest="text"/>  Then restart! 14 14
  • 15. Issues with no uniqueKey  Remove from solrconfig.xml references to:  clustering component  query elevation component  data import handler  Then restart! 15 15
  • 16. Reindexing with cleaner field names # Delete all documents curl "http://localhost:8983/solr/update?stream.body=%3Cdelete%3E%3Cquery %3E*:*%3C/query%3E%3C/delete%3E&commit=true" # Index your data curl "http://localhost:8983/solr/update/csv? commit=true&stream.file=EuroCon2010.csv&fieldnames= first,last, company,title,country&header=true" 16 16
  • 19. UI treatments  Customize request handler mappings  Edit templates  hit display  header/footer  style 19 19
  • 20. Customize request handlers <requestHandler name="/browse" class="solr.SearchHandler"> <lst name="defaults"> <str name="wt">velocity</str> <str name="v.template">browse</str> <str name="v.layout">layout</str> <str name="rows">10</str> <str name="fl">*,score</str> <str name="defType">lucene</str> <str name="q">*:*</str> <str name="debugQuery">true</str> <str name="hl">on</str> <str name="hl.fl">title</str> <str name="hl.fragsize">0</str> <str name="hl.alternateField">title</str> <str name="facet">on</str> <str name="facet.mincount">1</str> <str name="facet.missing">true</str> </lst> <lst name="appends"> <str name="facet.field">country</str> </lst> </requestHandler> 20 20
  • 21. hit.vm <div class="result-document"> <p>$doc.getFieldValue('first') $doc.getFieldValue('last')</p> <p>$!doc.getFieldValue('title'), $!doc.getFieldValue('company')</p> <p>$!doc.getFieldValue('country')</p> </div> 21 21
  • 22. Voila! 22 22
  • 23. Adding bells and whistles  JQuery  <script type="text/javascript" src="/solr/admin/ jquery-1.2.3.min.js"></script>  Let's add a tree map  <script type="text/javascript" src="/scripts/treemap.js"></script>  http://plugins.jquery.com/project/Treemap 23 23
  • 24. tree map table <script type="text/javascript"> function onLoad() { jQuery("#treemap-country").treemap(640,480, {}); } </script> ---------------------------- <body onload="onLoad();"> ---------------------------- <table id="treemap-country"> #foreach($facet in $response.getFacetField('country').values) <tr> <td>#if($facet.name) $esc.html($facet.name)#else&lt;Unspecified&gt;#end</td> <td>$facet.count</td> <td>#if($facet.name)$esc.html($facet.name)#{else}Unspecified#end</ td> </tr> #end </table> 24 24
  • 25. Tree map 25 25
  • 26. Ajax fun: giveaways  Add "static" templated page  JQuery Ajax request  snippet templated output 26 26
  • 27. "static" Solritas page solrconfig.xml <requestHandler name="/giveaways" class="solr.DumpRequestHandler"> <lst name="defaults"> <str name="wt">velocity</str> <str name="v.template">giveaways</str> <str name="v.layout">layout</str> </lst> </requestHandler> giveaways.vm <input type="button" value="Pick a Winner" onClick="javascript:$ ('#winner').load('/solr/generate_winner?sort=random_' + new Date().getTime() + '+asc');"> <h2>And the winner is...</h2> <center><font size="20"><div id="winner"></div></font></center> 27 27
  • 28. fragment template solrconfig.xml <requestHandler name="/generate_winner" class="solr.SearchHandler"> <!-- sort=random_... required --> <lst name="defaults"> <str name="wt">velocity</str> <str name="v.template">winner</str> <str name="rows">1</str> <str name="fl">first,last</str> <str name="defType">lucene</str> <str name="q">*:* -company:"Lucid Imagination" -company:"Stone Circle Productions"</str> </lst> </requestHandler> winner.vm #set($winner=$response.results.get(0)) $winner.getFieldValue('first') $winner.getFieldValue('last') 28 28
  • 29. And the winner is... 29 29
  • 30. Prototyping tools  CSV update handler  Schema Browser  Solritas  Solr Explorer  https://issues.apache.org/jira/browse/SOLR-1163  Solr Flare  http://wiki.apache.org/solr/Flare 30 30
  • 31. Refine, iterate, integrate  What's next?  script full & delta indexing processes  adjust schema  define fields, field types, analysis  tweak configuration  caches, indexing parameters  deploy to staging/production environments 31 31
  • 32. Test  Performance  Scalability  Relevance  Automate all of the above, start baselines and avoid regressions 32 32