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

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


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



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

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


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




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




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




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


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


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




                         23
Thank you

Mais conteúdo relacionado

Mais procurados

Árvore b+ pesquisa e ordenação
Árvore b+ pesquisa e ordenaçãoÁrvore b+ pesquisa e ordenação
Árvore b+ pesquisa e ordenaçãoGustavo Chaves
 
Dinheiro: benção ou maldição?
Dinheiro: benção ou maldição?Dinheiro: benção ou maldição?
Dinheiro: benção ou maldição?Quenia Damata
 
2 atos e o avanco do evangelho - 2 aula
2   atos e o avanco do evangelho - 2 aula2   atos e o avanco do evangelho - 2 aula
2 atos e o avanco do evangelho - 2 aulaPIB Penha
 
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
 
Manual de Cerimônias - Timóteo Ramos de Oliveira
Manual de Cerimônias - Timóteo Ramos de OliveiraManual de Cerimônias - Timóteo Ramos de Oliveira
Manual de Cerimônias - Timóteo Ramos de OliveiraAbdias Barreto
 
Neural Search Comes to Apache Solr_ Approximate Nearest Neighbor, BERT and Mo...
Neural Search Comes to Apache Solr_ Approximate Nearest Neighbor, BERT and Mo...Neural Search Comes to Apache Solr_ Approximate Nearest Neighbor, BERT and Mo...
Neural Search Comes to Apache Solr_ Approximate Nearest Neighbor, BERT and Mo...Sease
 
Com sabão lavo o meu rostinho
Com sabão lavo o meu rostinhoCom sabão lavo o meu rostinho
Com sabão lavo o meu rostinhoLé Souza
 
Deus se importa com você. Pr. Márcio Valadão
Deus se importa com você. Pr. Márcio ValadãoDeus se importa com você. Pr. Márcio Valadão
Deus se importa com você. Pr. Márcio Valadãodudu1978
 
Solr Graph Query: Presented by Kevin Watters, KMW Technology
Solr Graph Query: Presented by Kevin Watters, KMW TechnologySolr Graph Query: Presented by Kevin Watters, KMW Technology
Solr Graph Query: Presented by Kevin Watters, KMW TechnologyLucidworks
 

Mais procurados (18)

Árvore b+ pesquisa e ordenação
Árvore b+ pesquisa e ordenaçãoÁrvore b+ pesquisa e ordenação
Árvore b+ pesquisa e ordenação
 
How Solr Search Works
How Solr Search WorksHow Solr Search Works
How Solr Search Works
 
Dinheiro: benção ou maldição?
Dinheiro: benção ou maldição?Dinheiro: benção ou maldição?
Dinheiro: benção ou maldição?
 
2 atos e o avanco do evangelho - 2 aula
2   atos e o avanco do evangelho - 2 aula2   atos e o avanco do evangelho - 2 aula
2 atos e o avanco do evangelho - 2 aula
 
Roger Olson - Teologia Arminiana - Mitos ou Realidades
Roger Olson - Teologia Arminiana - Mitos ou RealidadesRoger Olson - Teologia Arminiana - Mitos ou Realidades
Roger Olson - Teologia Arminiana - Mitos ou Realidades
 
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
 
Manual de Cerimônias - Timóteo Ramos de Oliveira
Manual de Cerimônias - Timóteo Ramos de OliveiraManual de Cerimônias - Timóteo Ramos de Oliveira
Manual de Cerimônias - Timóteo Ramos de Oliveira
 
Projeto Capelania
Projeto CapelaniaProjeto Capelania
Projeto Capelania
 
O sermão
O sermãoO sermão
O sermão
 
Neural Search Comes to Apache Solr_ Approximate Nearest Neighbor, BERT and Mo...
Neural Search Comes to Apache Solr_ Approximate Nearest Neighbor, BERT and Mo...Neural Search Comes to Apache Solr_ Approximate Nearest Neighbor, BERT and Mo...
Neural Search Comes to Apache Solr_ Approximate Nearest Neighbor, BERT and Mo...
 
O Grande Julgamento
O Grande JulgamentoO Grande Julgamento
O Grande Julgamento
 
Com sabão lavo o meu rostinho
Com sabão lavo o meu rostinhoCom sabão lavo o meu rostinho
Com sabão lavo o meu rostinho
 
Deus se importa com você. Pr. Márcio Valadão
Deus se importa com você. Pr. Márcio ValadãoDeus se importa com você. Pr. Márcio Valadão
Deus se importa com você. Pr. Márcio Valadão
 
Bibliologia Parte 2
Bibliologia Parte 2Bibliologia Parte 2
Bibliologia Parte 2
 
Bíblia sagrada
Bíblia sagradaBíblia sagrada
Bíblia sagrada
 
14 Chegou a Hora do Seu Juízo
14 Chegou a Hora do Seu Juízo14 Chegou a Hora do Seu Juízo
14 Chegou a Hora do Seu Juízo
 
Solr Graph Query: Presented by Kevin Watters, KMW Technology
Solr Graph Query: Presented by Kevin Watters, KMW TechnologySolr Graph Query: Presented by Kevin Watters, KMW Technology
Solr Graph Query: Presented by Kevin Watters, KMW Technology
 
Apocalipse - Capitulo 03
Apocalipse - Capitulo 03 Apocalipse - Capitulo 03
Apocalipse - Capitulo 03
 

Destaque

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

Destaque (10)

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
 
Grouping and Joining in Lucene/Solr
Grouping and Joining in Lucene/SolrGrouping and Joining in Lucene/Solr
Grouping and Joining in Lucene/Solr
 
Introduction to Apache Solr.
Introduction to Apache Solr.Introduction to Apache Solr.
Introduction to Apache Solr.
 
Analyze this! tips and tricks on getting the lucene solr analyzer to index an...
Analyze this! tips and tricks on getting the lucene solr analyzer to index an...Analyze this! tips and tricks on getting the lucene solr analyzer to index an...
Analyze this! tips and tricks on getting the lucene solr analyzer to index an...
 
Introduction to Apache Lucene/Solr
Introduction to Apache Lucene/SolrIntroduction to Apache Lucene/Solr
Introduction to Apache Lucene/Solr
 
Get the most out of Solr search with PHP
Get the most out of Solr search with PHPGet the most out of Solr search with PHP
Get the most out of Solr search with PHP
 

Semelhante a Understanding and visualizing solr explain information - Rafal Kuc

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
 

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

Las tripas de un sistema solr
Las tripas de un sistema solrLas tripas de un sistema solr
Las tripas de un sistema solr
 
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
 

Mais de lucenerevolution

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

Mais de lucenerevolution (20)

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

Último

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
 
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
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
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
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
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
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
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
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 

Último (20)

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
 
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
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
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
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
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
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
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!
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 

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