Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-533

SpanQuery scoring: SpanWeight lacks a recursive traversal of the query tree

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 1.9
    • None
    • core/search
    • None

    Description

      I found the computing of weights to be somewhat different according to the query type (BooleanQuery versus SpanQuery) :

      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 like a recursive descent through the tree, taking into 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 into account the boost of the tree root in SumOfSquareWeights(),
      which is consistent with the resulting scores not considering the boost of the tree
      leaves.

      vintz

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              vintz Vincent Le Maout
              Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: