SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Understanding and visualising
  Solr explain information
       Rafał Kuć, Marek Rogoziński, Solr.pl
  r.kuc@solr.pl, m.rogozinski@solr.pl, 18.10.2011
My Background
Rafał Kuć
• Working with Lucene since 2002
• Working with Solr since 2007
Solr.pl
• Co – founder (with Marek Rogoziński)
                                 ń
Area of expertise
• Lucene and Solr consultant and architect in
  many major e-commerce sites in Poland
• Author of „Solr 3.1 cookbook” by Packt
  Publishing
• Father, husband, Starcraft II player and a
  gardener after hours ☺

                        3
What I Will Cover
Understanding and visualising Solr explain
information
How to make the information given by
Apache Solr explain easily readable by a
Solr user (not much technical one)
Context
• Complicated explain made simple
• Explain other made even simpler
What’s next to come


                   4
A typical use case
The Challenge
Common questions like:
•   Why this document was found ?
•   Why this document wasn’t found ?
•   Why this document is higher than the other one ?
•   Why the results list look like this ?
Considerations
• Do we always have to anwser those questions ?
So how to make users get the answers they want ?
• That’s how http://explain.solr.pl was born



                           6
Let’s look at a typical example
You run a query
 • q=ddr&defType=dismax&qf=name^1000+description^100&bf
   =pow(price,1.5)&debugQuery=true&indent=true

And you see the explain information
    1.6771803 = (MATCH) sum of:
      0.64883727 = (MATCH) max of:
        0.64883727 = (MATCH) weight(name:ddr^1000.0 in 6), product of:
          0.99999994 = queryWeight(name:ddr^1000.0), product of:
            1000.0 = boost
            2.446919 = idf(docFreq=3, maxDocs=17)
            4.0867718E-4 = queryNorm
          0.6488373 = (MATCH) fieldWeight(name:ddr in 6), product of:
            1.4142135 = tf(termFreq(name:ddr)=2)
            2.446919 = idf(docFreq=3, maxDocs=17)
            0.1875 = fieldNorm(field=name, doc=6)
      1.028343 = (MATCH) FunctionQuery(pow(float(price),const(1.5))), product of:
        2516.272 = pow(float(price)=185.0,const(1.5))
        1.0 = boost
        4.0867718E-4 = queryNorm


                                         7
Some theory
tf – term’s frequency
df – document frequency
idf – inverse document frequency
norm – normalization factor
• queryNorm – query normalization factor
• fieldNorm – field normalization factor
coord – score factor




                       8
Let’s take a look at it again
1.6771803 = (MATCH) sum of:
  0.64883727 = (MATCH) max of:
    0.64883727 = (MATCH) weight(name:ddr^1000.0 in 6), product of:
      0.99999994 = queryWeight(name:ddr^1000.0), product of:
        1000.0 = boost
        2.446919 = idf(docFreq=3, maxDocs=17)
        4.0867718E-4 = queryNorm
      0.6488373 = (MATCH) fieldWeight(name:ddr in 6), product of:
        1.4142135 = tf(termFreq(name:ddr)=2)
        2.446919 = idf(docFreq=3, maxDocs=17)
        0.1875 = fieldNorm(field=name, doc=6)
  1.028343 = (MATCH) FunctionQuery(pow(float(price),const(1.5))), product of:
    2516.272 = pow(float(price)=185.0,const(1.5))
    1.0 = boost
    4.0867718E-4 = queryNorm
A little more complicated example
36.50278 = (MATCH) sum of:
 1.54896 = (MATCH) sum of:
  0.46676102 = (MATCH) max of:
    0.46676102 = (MATCH) weight(name:hard^20.0 in 2), product of:
     0.5461986 = queryWeight(name:hard^20.0), product of:
       20.0 = boost
       2.734601 = idf(docFreq=2, maxDocs=17)
       0.009986806 = queryNorm
     0.8545628 = (MATCH) fieldWeight(name:hard in 2), product of:
       1.0 = tf(termFreq(name:hard)=1)
       2.734601 = idf(docFreq=2, maxDocs=17)
       0.3125 = fieldNorm(field=name, doc=2)
  0.46676102 = (MATCH) max of:
    0.46676102 = (MATCH) weight(name:drive^20.0 in 2), product of:
     0.5461986 = queryWeight(name:drive^20.0), product of:
       20.0 = boost
       2.734601 = idf(docFreq=2, maxDocs=17)
       0.009986806 = queryNorm                                       0.61543787 = (MATCH) max of:
     0.8545628 = (MATCH) fieldWeight(name:drive in 2), product of:     0.098470055 = (MATCH) weight(manu:maxtor in 2), product of:
       1.0 = tf(termFreq(name:drive)=1)                                  0.03135923 = queryWeight(manu:maxtor), product of:
       2.734601 = idf(docFreq=2, maxDocs=17)                              3.1400661 = idf(docFreq=1, maxDocs=17)
       0.3125 = fieldNorm(field=name, doc=2)                              0.009986806 = queryNorm
                                                                         3.1400661 = (MATCH) fieldWeight(manu:maxtor in 2), product of:
                                                                          1.0 = tf(termFreq(manu:maxtor)=1)
                                                                          3.1400661 = idf(docFreq=1, maxDocs=17)
                                                                          1.0 = fieldNorm(field=manu, doc=2)
                                                                       0.61543787 = (MATCH) weight(name:maxtor^20.0 in 2), product of:
                                                                         0.6271846 = queryWeight(name:maxtor^20.0), product of:
                                                                          20.0 = boost
                                                                          3.1400661 = idf(docFreq=1, maxDocs=17)
                                                                          0.009986806 = queryNorm
                                                                         0.9812707 = (MATCH) fieldWeight(name:maxtor in 2), product of:
                                                                          1.0 = tf(termFreq(name:maxtor)=1)
                                                                          3.1400661 = idf(docFreq=1, maxDocs=17)
                                                                          0.3125 = fieldNorm(field=name, doc=2)
                                                                     34.95382 = (MATCH) FunctionQuery(float(price)), product of:
                                                                      350.0 = float(price)=350.0
                                                                      10.0 = boost
                                                                      0.009986806 = queryNorm
