我正在评估MarkLogic,以将其用于构建复杂的XML文档的新Java应用程序中。要求之一是允许用户通过在gui中输入xpath查询来搜索文档。我无法在MarkLogic中找到说/ a / b / c ='A'和/ a / d / e ='B'的所有文档的方法。我可以看到在名称为x的元素具有值y的情况下查找文档的说法,但对于完整的xpath却没有。任何帮助将不胜感激。
谢谢
布鲁斯
答案 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所指出的那样,最好将每个交易作为一个单独的文档进行拆分,以便可以对文档进行独立索引和检索-这样用户就不必了解文档层次结构。