Tijah拡張子を持つXQueryで再帰関数を使用せずに要素とスコアのリストをCONCAT

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

  •  21-09-2019
  •  | 
  •  

質問

大学検索エンジンのプロジェクトのために、私は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, '}'), ''),
  ' ')
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top