Concat eine Liste von Elementen und Partituren ohne eine rekursive Funktion in XQuery mit Tijah Erweiterungen

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

  •  21-09-2019
  •  | 
  •  

Frage

Für eine Universität Suchmaschine Projekt, ich bin mit MonetDB mit Tijah Erweiterungen. Ich habe eine Liste von Knoten erhalten, von einer Suchzeichenfolge zurückgegeben:

let $qid := tijah:queryall-id($nexi)
let $nodes := tijah:nodes($qid)

$nodes enthält nun eine Liste von Elementen, z.B .:

<book>Design Patterns</book>
<book>AntiPatterns</book>

Ich kann die Noten für diese Liste mit dem folgenden FLWOR Ausdruck berechnen und zurückgeben:

for $book in $nodes
  let $score := tijah:score($qid, $book)
  order by $score descending
  return <book score="{$score}">{$book/title}</book>

Allerdings mag ich die Liste der Knoten in einer neuen Suchabfrage verwenden. Um dies zu tun, muß ich mit der folgenden Formatierung eine Zeichenkette aus dieser Liste erzeugen:

Design Patterns {0.2937} Antipatterns {0.43984}

In dieser die Partituren Formatierung (zurückgegeben durch tijah:score und die Namen kombiniert werden. Ich wollte diese Zeichenfolge mit einer rekursiven Funktion erzeugen, aber der MonetDB Algebra Motor I verwenden muß keine Unterstützung für rekursive Funktionen.

Kann ich erzeugen das gleiche Ergebnis mit einem nicht-rekursive (möglicherweise FLWOR) Ausdruck?

War es hilfreich?

Lösung

Ist das tun, was Sie wollen?

string-join(
  for $book in $nodes
  let $score := tijah:score($qid, $book)
  order by $score descending
  return string-join((data($book/title), ' {', $score, '}'), ''),
  ' ')
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top