: Unless i'm missing something: FuzzyQuery defaults to using the 
: "TopTermsScoringBooleanQueryRewrite" method based on the terms found in 
: the index that match the fuzzy expression.  So the results of a simple 
: fuzzy query should already come back based on the tf/idf scores of the 
: terms.
to give a concrete example...

using 4.4, with the example configs & sample data, this query...

http://localhost:8983/solr/select?defType=edismax&qf=features&q=blak~2&fl=score,id,features&debugQuery=true

...matches two documents with differnet scores.  the resulting scores are 
based on both the edit distance of the word that matches the fuzzy term 
(which durring query-rewriting is used as a term boost), and the tf/idf of 
those terms...

A doc that contains "black" (edit distance 1 => boost * 0.75)...

0.39237294 = (MATCH) sum of:
  0.39237294 = (MATCH) weight(features:black^0.75 in 26) [DefaultSimilarity], 
result of:
    0.39237294 = score(doc=26,freq=1.0 = termFreq=1.0), product of:
      0.83205026 = queryWeight, product of:
        0.75 = boost
        3.7725887 = idf(docFreq=1, maxDocs=32)
        0.29406872 = queryNorm
      0.4715736 = fieldWeight in 26, product of:
        1.0 = tf(freq=1.0), with freq of:
          1.0 = termFreq=1.0
        3.7725887 = idf(docFreq=1, maxDocs=32)
        0.125 = fieldNorm(doc=26)

...compared to a doc that contains "book" (edit distance 2 => boost * 0.5)...

0.22888422 = (MATCH) sum of:
  0.22888422 = (MATCH) weight(features:book^0.5 in 5) [DefaultSimilarity], 
result of:
    0.22888422 = score(doc=5,freq=1.0 = termFreq=1.0), product of:
      0.5547002 = queryWeight, product of:
        0.5 = boost
        3.7725887 = idf(docFreq=1, maxDocs=32)
        0.29406872 = queryNorm
      0.4126269 = fieldWeight in 5, product of:
        1.0 = tf(freq=1.0), with freq of:
          1.0 = termFreq=1.0
        3.7725887 = idf(docFreq=1, maxDocs=32)
        0.109375 = fieldNorm(doc=5)



-Hoss

Reply via email to