Concat没有在带有Tijah扩展的XQuery中使用递归函数的元素和分数列表

时间:2009-12-23 10:15:23

标签: xquery monetdb

对于大学搜索引擎项目,我使用带有Tijah扩展的MonetDB。我有一个从搜索字符串返回的节点列表:

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代数引擎不支持递归函数。 / p>

我可以使用非递归(可能是FLWOR)表达式生成相同的结果吗?

1 个答案:

答案 0 :(得分:0)

这样做你想要的吗?

string-join(
  for $book in $nodes
  let $score := tijah:score($qid, $book)
  order by $score descending
  return string-join((data($book/title), ' {', $score, '}'), ''),
  ' ')
相关问题