SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Andere mochten auch

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
 

Andere mochten auch (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
 

Ähnlich wie Understanding and visualizing solr explain information - Rafal Kuc

The Ring programming language version 1.10 book - Part 40 of 212
The Ring programming language version 1.10 book - Part 40 of 212The Ring programming language version 1.10 book - Part 40 of 212
The Ring programming language version 1.10 book - Part 40 of 212Mahmoud Samir Fayed
 
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.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.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
 
Wrangle 2016: (Lightning Talk) FizzBuzz in TensorFlow
Wrangle 2016: (Lightning Talk) FizzBuzz in TensorFlowWrangle 2016: (Lightning Talk) FizzBuzz in TensorFlow
Wrangle 2016: (Lightning Talk) FizzBuzz in TensorFlowWrangleConf
 
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.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 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
 
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
 

Ähnlich wie 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
 
The Ring programming language version 1.10 book - Part 40 of 212
The Ring programming language version 1.10 book - Part 40 of 212The Ring programming language version 1.10 book - Part 40 of 212
The Ring programming language version 1.10 book - Part 40 of 212
 
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.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.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
 
Wrangle 2016: (Lightning Talk) FizzBuzz in TensorFlow
Wrangle 2016: (Lightning Talk) FizzBuzz in TensorFlowWrangle 2016: (Lightning Talk) FizzBuzz in TensorFlow
Wrangle 2016: (Lightning Talk) FizzBuzz in TensorFlow
 
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.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 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
 
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
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

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
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
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
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 

Kürzlich hochgeladen (20)

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
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
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
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 

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