[xquery-talk] search hit count

Cindy Girard clm6u at virginia.edu
Thu Jul 20 14:43:24 PDT 2006

The count function is nine lines down in the following code. I tried Michael's
suggestion, but I'm not getting any results on the count. What am I
doing wrong?


$hits :=
   for $entries in collection($collctn)//tei.2
      let $docname := concat($entries/@id, '.xml')
      let $divs := $entries//div1
      let $text := $entries/text
        where contains($text, $keyword)
          <doc>{$entries/@id, $entries/@type, <docname>{$docname}</docname>,
            <classcode>{$entries/classcode}</classcode>, <ct>{count($entries[.=$keyword])}</ct>,
                            { for $diventries in $entries//div1
                               let $div1s := $diventries
                                    where contains($div1s, $keyword)
                                    return <div>{$diventries/@n, $diventries/head, 
                                       { for $div2ent in $diventries//div2
                                            let $div2s := $div2ent
                                            where contains($div2s, $keyword)
                                            return <div2>{$div2ent/@n, $div2ent/head}</div2>


>>   The count() function give me how
>>   many documents in which the search is found, but not the individual
>>   hit count.

MK> I suspect you did something like 

MK> count($docs[x/y/z='hit'])

MK> which would give you the number of $docs in which x/y/z='hit' is true.

MK> Change this to

MK> count($docs/x/y/z[.='hit'])

MK> and you will get the number of z elements equal to 'hit'.

MK> Michael Kay
MK> http://www.saxonica.com/

- Cindy 

More information about the talk mailing list