【问题标题】:Listing/searching/paginating over documents using Marklogic's Java API and JAXB使用 Marklogic 的 Java API 和 JAXB 列出/搜索/分页文档
【发布时间】:2013-08-23 00:03:05
【问题描述】:

我正在学习如何通过 Java API 使用 Marklogic 6,现在我想了解如何在 Java 和 JAXB 中搜索/列出/分页文档。具体来说:

假设我有一组像这样的用户文档:

/user/joe453.xml
/user/karla47.xml
.
.
.
/user/sam.xml
/user/tom.xml

用户的定义有点像这样:

<user userId="aaabbb123" passwordHash="bcryptHash">
    <role id="USER"> <--- other role types here depending on the kind of user.
</user>

我知道如果我想通过userId 属性搜索特定用户,我可以进行基于键/值的搜索。然而:

1) 在最简单的情况下,我应该使用 Java API 的哪些功能来列出/分页所有这些用户?

2) 我知道我可以使用 XCC 做一个特别的 XQuery,但是我上次在 SQL 中使用硬编码查询字符串时确实吸取了教训。我可以看到 XML/Marklogic 的类似命运。

3) 有没有更好的方法来做到这一点?

谢谢!

【问题讨论】:

    标签: java search jaxb marklogic


    【解决方案1】:

    Dat 消音器:

    要让搜索返回整个文档,您可以设置查询选项以将整个文档作为 sn-p 返回:

    <transform-results apply="raw"/>
    

    然后,在客户端,您可以通过 JAXB 解组器传递由 JAXB 持久保存的搜索结果的内容,以混合 Java 对象。

    作为替代方案,Java API 包含 SearchCollector 示例,该示例返回一个多部分/混合有效负载,其中每个部分都是一个搜索结果文档。然后可以解组通过 JAXB 保存的文档。

    抛开细节不谈,一般策略是相当明智的——利用 MarkLogic 搜索,使用对象或主题的任何字段来获取感兴趣的持久对象。

    当然,主键仍然具有直接访问的价值。也就是说,如果对象具有与实体身份不可变对应的字段组合,则利用这些字段来制作文档 uri,并在搜索过度时使用它直接访问对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多