[xquery-talk] search hit count
Michael Kay
mhk at mhk.me.uk
Thu Jul 20 21:31:44 PDT 2006
Yes, but it wouldn't tell you much. Since $entries/text contains $keyword,
$entries will also contain keyword.
Michael Kay
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 19:49
> To: talk at xquery.com
> Subject: Re[4]: [xquery-talk] search hit count
>
>
> Could I use a contains() in the count()?
>
> MK> You haven't shown a source document, but my guess is that if
> MK> $entries has element children called "text", and "classcode", and
> MK> descendants called "div1", then the chance of
> "$entries[.=$keyword]"
> MK> selecting anything is quite small, since it is matching on the
> MK> entire text content of an element 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
>
> _______________________________________________
> talk at xquery.com
> http://xquery.com/mailman/listinfo/talk
More information about the talk
mailing list