Xquery:计算一组记录中每个记录中某个术语的出现次数

标签 xquery marklogic

给定一组 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:

result

示例:$term:='数学'$record/rec:paragraph:='数学是对数量等主题的研究'

我想要$record/rec:paragraph中数学一词出现的次数

知道是什么导致了这个结果吗?有没有其他方法可以计算每个段落中每个术语出现的次数。

最佳答案

使用 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>

关于Xquery:计算一组记录中每个记录中某个术语的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38445107/

相关文章:

javascript - 使用 javascript 调用 XQuery

xml - 用 xquery 替换元素的值

indexing - 短语搜索-最佳索引设置

xml - 优化删除没有子元素的 XML 元素

xquery - 使用 mlcp、csv 文件和转换解析日期导入数据

xml - 如何使用 xquery 从 xml 文件中读取 namespace

javascript - 如何在 MarkLogic Javascript 中复制和修改文档?

javascript - 我怎样才能获得有关文档的最重要信息以及我在 MarkLogic/Query Console 中搜索的单词周围的一些行?

marklogic - 日志到底说了什么

python - 用于 REST API 的 Marklogic python 库