В продолжении к вопросу: MarkLogic - getting distinct valuesMarkLogic - Улучшение запроса
У меня есть структура документа, как это:
<document>
<question_item>
<question>What is your name?</question>
<answer>Barney Rubble</answer>
</question_item>
<question_item>
<question>What is your address?</question>
<answer>Bedrock</answer>
</question_item>
...
</document>
Благодаря полученному ответ на другой вопрос, теперь я могу перечислить все различные вопросы порядок частоты как таковые:
for $v in cts:element-values(xs:QName('question'),(),(),
cts:element-word-query(xs:QName('question'), 'name'))
where cts:contains($v, cts:word-query('name'))
order by cts:frequency($v)
return concat($v,concat("-",cts:frequency($v)))
Я хотел бы иметь возможность также включать с каждым отдельным вопросом, верхними х наиболее распространенными ответами и их подсчетом, например, Барни Щебень (100), Фред Флинтстон (59) и т. Д.
Есть ли способ сделать это достаточно эффективно? Я знаю, что другой вариант - изменить формат документа на один документ на вопрос question_item, но я предпочел бы избежать этого на данный момент, если это возможно.
Любая помощь с благодарностью. Благодаря!
Роберт, эти функции очень просты, если вам не нужно масштабировать. Некоторое представление о вашем масштабе может помочь нам ответить на вопрос. Сколько документов у вас есть? Сколько узлов? Примерно, сколько будет соответствовать исходному запросу? Примерно, сколько будет соответствовать второму запросу («x наиболее распространенные ответы»)? Вам нужно показать ответ на второй запрос только для верхних совпадений, видимых в gui? –