如何使用Java API在Marklogic中搜索XML标记或JSON密钥

时间:2015-04-08 07:46:33

标签: xml json marklogic java-api

我需要使用Java API在Marklogic数据库中搜索XML标记或JSON密钥,而不指定XML标记的任何元素值或JSON密钥的值

2 个答案:

答案 0 :(得分:2)

在Java API中,您可以使用StructuredQueryBuilder类的containerQuery()方法来匹配JSON属性或XML元素。

为包含的查询提供空和()以匹配容器中的任何内容,如:

qb.containerQuery(qb.jsonProperty("name"), qb.and())

有关详细信息,请参阅:

http://docs.marklogic.com/javadoc/client/com/marklogic/client/query/StructuredQueryBuilder.html#containerQuery%28com.marklogic.client.query.StructuredQueryBuilder.ContainerIndex,%20com.marklogic.client.query.StructuredQueryDefinition%29

如果您只想提取这些元素,可以使用指定查询选项来指定要从文档中提取的元素或属性:

http://docs.marklogic.com/guide/rest-dev/appendixb#id_18313

您可能希望使用JSON或XML句柄而不是使用SearchHandle类来使用搜索响应。

希望有帮助

答案 1 :(得分:0)

如果您不想区分no-namespace元素和具有相同名称的json-properties,则可以使用路径索引。否则使用字段。

如果要搜索元素或json属性的存在而不是特定值,则应使用元素查询搜索约束:

http://docs.marklogic.com/search:search#opt-constraint

<element-query>
     

指定将搜索限制为指定的约束   元件。您无法从元素查询约束创建构面。

<options xmlns="http://marklogic.com/appservices/search">
  <constraint name="sample-element-constraint">
    <element-query name="title" ns="http://my/namespace" />
  </constraint>
</options>

未针对JSON属性进行测试,但MarkLogic 8通常以相同的方式处理它们。

HTH!