XPaths的MarkLogic查询

时间:2019-02-12 11:46:14

标签: marklogic

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

谢谢

布鲁斯

2 个答案:

答案 0 :(得分:0)

这样的XPath表达式将起作用:

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

使用cts查询可能会更好,并且cts:search也可以以高效的方式对文档进行排序。 MarkLogic不能总是总是对使用FLWOR进行排序进行优化,这会导致几分钟而不是一秒钟的时间。

HTH!

答案 1 :(得分:0)

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

QueryManager使用MarkLogic搜索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所指出的那样,最好将每个交易作为一个单独的文档进行拆分,以便可以对文档进行独立索引和检索-这样用户就不必了解文档层次结构。