CONCAT元件和分数的列表,而无需在XQuery中使用递归函数Tijah扩展

StackOverflow https://stackoverflow.com/questions/1951894

  •  21-09-2019
  •  | 
  •  

有关大学的搜索引擎项目,我使用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, '}'), ''),
  ' ')
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top