MarkLogic按XPath查询

问题描述 投票:0回答:2

我正在评估MarkLogic在我们构建的新Java应用程序中使用以存储复杂的xml文档。其中一个要求是允许用户通过在gui中输入xpath查询来搜索文档。我无法在MarkLogic中找到一种方法来查找/ a / b / c ='A'和/ a / d / e ='B'的所有文档。我可以看到查找文件的方法,其中名称x的元素具有值y但不适用于完整的xpath。任何帮助,将不胜感激。

谢谢

布鲁斯

marklogic
2个回答
0
投票

像这样的XPath表达式可以工作:

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

使用cts查询可能会表现得更好,而cts:search也允许以高性能方式对文档进行排序。使用FLWOR进行排序并不总是可以通过MarkLogic进行优化,从而导致它需要几分钟而不是亚秒。

HTH!


0
投票

关于使用Java API提交搜索XPath的狭隘问题...

QueryManager使用MarkLogic Search API执行搜索请求。

您可以使用两个查询选项创建组合查询XML结构,并使用RawCombinedQueryDefinition将其包装,以将其传递给QueryManager.search():

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

查询选项可以使用search:searchable-expression元素指定受约束的XPath:

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

所有这一切,正如Geert所指出的那样,将每笔交易拆分为单独的文档会好得多,因此可以独立索引和检索文档 - 因此用户无需了解文档层次结构。

© www.soinside.com 2019 - 2024. All rights reserved.