CONCAT元件和分数的列表,而无需在XQuery中使用递归函数Tijah扩展
题
有关大学的搜索引擎项目,我使用MonetDB与Tijah扩展。我有节点的列表,从搜索返回的字符串:
let $qid := tijah:queryall-id($nexi)
let $nodes := tijah:nodes($qid)
$nodes
现在包含元素的列表,例如:
<book>Design Patterns</book>
<book>AntiPatterns</book>
我可以计算并使用以下FLWOR表达式返回分数此列表:
for $book in $nodes
let $score := tijah:score($qid, $book)
order by $score descending
return <book score="{$score}">{$book/title}</book>
不过,我想用一个新的搜索查询的节点列表。要做到这一点,我要生成从该列表中具有以下格式的字符串:
Design Patterns {0.2937} Antipatterns {0.43984}
在此格式化分数(由tijah:score
返回与名称结合起来。我想生成该字符串的递归功能,但是MonetDB代数发动机我需要使用不支持递归函数。
可以产生具有非递归(可能FLWOR)表达式相同的结果?
解决方案
这是不是你想要做什么?
string-join(
for $book in $nodes
let $score := tijah:score($qid, $book)
order by $score descending
return string-join((data($book/title), ' {', $score, '}'), ''),
' ')
不隶属于 StackOverflow