Я очень недавно начал работу с MarkLogic и XQuery.MarkLogic - Расширение поиска, возврат определенного узла объекта
Я пытаюсь создать Search Transform
вернуться, в фактический JSON от конкретного уровня документа
Вот пример документа.
Я хотел бы вернуть все JSON на основе segment
независимо от того, где результаты поиска находятся на нижнем уровне (транскрипт, темы, баннеры и т.д.,)
плескаться в в запросе консоли ...
search:search('trump')/search:result/search:snippet//@path
успешно Возвращаетобъекта, завернутый в Fn: док
п: док ("/ 20170120/NBCNightlyNews/1830/НВК")/массив узлов ("сегменты")/объект-узел() 1/транскрипт/узел ("00:00:02")/текста ("сообщение")
Однако
Когда я пытаюсь implment подобного Xpath выражения в преобразовании.
let $root := $content/*
return document {$root/search:result/search:snippet//@path}
И попытаться выполнить его (в независимо от того, что выражение XPath является, кроме того, просто $ самого корня есть другая неудача) возвращает
<error-response xmlns="http://marklogic.com/xdmp/error">
<status-code>400</status-code>
<status>Bad Request</status>
<message-code>XDMP-CHILDNODEKIND</message-code>
<message>
XDMP-CHILDNODEKIND: $root/search:result/search:snippet/descendant-or-self::node()/@path -- document nodes cannot have attribute node children
</message>
</error-response>
Если я могу получить преобразование, чтобы вернуться путь, я могу продолжить, пытаясь оценить путь, захватить соответствующий раздел JSON и вернуться.
Любые мысли?
Привет, Дейв, благодарю вас за ответ.Раньше я использовал '/ v1/search', но в конечном итоге вам придется дополнительно настроить поиск (мы используем сервер анализа контента, который обеспечит весовые коэффициенты, которые нам нужно включить в поиск, поэтому я начал использовать расширение. Я считаю, что мне нужно немного исследовать Transforms, а затем вернуться к логике пользовательского поиска. Я вернусь назад после того, как прочитаю предлагаемые документы. – Busturdust
В зависимости от вашей конечной цели вы также можете посмотреть на извлечение-документ- данных, который позволяет извлекать выбранные части сопоставленного документа. http://docs.marklogic.com/guide/search-dev/query-options#id_37692 – kcoleman
Как подсказка Дейва и Кима, вы можете использовать API поиска в пределах расширение вашего ресурса, которое даст вам фрагментацию и извлечение на основе XPath. – ehennum