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

Was ist angesagt?

Drug Discovery: Proteomics, Genomics
Drug Discovery: Proteomics, GenomicsDrug Discovery: Proteomics, Genomics
Drug Discovery: Proteomics, GenomicsPhilip Bourne
 
Financial sales representative performance appraisal
Financial sales representative performance appraisalFinancial sales representative performance appraisal
Financial sales representative performance appraisalkalaramos312
 
Accenture-Loblaw-Achieve-High-Performance-Supply-Chain-Transformation
Accenture-Loblaw-Achieve-High-Performance-Supply-Chain-TransformationAccenture-Loblaw-Achieve-High-Performance-Supply-Chain-Transformation
Accenture-Loblaw-Achieve-High-Performance-Supply-Chain-TransformationNav Nair
 
Methods in Rational Drug design.pptx
Methods in Rational Drug design.pptxMethods in Rational Drug design.pptx
Methods in Rational Drug design.pptxashharnomani
 
Accounts payable assistant perfomance appraisal 2
Accounts payable assistant perfomance appraisal 2Accounts payable assistant perfomance appraisal 2
Accounts payable assistant perfomance appraisal 2tonychoper3904
 
Aahuti -PhD- Coursework-Progress Review Presentation-July-2018
Aahuti -PhD- Coursework-Progress Review Presentation-July-2018Aahuti -PhD- Coursework-Progress Review Presentation-July-2018
Aahuti -PhD- Coursework-Progress Review Presentation-July-2018Aahuti Dhandhukia
 
Role of Target Identification and Target Validation in Drug Discovery Process
Role of Target Identification and Target Validation in Drug Discovery ProcessRole of Target Identification and Target Validation in Drug Discovery Process
Role of Target Identification and Target Validation in Drug Discovery ProcessPallavi Duggal
 
Hospital ward clerk performance appraisal
Hospital ward clerk performance appraisalHospital ward clerk performance appraisal
Hospital ward clerk performance appraisalkyleannie435
 
analogue based drug design and discovery.pptx
analogue based drug design and discovery.pptxanalogue based drug design and discovery.pptx
analogue based drug design and discovery.pptxramadevi824914
 
Quality assurance specialist performance appraisal
Quality assurance specialist performance appraisalQuality assurance specialist performance appraisal
Quality assurance specialist performance appraisaladamkruse460
 
Test engineer performance appraisal
Test engineer performance appraisalTest engineer performance appraisal
Test engineer performance appraisaltristanbennett83
 

Was ist angesagt? (14)

Qsar
QsarQsar
Qsar
 
Drug Discovery: Proteomics, Genomics
Drug Discovery: Proteomics, GenomicsDrug Discovery: Proteomics, Genomics
Drug Discovery: Proteomics, Genomics
 
Financial sales representative performance appraisal
Financial sales representative performance appraisalFinancial sales representative performance appraisal
Financial sales representative performance appraisal
 
Accenture-Loblaw-Achieve-High-Performance-Supply-Chain-Transformation
Accenture-Loblaw-Achieve-High-Performance-Supply-Chain-TransformationAccenture-Loblaw-Achieve-High-Performance-Supply-Chain-Transformation
Accenture-Loblaw-Achieve-High-Performance-Supply-Chain-Transformation
 
Methods in Rational Drug design.pptx
Methods in Rational Drug design.pptxMethods in Rational Drug design.pptx
Methods in Rational Drug design.pptx
 
Denovo Drug Design
Denovo Drug DesignDenovo Drug Design
Denovo Drug Design
 
Accounts payable assistant perfomance appraisal 2
Accounts payable assistant perfomance appraisal 2Accounts payable assistant perfomance appraisal 2
Accounts payable assistant perfomance appraisal 2
 
Aahuti -PhD- Coursework-Progress Review Presentation-July-2018
Aahuti -PhD- Coursework-Progress Review Presentation-July-2018Aahuti -PhD- Coursework-Progress Review Presentation-July-2018
Aahuti -PhD- Coursework-Progress Review Presentation-July-2018
 
CADD Lecture
CADD LectureCADD Lecture
CADD Lecture
 
Role of Target Identification and Target Validation in Drug Discovery Process
Role of Target Identification and Target Validation in Drug Discovery ProcessRole of Target Identification and Target Validation in Drug Discovery Process
Role of Target Identification and Target Validation in Drug Discovery Process
 
Hospital ward clerk performance appraisal
Hospital ward clerk performance appraisalHospital ward clerk performance appraisal
Hospital ward clerk performance appraisal
 
analogue based drug design and discovery.pptx
analogue based drug design and discovery.pptxanalogue based drug design and discovery.pptx
analogue based drug design and discovery.pptx
 
Quality assurance specialist performance appraisal
Quality assurance specialist performance appraisalQuality assurance specialist performance appraisal
Quality assurance specialist performance appraisal
 
Test engineer performance appraisal
Test engineer performance appraisalTest engineer performance appraisal
Test engineer performance appraisal
 

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

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 

Kürzlich hochgeladen (20)

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 

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