And now, a real life example
1.6287426 = (MATCH) sum of:
 0.8143703 = (MATCH) sum of:                                                              1.8327936E-6 = (MATCH) max plus 0.01 times others of:
  0.40718514 = (MATCH) max plus 0.01 times others of:                                       1.8327936E-6 = (MATCH) weight(description_nostemm:"harry potter"~100^10.0 in 36647), product of:
   4.154771E-7 = (MATCH) weight(description_nostemm:harry^10.0 in 36647), product of:        9.255408E-7 = queryWeight(description_nostemm:"harry potter"~100^10.0), product of:
    4.4066886E-7 = queryWeight(description_nostemm:harry^10.0), product of:                   10.0 = boost
     10.0 = boost                                                                             15.841926 = idf(description_nostemm: harry=796 potter=373)
     7.5426636 = idf(docFreq=796, maxDocs=553224)                                             5.8423506E-9 = queryNorm
     5.8423506E-9 = queryNorm                                                                1.9802407 = fieldWeight(description_nostemm:"harry potter" in 36647), product of:
    0.94283295 = (MATCH) fieldWeight(description_nostemm:harry in 36647), product of:         1.0 = tf(phraseFreq=1.0)
     1.0 = tf(termFreq(description_nostemm:harry)=1)                                          15.841926 = idf(description_nostemm: harry=796 potter=373)
     7.5426636 = idf(docFreq=796, maxDocs=553224)                                             0.125 = fieldNorm(field=description_nostemm, doc=36647)
     0.125 = fieldNorm(field=description_nostemm, doc=36647)                               0.81437016 = (MATCH) sum of:
   0.40718514 = (MATCH) weight(category_search:harri^2000000.0 in 36647), product of:       0.40718508 = (MATCH) weight(category_the:harri in 36647), product of:
    0.123389944 = queryWeight(category_search:harri^2000000.0), product of:                  0.12338993 = queryWeight(category_the:harri), product of:
     2000000.0 = boost                                                                        10.559957 = idf(docFreq=38, maxDocs=553224)
     10.559957 = idf(docFreq=38, maxDocs=553224)                                              0.011684701 = queryNorm
     5.8423506E-9 = queryNorm                                                                3.2999864 = (MATCH) fieldWeight(category_the:harri in 36647), product of:
    3.2999864 = (MATCH) fieldWeight(category_search:harri in 36647), product of:              1.0 = tf(termFreq(category_the:harri)=1)
     1.0 = tf(termFreq(category_search:harri)=1)                                              10.559957 = idf(docFreq=38, maxDocs=553224)
     10.559957 = idf(docFreq=38, maxDocs=553224)                                              0.3125 = fieldNorm(field=category_the, doc=36647)
     0.3125 = fieldNorm(field=category_search, doc=36647)                                   0.40718508 = (MATCH) weight(category_the:Potter in 36647), product of:
   5.976383E-8 = (MATCH) weight(description:harri in 36647), product of:                     0.12338993 = queryWeight(category_the:Potter), product of:
    4.2931266E-8 = queryWeight(description:harri), product of:                                10.559957 = idf(docFreq=38, maxDocs=553224)
     7.348286 = idf(docFreq=967, maxDocs=553224)                                              0.011684701 = queryNorm
     5.8423506E-9 = queryNorm                                                                3.2999864 = (MATCH) fieldWeight(category_the:Potter in 36647), product of:
    1.3920817 = (MATCH) fieldWeight(description:harri in 36647), product of:                  1.0 = tf(termFreq(category_the:Potter)=1)
     1.7320508 = tf(termFreq(description:harri)=3)                                            10.559957 = idf(docFreq=38, maxDocs=553224)
     7.348286 = idf(docFreq=967, maxDocs=553224)                                              0.3125 = fieldNorm(field=category_the, doc=36647)
     0.109375 = fieldNorm(field=description, doc=36647)                                    3.394099E-7 = (MATCH) FunctionQuery(pow(int(sold),const(1.5))), product of:
  0.40718514 = (MATCH) max plus 0.01 times others of:                                       58.09475 = pow(int(sold)=15,const(1.5))
   5.0300997E-7 = (MATCH) weight(description_nostemm:potter^10.0 in 36647), product of:     1.0 = boost
    4.84872E-7 = queryWeight(description_nostemm:potter^10.0), product of:                  5.8423506E-9 = queryNorm
     10.0 = boost
     8.299262 = idf(docFreq=373, maxDocs=553224)
     5.8423506E-9 = queryNorm
    1.0374078 = (MATCH) fieldWeight(description_nostemm:potter in 36647), product of:
     1.0 = tf(termFreq(description_nostemm:potter)=1)
     8.299262 = idf(docFreq=373, maxDocs=553224)
     0.125 = fieldNorm(field=description_nostemm, doc=36647)
   0.40718514 = (MATCH) weight(category_search:Potter^2000000.0 in 36647), product of:
    0.123389944 = queryWeight(category_search:Potter^2000000.0), product of:
     2000000.0 = boost
     10.559957 = idf(docFreq=38, maxDocs=553224)
     5.8423506E-9 = queryNorm
    3.2999864 = (MATCH) fieldWeight(category_search:Potter in 36647), product of:
     1.0 = tf(termFreq(category_search:Potter)=1)
     10.559957 = idf(docFreq=38, maxDocs=553224)
     0.3125 = fieldNorm(field=category_search, doc=36647)
   5.7398886E-8 = (MATCH) weight(description:Potter in 36647), product of:
    4.656172E-8 = queryWeight(description:Potter), product of:
     7.9696894 = idf(docFreq=519, maxDocs=553224)
     5.8423506E-9 = queryNorm
    1.2327484 = (MATCH) fieldWeight(description:Potter in 36647), product of:
     1.4142135 = tf(termFreq(description:Potter)=2)
     7.9696894 = idf(docFreq=519, maxDocs=553224)
     0.109375 = fieldNorm(field=description, doc=36647)
Let’s visualize now
History view
Basic information
The real thing
Even more ☺
What if we can’t match ?
And the no-matched explain
What you gain from explain.solr.pl
View Solr explain information in a human
readable form
Easily recognize the most influencing elements
of the scoring process
Answer the questions faster
More things to come in the future




                      19
Plans for the future
Support for more formats of Apache Solr
explain (right now, only Solr 3.x is supported)
Visualisation of additional data
More functionalities like:
•   query problems analysis
•   query syntax analysis and explanation
•   query time analysis and visualization
•   result comparison between cores or instances
Very distant future - additional web application
deployed along Solr to enable real time
analysis of boosts influence
Wrap Up
The http://explain.solr.pl should be available
very soon (probably end of October or mid
November)
Code of explain.solr.pl will be available on
GitHub soon after the initial release
There will be a Java version of the
http://explain.solr.pl which will cover much more
information




                       21
Sources
Links
• http://www.solr.pl
• http://explain.solr.pl
• http://lucene.apache.org ☺


