MarkLogic Query By XPaths - PullRequest
       8

MarkLogic Query By XPaths

0 голосов
/ 12 февраля 2019

Я оцениваю MarkLogic для использования в новом Java-приложении, которое мы создаем для хранения сложных XML-документов.Одним из требований является предоставление пользователям возможности поиска документов путем ввода запросов xpath в графическом интерфейсе.Я не могу найти способ в MarkLogic сказать, чтобы найти все документы, где / a / b / c = 'A' и / a / d / e = 'B'.Я вижу способы сказать, найти документы, где элемент имени x имеет значение y, но не для полных путей xpath.Любая помощь будет оценена.

Спасибо

Брюс

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

По узкому вопросу отправки XPath для поиска с использованием Java API ...

QueryManager выполняет поисковые запросы с использованием MarkLogic Search API.

Вы можете создать структуру XML комбинированного запроса с обоими параметрами запроса и обернуть ее с помощью RawCombinedQueryDefinition для передачи ее в QueryManager.search ():

http://docs.marklogic.com/javadoc/client/com/marklogic/client/query/RawCombinedQueryDefinition.html

Параметры запроса могут указывать ограниченный XPath с элементом search: searchable-expression:

http://docs.marklogic.com/guide/search-dev/appendixa#id_60011

Все, что сказано, как указывает Герт, было бы гораздо лучше выделитькаждая сделка представляет собой отдельный документ, поэтому документы могут быть проиндексированы и извлечены независимо - и пользователям не нужно понимать иерархию документов.

0 голосов
/ 12 февраля 2019

Подобное выражение XPath будет работать:

collection()[(/a/b/c = 'A') and (/a/d/e = 'B')]

Использование запросов cts может работать лучше, а cts:search также позволяет сортировать ваши документы с высокой производительностью.MarkLogic не всегда может оптимизировать сортировку с помощью FLWOR, так как это занимает минуты, а не секунды.

HTH!

...