给定一组xml记录和一组术语$terms
。 $terms
序列中的术语是从记录集中提取的。我想计算每个段落记录中每个术语的出现次数。我使用以下代码来执行此操作:
for $record in /rec:Record
for $term in $terms
return xdmp:unquote(concat('<info>',string(count(lower-case($record/rec:paragraph )[. = lower-case($term)])), '</info>'))
对于每个记录中的每个术语,我得到0个计数:
示例:$term:='Mathematics'
,$record/rec:paragraph:='Mathematics is the study of topics such as quantity'
我想要$record/rec:paragraph
知道导致这个结果的原因吗?有没有其他方法可以计算每个段落中每个术语的出现次数。
答案 0 :(得分:2)
使用tokenize()将输入字符串拆分为单词标记。那么计数本身就是微不足道的。例如:
let $text := 'Mathematics is the study of topics such as quantity'
let $myterms := 'mathematics'
let $wds := tokenize($text, '\s+')
for $t in $myterms
return <term name="{$t}">{count($wds[lower-case(.)=lower-case($t)])}</term>
返回:
<term nm="mathematics">1</term>