marklogic - 使用 MarkLogic Java API,搜索和检索格式化的 XML 匹配属性、集合和内容

标签 marklogic

我有一个文档,其属性 userId:sricollection 为“sony”,并且 文档内容如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<songs>
   <song>
     <title>Against the Wind</title>
     <artist>Bob Seger</artist>
   <song>
   <song>
     <title>one love</title>
     <artist>Bob Marley</artist>
   <song>
   <song>
     <title>Beat it</title>
     <artist>Micheal Jackson</artist>
   <song>   
<songs>

我想按 artist 编写一个查询,其属性 userId 等于“XYZ”,集合名称等于“abc”,artist 等于“per”。最终结果应如下所示:

<song>
  <title>MNO</title>
</song>

最佳答案

您可以对数据进行建模以将每首歌曲存储为单独的文档吗?在 MarkLogic 中建模的一个最佳实践是使用文档作为关系数据库中的行的等效项,并使用集合作为表的等效项。

您可以将 userId 存储在文档中吗? MarkLogic 中建模的另一个最佳实践是使用信封模式(与 HTML 头和正文一样),以便元数据和数据都位于同一文档中。这样,查询就可以通过读取单个片段来获取元数据和数据(速度更快)。

如果您对模型进行建议的更改,则在 Java API 中使用 StructuredQueryBuilder 的查询将类似于以下代码:

QueryManager queryMgr = client.newQueryManager();
StructuredQueryBuilder qb = new StructuredQueryBuilder();
StructuredQueryDefinition querydef = qb.and(
    qb.collection("abc"),
    qb.value(element("userId"), "xyz"),
    qb.value(element("artist"), "pqr")
    );
SearchHandle resultsHandle = queryMgr.search(querydef, new SearchHandle());

要迭代结果,请参阅此示例:

https://github.com/marklogic/java-client-api/blob/master/src/main/java/com/marklogic/client/example/cookbook/StructuredSearch.java#L126

有关匹配集合的更多详细信息:

http://docs.marklogic.com/javadoc/client/com/marklogic/client/query/StructuredQueryBuilder.html#collection%28java.lang.String...%29

有关匹配值的更多详细信息:

http://docs.marklogic.com/javadoc/client/com/marklogic/client/query/StructuredQueryBuilder.html#value%28com.marklogic.client.query.StructuredQueryBuilder.TextIndex,%20java.lang.String...%29

如果必须匹配属性中的元数据,可以使用properties()构建器函数,但这不是最佳实践:

http://docs.marklogic.com/javadoc/client/com/marklogic/client/query/StructuredQueryBuilder.html#properties%28com.marklogic.client.query.StructuredQueryDefinition%29

希望有帮助,

关于marklogic - 使用 MarkLogic Java API,搜索和检索格式化的 XML 匹配属性、集合和内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30850248/

相关文章:

xml - Marklogic 中的 PDF 到 XML 转换

标记逻辑 : Pagination in search:search based on eleemnt node instead of document uri

marklogic - 计算数据库目录中的文档数

MarkLogic 重新索引问题

xml - 给定一系列XML路径,生成XML树结构

Marklogic如何循环每个节点

xquery - 如何导入多个 xsd 文件以在 xQuery Marklogic 中进行验证

marklogic - 无法使用 DHF 5.2.1 在应用服务器上部署到 SSL

java - 使用 Marklogic 的 Java API 和 JAXB 对文档进行列表/搜索/分页

rdf - 标记逻辑 7 : Semantic Search