Tijah拡張子を持つXQueryで再帰関数を使用せずに要素とスコアのリストをCONCAT
質問
大学検索エンジンのプロジェクトのために、私は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代数エンジンは再帰関数をサポートしていません。スコアをフォーマットするには、
私は、非再帰的(おそらく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