Hi everybody,
it's been a while since I try to figure out the difference between the scoring of span and boolean queries with little success. All stems from the observation that the boost of SpanTermQuery as leaves of the query tree does not seem to have much influence on the resulting scores of the documents. Looking into the source code (1.9.1) I found the computing of weights to be somewhat different according to the query type (I am not that comfortable with the source code :-)

*org.apache.lucene.search.BooleanQuery.BooleanWeight* :

*public* BooleanWeight(Searcher searcher)
     *throws* IOException {
     *this*.similarity = getSimilarity(searcher);
     *for* (*int* i = 0 ; i < clauses.size(); i++) {
       BooleanClause c = (BooleanClause)clauses.elementAt(i);
       weights.add(c.getQuery().createWeight(searcher));
     }
   }

which looks to me like a recursive descent through the tree, taking in account
the weights of all the nodes, whereas :

*org.apache.lucene.search.spans.SpanWeight* :

*public* SpanWeight(SpanQuery query, Searcher searcher)
   *throws* IOException {
   *this*.similarity = query.getSimilarity(searcher);
   *this*.query = query;
   *this*.terms = query.getTerms();

   idf = *this*.query.getSimilarity(searcher).idf(terms, searcher);
 }

lacks any traversal and according to what I have understood so far from the rest of the code, only takes in account the boost of the tree root in SumOfSquareWeights, which is consistent with the resulting scores not considering the boost of my tree
leaves.
I am missing something ? Is it intented or is it a bug ?

Thanks in advance.
Regards.

Vincent


Reply via email to