【发布时间】:2015-06-13 01:37:51
【问题描述】:
我需要使用 Java API 在 Marklogic 数据库中搜索 XML 标记或 JSON 键,而不指定 XML 标记的任何元素值或 JSON 键的值
【问题讨论】:
我需要使用 Java API 在 Marklogic 数据库中搜索 XML 标记或 JSON 键,而不指定 XML 标记的任何元素值或 JSON 键的值
【问题讨论】:
如果您不想区分无命名空间元素和具有相同名称的 json-properties,则可以使用路径索引。否则使用字段。
如果您只想搜索是否存在元素或 json-properties 而不是特定值,则应使用元素查询搜索约束:
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!
【讨论】:
在 Java API 中,您可以使用 StructuredQueryBuilder 类的 containerQuery() 方法来匹配 JSON 属性或 XML 元素。
为包含的查询提供一个空的 and() 以匹配容器内的任何内容,如:
qb.containerQuery(qb.jsonProperty("name"), qb.and())
有关详细信息,请参阅:
如果您只想提取那些元素,您可以使用指定从文档中提取哪些元素或属性的查询选项持久保存:
http://docs.marklogic.com/guide/rest-dev/appendixb#id_18313
您可能希望使用 JSON 或 XML 句柄而不是使用 SearchHandle 类来使用搜索响应。
希望对你有所帮助
【讨论】: