3

我正在学习如何通过 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)有没有更好的方法来做到这一点?

谢谢!

4

1 回答 1

3

Dat 消音器:

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

<transform-results apply="raw"/>

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

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

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

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

于 2013-08-23T01:51:20.443 回答