We would like to thank:
• Łukasz Lewandowski (http://llewandowski.pl/) for
  his work on the GUI
• Hubert ‘depesz’ Lubaczewski (http://depesz.com)
  for idea ☺


                       22
Contact
Rafał Kuć
• r.kuc@solr.pl
• http://solr.pl
Marek Rogoziński
• m.rogozinski@solr.pl
• http://solr.pl




                         23
Thank you

Mais conteúdo relacionado

Mais procurados

The Ring programming language version 1.2 book - Part 25 of 84
The Ring programming language version 1.2 book - Part 25 of 84The Ring programming language version 1.2 book - Part 25 of 84
The Ring programming language version 1.2 book - Part 25 of 84Mahmoud Samir Fayed
 
Program Language - Fall 2013
Program Language - Fall 2013 Program Language - Fall 2013
Program Language - Fall 2013 Yun-Yan Chi
 
The Ring programming language version 1.6 book - Part 27 of 189
The Ring programming language version 1.6 book - Part 27 of 189The Ring programming language version 1.6 book - Part 27 of 189
The Ring programming language version 1.6 book - Part 27 of 189Mahmoud Samir Fayed
 
Algorithm Design and Analysis - Practical File
Algorithm Design and Analysis - Practical FileAlgorithm Design and Analysis - Practical File
Algorithm Design and Analysis - Practical FileKushagraChadha1
 
The Ring programming language version 1.3 book - Part 50 of 88
The Ring programming language version 1.3 book - Part 50 of 88The Ring programming language version 1.3 book - Part 50 of 88
The Ring programming language version 1.3 book - Part 50 of 88Mahmoud Samir Fayed
 
The Ring programming language version 1.5 book - Part 8 of 31
The Ring programming language version 1.5 book - Part 8 of 31The Ring programming language version 1.5 book - Part 8 of 31
The Ring programming language version 1.5 book - Part 8 of 31Mahmoud Samir Fayed
 
Optimization and Mathematical Programming in R and ROI - R Optimization Infra...
Optimization and Mathematical Programming in R and ROI - R Optimization Infra...Optimization and Mathematical Programming in R and ROI - R Optimization Infra...
Optimization and Mathematical Programming in R and ROI - R Optimization Infra...Dr. Volkan OBAN
 
The Ring programming language version 1.5.3 book - Part 36 of 184
The Ring programming language version 1.5.3 book - Part 36 of 184The Ring programming language version 1.5.3 book - Part 36 of 184
The Ring programming language version 1.5.3 book - Part 36 of 184Mahmoud Samir Fayed
 
Mapping Flatland: Using MongoDB for an MMO Crossword Game (GDC Online 2011)
Mapping Flatland: Using MongoDB for an MMO Crossword Game (GDC Online 2011)Mapping Flatland: Using MongoDB for an MMO Crossword Game (GDC Online 2011)
Mapping Flatland: Using MongoDB for an MMO Crossword Game (GDC Online 2011)Grant Goodale
 
The Ring programming language version 1.5.1 book - Part 43 of 180
The Ring programming language version 1.5.1 book - Part 43 of 180The Ring programming language version 1.5.1 book - Part 43 of 180
The Ring programming language version 1.5.1 book - Part 43 of 180Mahmoud Samir Fayed
 
OGDC2013_Lets remake the wheel_ Mr Nguyen Trung Hung
OGDC2013_Lets remake the wheel_ Mr Nguyen Trung HungOGDC2013_Lets remake the wheel_ Mr Nguyen Trung Hung
OGDC2013_Lets remake the wheel_ Mr Nguyen Trung Hungogdc
 
Ogdc 2013 lets remake the wheel
Ogdc 2013 lets remake the wheelOgdc 2013 lets remake the wheel
Ogdc 2013 lets remake the wheelSon Aris
 
The Ring programming language version 1.5.4 book - Part 25 of 185
The Ring programming language version 1.5.4 book - Part 25 of 185The Ring programming language version 1.5.4 book - Part 25 of 185
The Ring programming language version 1.5.4 book - Part 25 of 185Mahmoud Samir Fayed
 
Cloudera - A Taste of random decision forests
Cloudera - A Taste of random decision forestsCloudera - A Taste of random decision forests
Cloudera - A Taste of random decision forestsDataconomy Media
 
全民优化
全民优化全民优化
全民优化aoao
 
Intelligent System Optimizations
Intelligent System OptimizationsIntelligent System Optimizations
Intelligent System OptimizationsMartin Zapletal
 
The Ring programming language version 1.5.3 book - Part 77 of 184
The Ring programming language version 1.5.3 book - Part 77 of 184The Ring programming language version 1.5.3 book - Part 77 of 184
The Ring programming language version 1.5.3 book - Part 77 of 184Mahmoud Samir Fayed
 
The Ring programming language version 1.5.1 book - Part 34 of 180
The Ring programming language version 1.5.1 book - Part 34 of 180The Ring programming language version 1.5.1 book - Part 34 of 180
The Ring programming language version 1.5.1 book - Part 34 of 180Mahmoud Samir Fayed
 

Mais procurados (20)

The Ring programming language version 1.2 book - Part 25 of 84
The Ring programming language version 1.2 book - Part 25 of 84The Ring programming language version 1.2 book - Part 25 of 84
The Ring programming language version 1.2 book - Part 25 of 84
 
Program Language - Fall 2013
Program Language - Fall 2013 Program Language - Fall 2013
Program Language - Fall 2013
 
The Ring programming language version 1.6 book - Part 27 of 189
The Ring programming language version 1.6 book - Part 27 of 189The Ring programming language version 1.6 book - Part 27 of 189
The Ring programming language version 1.6 book - Part 27 of 189
 
R and data mining
R and data miningR and data mining
R and data mining
 
Algorithm Design and Analysis - Practical File
Algorithm Design and Analysis - Practical FileAlgorithm Design and Analysis - Practical File
Algorithm Design and Analysis - Practical File
 
The Ring programming language version 1.3 book - Part 50 of 88
The Ring programming language version 1.3 book - Part 50 of 88The Ring programming language version 1.3 book - Part 50 of 88
The Ring programming language version 1.3 book - Part 50 of 88
 
The Ring programming language version 1.5 book - Part 8 of 31
The Ring programming language version 1.5 book - Part 8 of 31The Ring programming language version 1.5 book - Part 8 of 31
The Ring programming language version 1.5 book - Part 8 of 31
 
Optimization and Mathematical Programming in R and ROI - R Optimization Infra...
Optimization and Mathematical Programming in R and ROI - R Optimization Infra...Optimization and Mathematical Programming in R and ROI - R Optimization Infra...
Optimization and Mathematical Programming in R and ROI - R Optimization Infra...
 
The Ring programming language version 1.5.3 book - Part 36 of 184
The Ring programming language version 1.5.3 book - Part 36 of 184The Ring programming language version 1.5.3 book - Part 36 of 184
The Ring programming language version 1.5.3 book - Part 36 of 184
 
Mapping Flatland: Using MongoDB for an MMO Crossword Game (GDC Online 2011)
Mapping Flatland: Using MongoDB for an MMO Crossword Game (GDC Online 2011)Mapping Flatland: Using MongoDB for an MMO Crossword Game (GDC Online 2011)
Mapping Flatland: Using MongoDB for an MMO Crossword Game (GDC Online 2011)
 
The Ring programming language version 1.5.1 book - Part 43 of 180
The Ring programming language version 1.5.1 book - Part 43 of 180The Ring programming language version 1.5.1 book - Part 43 of 180
The Ring programming language version 1.5.1 book - Part 43 of 180
 
OGDC2013_Lets remake the wheel_ Mr Nguyen Trung Hung
OGDC2013_Lets remake the wheel_ Mr Nguyen Trung HungOGDC2013_Lets remake the wheel_ Mr Nguyen Trung Hung
OGDC2013_Lets remake the wheel_ Mr Nguyen Trung Hung
 
Ogdc 2013 lets remake the wheel
Ogdc 2013 lets remake the wheelOgdc 2013 lets remake the wheel
Ogdc 2013 lets remake the wheel
 
The Ring programming language version 1.5.4 book - Part 25 of 185
The Ring programming language version 1.5.4 book - Part 25 of 185The Ring programming language version 1.5.4 book - Part 25 of 185
The Ring programming language version 1.5.4 book - Part 25 of 185
 
Cloudera - A Taste of random decision forests
Cloudera - A Taste of random decision forestsCloudera - A Taste of random decision forests
Cloudera - A Taste of random decision forests
 
全民优化
全民优化全民优化
全民优化
 
Intelligent System Optimizations
Intelligent System OptimizationsIntelligent System Optimizations
Intelligent System Optimizations
 
The Ring programming language version 1.5.3 book - Part 77 of 184
The Ring programming language version 1.5.3 book - Part 77 of 184The Ring programming language version 1.5.3 book - Part 77 of 184
The Ring programming language version 1.5.3 book - Part 77 of 184
 
The Ring programming language version 1.5.1 book - Part 34 of 180
The Ring programming language version 1.5.1 book - Part 34 of 180The Ring programming language version 1.5.1 book - Part 34 of 180
The Ring programming language version 1.5.1 book - Part 34 of 180
 
Groovy kind of test
Groovy kind of testGroovy kind of test
Groovy kind of test
 

Destaque

An Introduction to Basics of Search and Relevancy with Apache Solr
An Introduction to Basics of Search and Relevancy with Apache SolrAn Introduction to Basics of Search and Relevancy with Apache Solr
An Introduction to Basics of Search and Relevancy with Apache SolrLucidworks (Archived)
 
Solr Query Parsing
Solr Query ParsingSolr Query Parsing
Solr Query ParsingErik Hatcher
 
An Introduction to Solr
An Introduction to SolrAn Introduction to Solr
An Introduction to Solrtomhill
 
Query Parsing - Tips and Tricks
Query Parsing - Tips and TricksQuery Parsing - Tips and Tricks
Query Parsing - Tips and TricksErik Hatcher
 
Numeric Range Queries in Lucene and Solr
Numeric Range Queries in Lucene and SolrNumeric Range Queries in Lucene and Solr
Numeric Range Queries in Lucene and SolrVadim Kirilchuk
 
Proposal for nested document support in Lucene
Proposal for nested document support in LuceneProposal for nested document support in Lucene
Proposal for nested document support in LuceneMark Harwood
 
Grouping and Joining in Lucene/Solr
Grouping and Joining in Lucene/SolrGrouping and Joining in Lucene/Solr
Grouping and Joining in Lucene/Solrlucenerevolution
 
Introduction to Apache Solr.
Introduction to Apache Solr.Introduction to Apache Solr.
Introduction to Apache Solr.ashish0x90
 
Analyze this! tips and tricks on getting the lucene solr analyzer to index an...
Analyze this! tips and tricks on getting the lucene solr analyzer to index an...Analyze this! tips and tricks on getting the lucene solr analyzer to index an...
Analyze this! tips and tricks on getting the lucene solr analyzer to index an...Lucidworks (Archived)
 
Introduction to Apache Lucene/Solr
Introduction to Apache Lucene/SolrIntroduction to Apache Lucene/Solr
Introduction to Apache Lucene/SolrRahul Jain
 
Get the most out of Solr search with PHP
Get the most out of Solr search with PHPGet the most out of Solr search with PHP
Get the most out of Solr search with PHPPaul Borgermans
 

Destaque (11)

An Introduction to Basics of Search and Relevancy with Apache Solr
An Introduction to Basics of Search and Relevancy with Apache SolrAn Introduction to Basics of Search and Relevancy with Apache Solr
An Introduction to Basics of Search and Relevancy with Apache Solr
 
Solr Query Parsing
Solr Query ParsingSolr Query Parsing
Solr Query Parsing
 
An Introduction to Solr
An Introduction to SolrAn Introduction to Solr
An Introduction to Solr
 
Query Parsing - Tips and Tricks
Query Parsing - Tips and TricksQuery Parsing - Tips and Tricks
Query Parsing - Tips and Tricks
 
Numeric Range Queries in Lucene and Solr
Numeric Range Queries in Lucene and SolrNumeric Range Queries in Lucene and Solr
Numeric Range Queries in Lucene and Solr
 
Proposal for nested document support in Lucene
Proposal for nested document support in LuceneProposal for nested document support in Lucene
Proposal for nested document support in Lucene
 
Grouping and Joining in Lucene/Solr
Grouping and Joining in Lucene/SolrGrouping and Joining in Lucene/Solr
Grouping and Joining in Lucene/Solr
 
Introduction to Apache Solr.
Introduction to Apache Solr.Introduction to Apache Solr.
Introduction to Apache Solr.
 
Analyze this! tips and tricks on getting the lucene solr analyzer to index an...
Analyze this! tips and tricks on getting the lucene solr analyzer to index an...Analyze this! tips and tricks on getting the lucene solr analyzer to index an...
Analyze this! tips and tricks on getting the lucene solr analyzer to index an...
 
Introduction to Apache Lucene/Solr
Introduction to Apache Lucene/SolrIntroduction to Apache Lucene/Solr
Introduction to Apache Lucene/Solr
 
Get the most out of Solr search with PHP
Get the most out of Solr search with PHPGet the most out of Solr search with PHP
Get the most out of Solr search with PHP
 

Semelhante a Understanding and visualizing solr explain information - Rafal Kuc

Art and Science Come Together When Mastering Relevance Ranking - Tom Burgmans...
Art and Science Come Together When Mastering Relevance Ranking - Tom Burgmans...Art and Science Come Together When Mastering Relevance Ranking - Tom Burgmans...
Art and Science Come Together When Mastering Relevance Ranking - Tom Burgmans...Lucidworks
 
User Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryUser Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryDatabricks
 
User Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryUser Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryDatabricks
 
The Ring programming language version 1.4.1 book - Part 13 of 31
The Ring programming language version 1.4.1 book - Part 13 of 31The Ring programming language version 1.4.1 book - Part 13 of 31
The Ring programming language version 1.4.1 book - Part 13 of 31Mahmoud Samir Fayed
 
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf MilanFrom Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf MilanFabio Collini
 
The Ring programming language version 1.4 book - Part 18 of 30
The Ring programming language version 1.4 book - Part 18 of 30The Ring programming language version 1.4 book - Part 18 of 30
The Ring programming language version 1.4 book - Part 18 of 30Mahmoud Samir Fayed
 
The Ring programming language version 1.9 book - Part 53 of 210
The Ring programming language version 1.9 book - Part 53 of 210The Ring programming language version 1.9 book - Part 53 of 210
The Ring programming language version 1.9 book - Part 53 of 210Mahmoud Samir Fayed
 
The Ring programming language version 1.7 book - Part 48 of 196
The Ring programming language version 1.7 book - Part 48 of 196The Ring programming language version 1.7 book - Part 48 of 196
The Ring programming language version 1.7 book - Part 48 of 196Mahmoud Samir Fayed
 
Intro to Machine Learning with TF- workshop
Intro to Machine Learning with TF- workshopIntro to Machine Learning with TF- workshop
Intro to Machine Learning with TF- workshopProttay Karim
 
10. Getting Spatial
10. Getting Spatial10. Getting Spatial
10. Getting SpatialFAO
 
The Ring programming language version 1.8 book - Part 30 of 202
The Ring programming language version 1.8 book - Part 30 of 202The Ring programming language version 1.8 book - Part 30 of 202
The Ring programming language version 1.8 book - Part 30 of 202Mahmoud Samir Fayed
 
R getting spatial
R getting spatialR getting spatial
R getting spatialFAO
 
Weather of the Century: Design and Performance
Weather of the Century: Design and PerformanceWeather of the Century: Design and Performance
Weather of the Century: Design and PerformanceMongoDB
 
The Ring programming language version 1.5.4 book - Part 60 of 185
The Ring programming language version 1.5.4 book - Part 60 of 185The Ring programming language version 1.5.4 book - Part 60 of 185
The Ring programming language version 1.5.4 book - Part 60 of 185Mahmoud Samir Fayed
 
엘라스틱서치 적합성 이해하기 20160630
엘라스틱서치 적합성 이해하기 20160630엘라스틱서치 적합성 이해하기 20160630
엘라스틱서치 적합성 이해하기 20160630Yong Joon Moon
 

Semelhante a Understanding and visualizing solr explain information - Rafal Kuc (20)

Las tripas de un sistema solr
Las tripas de un sistema solrLas tripas de un sistema solr
Las tripas de un sistema solr
 
Querying solr
Querying solrQuerying solr
Querying solr
 
Art and Science Come Together When Mastering Relevance Ranking - Tom Burgmans...
Art and Science Come Together When Mastering Relevance Ranking - Tom Burgmans...Art and Science Come Together When Mastering Relevance Ranking - Tom Burgmans...
Art and Science Come Together When Mastering Relevance Ranking - Tom Burgmans...
 
User Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryUser Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love Story
 
User Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryUser Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love Story
 
The Ring programming language version 1.4.1 book - Part 13 of 31
The Ring programming language version 1.4.1 book - Part 13 of 31The Ring programming language version 1.4.1 book - Part 13 of 31
The Ring programming language version 1.4.1 book - Part 13 of 31
 
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf MilanFrom Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
 
The Ring programming language version 1.4 book - Part 18 of 30
The Ring programming language version 1.4 book - Part 18 of 30The Ring programming language version 1.4 book - Part 18 of 30
The Ring programming language version 1.4 book - Part 18 of 30
 
The Ring programming language version 1.9 book - Part 53 of 210
The Ring programming language version 1.9 book - Part 53 of 210The Ring programming language version 1.9 book - Part 53 of 210
The Ring programming language version 1.9 book - Part 53 of 210
 
The Ring programming language version 1.7 book - Part 48 of 196
The Ring programming language version 1.7 book - Part 48 of 196The Ring programming language version 1.7 book - Part 48 of 196
The Ring programming language version 1.7 book - Part 48 of 196
 
Intro to Machine Learning with TF- workshop
Intro to Machine Learning with TF- workshopIntro to Machine Learning with TF- workshop
Intro to Machine Learning with TF- workshop
 
10. Getting Spatial
10. Getting Spatial10. Getting Spatial
10. Getting Spatial
 
webScrapingFunctions
webScrapingFunctionswebScrapingFunctions
webScrapingFunctions
 
The Ring programming language version 1.8 book - Part 30 of 202
The Ring programming language version 1.8 book - Part 30 of 202The Ring programming language version 1.8 book - Part 30 of 202
The Ring programming language version 1.8 book - Part 30 of 202
 
R getting spatial
R getting spatialR getting spatial
R getting spatial
 
mobl
moblmobl
mobl
 
Weather of the Century: Design and Performance
Weather of the Century: Design and PerformanceWeather of the Century: Design and Performance
Weather of the Century: Design and Performance
 
The Ring programming language version 1.5.4 book - Part 60 of 185
The Ring programming language version 1.5.4 book - Part 60 of 185The Ring programming language version 1.5.4 book - Part 60 of 185
The Ring programming language version 1.5.4 book - Part 60 of 185
 
엘라스틱서치 적합성 이해하기 20160630
엘라스틱서치 적합성 이해하기 20160630엘라스틱서치 적합성 이해하기 20160630
엘라스틱서치 적합성 이해하기 20160630
 
MongoDB Oplog入門
MongoDB Oplog入門MongoDB Oplog入門
MongoDB Oplog入門
 

Mais de lucenerevolution

Text Classification Powered by Apache Mahout and Lucene
Text Classification Powered by Apache Mahout and LuceneText Classification Powered by Apache Mahout and Lucene
Text Classification Powered by Apache Mahout and Lucenelucenerevolution
 
State of the Art Logging. Kibana4Solr is Here!
State of the Art Logging. Kibana4Solr is Here! State of the Art Logging. Kibana4Solr is Here!
State of the Art Logging. Kibana4Solr is Here! lucenerevolution
 
Building Client-side Search Applications with Solr
Building Client-side Search Applications with SolrBuilding Client-side Search Applications with Solr
Building Client-side Search Applications with Solrlucenerevolution
 
Integrate Solr with real-time stream processing applications
Integrate Solr with real-time stream processing applicationsIntegrate Solr with real-time stream processing applications
Integrate Solr with real-time stream processing applicationslucenerevolution
 
Scaling Solr with SolrCloud
Scaling Solr with SolrCloudScaling Solr with SolrCloud
Scaling Solr with SolrCloudlucenerevolution
 
Administering and Monitoring SolrCloud Clusters
Administering and Monitoring SolrCloud ClustersAdministering and Monitoring SolrCloud Clusters
Administering and Monitoring SolrCloud Clusterslucenerevolution
 
Implementing a Custom Search Syntax using Solr, Lucene, and Parboiled
Implementing a Custom Search Syntax using Solr, Lucene, and ParboiledImplementing a Custom Search Syntax using Solr, Lucene, and Parboiled
Implementing a Custom Search Syntax using Solr, Lucene, and Parboiledlucenerevolution
 
Using Solr to Search and Analyze Logs
Using Solr to Search and Analyze Logs Using Solr to Search and Analyze Logs
Using Solr to Search and Analyze Logs lucenerevolution
 
Enhancing relevancy through personalization & semantic search
Enhancing relevancy through personalization & semantic searchEnhancing relevancy through personalization & semantic search
Enhancing relevancy through personalization & semantic searchlucenerevolution
 
Real-time Inverted Search in the Cloud Using Lucene and Storm
Real-time Inverted Search in the Cloud Using Lucene and StormReal-time Inverted Search in the Cloud Using Lucene and Storm
Real-time Inverted Search in the Cloud Using Lucene and Stormlucenerevolution
 
Solr's Admin UI - Where does the data come from?
Solr's Admin UI - Where does the data come from?Solr's Admin UI - Where does the data come from?
Solr's Admin UI - Where does the data come from?lucenerevolution
 
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
 
High Performance JSON Search and Relational Faceted Browsing with Lucene
High Performance JSON Search and Relational Faceted Browsing with LuceneHigh Performance JSON Search and Relational Faceted Browsing with Lucene
High Performance JSON Search and Relational Faceted Browsing with Lucenelucenerevolution
 
Text Classification with Lucene/Solr, Apache Hadoop and LibSVM
Text Classification with Lucene/Solr, Apache Hadoop and LibSVMText Classification with Lucene/Solr, Apache Hadoop and LibSVM
Text Classification with Lucene/Solr, Apache Hadoop and LibSVMlucenerevolution
 
Faceted Search with Lucene
Faceted Search with LuceneFaceted Search with Lucene
Faceted Search with Lucenelucenerevolution
 
Recent Additions to Lucene Arsenal
Recent Additions to Lucene ArsenalRecent Additions to Lucene Arsenal
Recent Additions to Lucene Arsenallucenerevolution
 
Turning search upside down
Turning search upside downTurning search upside down
Turning search upside downlucenerevolution
 
Spellchecking in Trovit: Implementing a Contextual Multi-language Spellchecke...
Spellchecking in Trovit: Implementing a Contextual Multi-language Spellchecke...Spellchecking in Trovit: Implementing a Contextual Multi-language Spellchecke...
Spellchecking in Trovit: Implementing a Contextual Multi-language Spellchecke...lucenerevolution
 
Shrinking the haystack wes caldwell - final
Shrinking the haystack   wes caldwell - finalShrinking the haystack   wes caldwell - final
Shrinking the haystack wes caldwell - finallucenerevolution
 

Mais de lucenerevolution (20)

Text Classification Powered by Apache Mahout and Lucene
Text Classification Powered by Apache Mahout and LuceneText Classification Powered by Apache Mahout and Lucene
Text Classification Powered by Apache Mahout and Lucene
 
State of the Art Logging. Kibana4Solr is Here!
State of the Art Logging. Kibana4Solr is Here! State of the Art Logging. Kibana4Solr is Here!
State of the Art Logging. Kibana4Solr is Here!
 
Search at Twitter
Search at TwitterSearch at Twitter
Search at Twitter
 
Building Client-side Search Applications with Solr
Building Client-side Search Applications with SolrBuilding Client-side Search Applications with Solr
Building Client-side Search Applications with Solr
 
Integrate Solr with real-time stream processing applications
Integrate Solr with real-time stream processing applicationsIntegrate Solr with real-time stream processing applications
Integrate Solr with real-time stream processing applications
 
Scaling Solr with SolrCloud
Scaling Solr with SolrCloudScaling Solr with SolrCloud
Scaling Solr with SolrCloud
 
Administering and Monitoring SolrCloud Clusters
Administering and Monitoring SolrCloud ClustersAdministering and Monitoring SolrCloud Clusters
Administering and Monitoring SolrCloud Clusters
 
Implementing a Custom Search Syntax using Solr, Lucene, and Parboiled
Implementing a Custom Search Syntax using Solr, Lucene, and ParboiledImplementing a Custom Search Syntax using Solr, Lucene, and Parboiled
Implementing a Custom Search Syntax using Solr, Lucene, and Parboiled
 
Using Solr to Search and Analyze Logs
Using Solr to Search and Analyze Logs Using Solr to Search and Analyze Logs
Using Solr to Search and Analyze Logs
 
Enhancing relevancy through personalization & semantic search
Enhancing relevancy through personalization & semantic searchEnhancing relevancy through personalization & semantic search
Enhancing relevancy through personalization & semantic search
 
Real-time Inverted Search in the Cloud Using Lucene and Storm
Real-time Inverted Search in the Cloud Using Lucene and StormReal-time Inverted Search in the Cloud Using Lucene and Storm
Real-time Inverted Search in the Cloud Using Lucene and Storm
 
Solr's Admin UI - Where does the data come from?
Solr's Admin UI - Where does the data come from?Solr's Admin UI - Where does the data come from?
Solr's Admin UI - Where does the data come from?
 
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
 
High Performance JSON Search and Relational Faceted Browsing with Lucene
High Performance JSON Search and Relational Faceted Browsing with LuceneHigh Performance JSON Search and Relational Faceted Browsing with Lucene
High Performance JSON Search and Relational Faceted Browsing with Lucene
 
Text Classification with Lucene/Solr, Apache Hadoop and LibSVM
Text Classification with Lucene/Solr, Apache Hadoop and LibSVMText Classification with Lucene/Solr, Apache Hadoop and LibSVM
Text Classification with Lucene/Solr, Apache Hadoop and LibSVM
 
Faceted Search with Lucene
Faceted Search with LuceneFaceted Search with Lucene
Faceted Search with Lucene
 
Recent Additions to Lucene Arsenal
Recent Additions to Lucene ArsenalRecent Additions to Lucene Arsenal
Recent Additions to Lucene Arsenal
 
Turning search upside down
Turning search upside downTurning search upside down
Turning search upside down
 
Spellchecking in Trovit: Implementing a Contextual Multi-language Spellchecke...
Spellchecking in Trovit: Implementing a Contextual Multi-language Spellchecke...Spellchecking in Trovit: Implementing a Contextual Multi-language Spellchecke...
Spellchecking in Trovit: Implementing a Contextual Multi-language Spellchecke...
 
Shrinking the haystack wes caldwell - final
Shrinking the haystack   wes caldwell - finalShrinking the haystack   wes caldwell - final
Shrinking the haystack wes caldwell - final
 

Último

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 

Último (20)

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

Understanding and visualizing solr explain information - Rafal Kuc

  • 1. Understanding and visualising Solr explain information Rafał Kuć, Marek Rogoziński, Solr.pl r.kuc@solr.pl, m.rogozinski@solr.pl, 18.10.2011
  • 2. My Background Rafał Kuć • Working with Lucene since 2002 • Working with Solr since 2007 Solr.pl • Co – founder (with Marek Rogoziński) ń Area of expertise • Lucene and Solr consultant and architect in many major e-commerce sites in Poland • Author of „Solr 3.1 cookbook” by Packt Publishing • Father, husband, Starcraft II player and a gardener after hours ☺ 3
  • 3. What I Will Cover Understanding and visualising Solr explain information How to make the information given by Apache Solr explain easily readable by a Solr user (not much technical one) Context • Complicated explain made simple • Explain other made even simpler What’s next to come 4
  • 5. The Challenge Common questions like: • Why this document was found ? • Why this document wasn’t found ? • Why this document is higher than the other one ? • Why the results list look like this ? Considerations • Do we always have to anwser those questions ? So how to make users get the answers they want ? • That’s how http://explain.solr.pl was born 6
  • 6. Let’s look at a typical example You run a query • q=ddr&defType=dismax&qf=name^1000+description^100&bf =pow(price,1.5)&debugQuery=true&indent=true And you see the explain information 1.6771803 = (MATCH) sum of: 0.64883727 = (MATCH) max of: 0.64883727 = (MATCH) weight(name:ddr^1000.0 in 6), product of: 0.99999994 = queryWeight(name:ddr^1000.0), product of: 1000.0 = boost 2.446919 = idf(docFreq=3, maxDocs=17) 4.0867718E-4 = queryNorm 0.6488373 = (MATCH) fieldWeight(name:ddr in 6), product of: 1.4142135 = tf(termFreq(name:ddr)=2) 2.446919 = idf(docFreq=3, maxDocs=17) 0.1875 = fieldNorm(field=name, doc=6) 1.028343 = (MATCH) FunctionQuery(pow(float(price),const(1.5))), product of: 2516.272 = pow(float(price)=185.0,const(1.5)) 1.0 = boost 4.0867718E-4 = queryNorm 7
  • 7. Some theory tf – term’s frequency df – document frequency idf – inverse document frequency norm – normalization factor • queryNorm – query normalization factor • fieldNorm – field normalization factor coord – score factor 8
  • 8. Let’s take a look at it again 1.6771803 = (MATCH) sum of: 0.64883727 = (MATCH) max of: 0.64883727 = (MATCH) weight(name:ddr^1000.0 in 6), product of: 0.99999994 = queryWeight(name:ddr^1000.0), product of: 1000.0 = boost 2.446919 = idf(docFreq=3, maxDocs=17) 4.0867718E-4 = queryNorm 0.6488373 = (MATCH) fieldWeight(name:ddr in 6), product of: 1.4142135 = tf(termFreq(name:ddr)=2) 2.446919 = idf(docFreq=3, maxDocs=17) 0.1875 = fieldNorm(field=name, doc=6) 1.028343 = (MATCH) FunctionQuery(pow(float(price),const(1.5))), product of: 2516.272 = pow(float(price)=185.0,const(1.5)) 1.0 = boost 4.0867718E-4 = queryNorm
  • 9. A little more complicated example 36.50278 = (MATCH) sum of: 1.54896 = (MATCH) sum of: 0.46676102 = (MATCH) max of: 0.46676102 = (MATCH) weight(name:hard^20.0 in 2), product of: 0.5461986 = queryWeight(name:hard^20.0), product of: 20.0 = boost 2.734601 = idf(docFreq=2, maxDocs=17) 0.009986806 = queryNorm 0.8545628 = (MATCH) fieldWeight(name:hard in 2), product of: 1.0 = tf(termFreq(name:hard)=1) 2.734601 = idf(docFreq=2, maxDocs=17) 0.3125 = fieldNorm(field=name, doc=2) 0.46676102 = (MATCH) max of: 0.46676102 = (MATCH) weight(name:drive^20.0 in 2), product of: 0.5461986 = queryWeight(name:drive^20.0), product of: 20.0 = boost 2.734601 = idf(docFreq=2, maxDocs=17) 0.009986806 = queryNorm 0.61543787 = (MATCH) max of: 0.8545628 = (MATCH) fieldWeight(name:drive in 2), product of: 0.098470055 = (MATCH) weight(manu:maxtor in 2), product of: 1.0 = tf(termFreq(name:drive)=1) 0.03135923 = queryWeight(manu:maxtor), product of: 2.734601 = idf(docFreq=2, maxDocs=17) 3.1400661 = idf(docFreq=1, maxDocs=17) 0.3125 = fieldNorm(field=name, doc=2) 0.009986806 = queryNorm 3.1400661 = (MATCH) fieldWeight(manu:maxtor in 2), product of: 1.0 = tf(termFreq(manu:maxtor)=1) 3.1400661 = idf(docFreq=1, maxDocs=17) 1.0 = fieldNorm(field=manu, doc=2) 0.61543787 = (MATCH) weight(name:maxtor^20.0 in 2), product of: 0.6271846 = queryWeight(name:maxtor^20.0), product of: 20.0 = boost 3.1400661 = idf(docFreq=1, maxDocs=17) 0.009986806 = queryNorm 0.9812707 = (MATCH) fieldWeight(name:maxtor in 2), product of: 1.0 = tf(termFreq(name:maxtor)=1) 3.1400661 = idf(docFreq=1, maxDocs=17) 0.3125 = fieldNorm(field=name, doc=2) 34.95382 = (MATCH) FunctionQuery(float(price)), product of: 350.0 = float(price)=350.0 10.0 = boost 0.009986806 = queryNorm
  • 10. And now, a real life example 1.6287426 = (MATCH) sum of: 0.8143703 = (MATCH) sum of: 1.8327936E-6 = (MATCH) max plus 0.01 times others of: 0.40718514 = (MATCH) max plus 0.01 times others of: 1.8327936E-6 = (MATCH) weight(description_nostemm:"harry potter"~100^10.0 in 36647), product of: 4.154771E-7 = (MATCH) weight(description_nostemm:harry^10.0 in 36647), product of: 9.255408E-7 = queryWeight(description_nostemm:"harry potter"~100^10.0), product of: 4.4066886E-7 = queryWeight(description_nostemm:harry^10.0), product of: 10.0 = boost 10.0 = boost 15.841926 = idf(description_nostemm: harry=796 potter=373) 7.5426636 = idf(docFreq=796, maxDocs=553224) 5.8423506E-9 = queryNorm 5.8423506E-9 = queryNorm 1.9802407 = fieldWeight(description_nostemm:"harry potter" in 36647), product of: 0.94283295 = (MATCH) fieldWeight(description_nostemm:harry in 36647), product of: 1.0 = tf(phraseFreq=1.0) 1.0 = tf(termFreq(description_nostemm:harry)=1) 15.841926 = idf(description_nostemm: harry=796 potter=373) 7.5426636 = idf(docFreq=796, maxDocs=553224) 0.125 = fieldNorm(field=description_nostemm, doc=36647) 0.125 = fieldNorm(field=description_nostemm, doc=36647) 0.81437016 = (MATCH) sum of: 0.40718514 = (MATCH) weight(category_search:harri^2000000.0 in 36647), product of: 0.40718508 = (MATCH) weight(category_the:harri in 36647), product of: 0.123389944 = queryWeight(category_search:harri^2000000.0), product of: 0.12338993 = queryWeight(category_the:harri), product of: 2000000.0 = boost 10.559957 = idf(docFreq=38, maxDocs=553224) 10.559957 = idf(docFreq=38, maxDocs=553224) 0.011684701 = queryNorm 5.8423506E-9 = queryNorm 3.2999864 = (MATCH) fieldWeight(category_the:harri in 36647), product of: 3.2999864 = (MATCH) fieldWeight(category_search:harri in 36647), product of: 1.0 = tf(termFreq(category_the:harri)=1) 1.0 = tf(termFreq(category_search:harri)=1) 10.559957 = idf(docFreq=38, maxDocs=553224) 10.559957 = idf(docFreq=38, maxDocs=553224) 0.3125 = fieldNorm(field=category_the, doc=36647) 0.3125 = fieldNorm(field=category_search, doc=36647) 0.40718508 = (MATCH) weight(category_the:Potter in 36647), product of: 5.976383E-8 = (MATCH) weight(description:harri in 36647), product of: 0.12338993 = queryWeight(category_the:Potter), product of: 4.2931266E-8 = queryWeight(description:harri), product of: 10.559957 = idf(docFreq=38, maxDocs=553224) 7.348286 = idf(docFreq=967, maxDocs=553224) 0.011684701 = queryNorm 5.8423506E-9 = queryNorm 3.2999864 = (MATCH) fieldWeight(category_the:Potter in 36647), product of: 1.3920817 = (MATCH) fieldWeight(description:harri in 36647), product of: 1.0 = tf(termFreq(category_the:Potter)=1) 1.7320508 = tf(termFreq(description:harri)=3) 10.559957 = idf(docFreq=38, maxDocs=553224) 7.348286 = idf(docFreq=967, maxDocs=553224) 0.3125 = fieldNorm(field=category_the, doc=36647) 0.109375 = fieldNorm(field=description, doc=36647) 3.394099E-7 = (MATCH) FunctionQuery(pow(int(sold),const(1.5))), product of: 0.40718514 = (MATCH) max plus 0.01 times others of: 58.09475 = pow(int(sold)=15,const(1.5)) 5.0300997E-7 = (MATCH) weight(description_nostemm:potter^10.0 in 36647), product of: 1.0 = boost 4.84872E-7 = queryWeight(description_nostemm:potter^10.0), product of: 5.8423506E-9 = queryNorm 10.0 = boost 8.299262 = idf(docFreq=373, maxDocs=553224) 5.8423506E-9 = queryNorm 1.0374078 = (MATCH) fieldWeight(description_nostemm:potter in 36647), product of: 1.0 = tf(termFreq(description_nostemm:potter)=1) 8.299262 = idf(docFreq=373, maxDocs=553224) 0.125 = fieldNorm(field=description_nostemm, doc=36647) 0.40718514 = (MATCH) weight(category_search:Potter^2000000.0 in 36647), product of: 0.123389944 = queryWeight(category_search:Potter^2000000.0), product of: 2000000.0 = boost 10.559957 = idf(docFreq=38, maxDocs=553224) 5.8423506E-9 = queryNorm 3.2999864 = (MATCH) fieldWeight(category_search:Potter in 36647), product of: 1.0 = tf(termFreq(category_search:Potter)=1) 10.559957 = idf(docFreq=38, maxDocs=553224) 0.3125 = fieldNorm(field=category_search, doc=36647) 5.7398886E-8 = (MATCH) weight(description:Potter in 36647), product of: 4.656172E-8 = queryWeight(description:Potter), product of: 7.9696894 = idf(docFreq=519, maxDocs=553224) 5.8423506E-9 = queryNorm 1.2327484 = (MATCH) fieldWeight(description:Potter in 36647), product of: 1.4142135 = tf(termFreq(description:Potter)=2) 7.9696894 = idf(docFreq=519, maxDocs=553224) 0.109375 = fieldNorm(field=description, doc=36647)
  • 16. What if we can’t match ?
  • 18. What you gain from explain.solr.pl View Solr explain information in a human readable form Easily recognize the most influencing elements of the scoring process Answer the questions faster More things to come in the future 19
  • 19. Plans for the future Support for more formats of Apache Solr explain (right now, only Solr 3.x is supported) Visualisation of additional data More functionalities like: • query problems analysis • query syntax analysis and explanation • query time analysis and visualization • result comparison between cores or instances Very distant future - additional web application deployed along Solr to enable real time analysis of boosts influence
  • 20. Wrap Up The http://explain.solr.pl should be available very soon (probably end of October or mid November) Code of explain.solr.pl will be available on GitHub soon after the initial release There will be a Java version of the http://explain.solr.pl which will cover much more information 21
  • 21. Sources Links • http://www.solr.pl • http://explain.solr.pl • http://lucene.apache.org ☺ We would like to thank: • Łukasz Lewandowski (http://llewandowski.pl/) for his work on the GUI • Hubert ‘depesz’ Lubaczewski (http://depesz.com) for idea ☺ 22
  • 22. Contact Rafał Kuć • r.kuc@solr.pl • http://solr.pl Marek Rogoziński • m.rogozinski@solr.pl • http://solr.pl 23