Для проекта поисковой системы университета я использую 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) выражением?