[xquery-talk] search hit count

Cindy Girard clm6u at virginia.edu
Thu Jul 20 15:49:03 PDT 2006


Could I use a contains() in the count()?

MK> You haven't shown a source document, but my guess is that if $entries has
MK> element children called "text", and "classcode", and descendants called
MK> "div1", then the chance of "$entries[.=$keyword]" selecting anything is
MK> quite small, since it is matching on the entire text content of an element
MK> that has children.

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



>> -----Original Message-----
>> From: talk-bounces at xquery.com 
>> [mailto:talk-bounces at xquery.com] On Behalf Of Cindy Girard
>> Sent: 20 July 2006 18:43
>> To: talk at xquery.com
>> Subject: Re[2]: [xquery-talk] search hit count
>> 
>> 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?
>> 
>> Thanks,
>> Cindy
>> 
>> -------------------------------
>> $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)
>>           return
>>           <doc>{$entries/@id, $entries/@type, 
>> <docname>{$docname}</docname>,
>>             <classcode>{$entries/classcode}</classcode>, 
>> <ct>{count($entries[.=$keyword])}</ct>,
>>                          
>> $entries/teiheader/filedesc/titlestmt/title,  
>>                 <divs>
>>                             { for $diventries in $entries//div1
>>                                let $div1s := $diventries
>>                                     where contains($div1s, $keyword)
>>                                     return 
>> <div>{$diventries/@n, $diventries/head, 
>>                                     <div2s>
>>                                        { for $div2ent in 
>> $diventries//div2
>>                                             let $div2s := $div2ent
>>                                             where 
>> contains($div2s, $keyword)
>>                                             return 
>> <div2>{$div2ent/@n, $div2ent/head}</div2>
>>                                             }</div2s>
>>                                             }</div>
>>                             }</divs>}</doc>,
>> 
>> -------------------------------
>> 
>> >>   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 
>> 
>> _______________________________________________
>> talk at xquery.com
>> http://xquery.com/mailman/listinfo/talk



-- 
- Cindy 



More information about the talk mailing list