编程语言
首页 > 编程语言> > 使用Marklogic的Java API和JAXB列出/搜索/分页文档

使用Marklogic的Java API和JAXB列出/搜索/分页文档

作者:互联网

我正在学习如何通过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)有更好的方法吗?

谢谢!

解决方法:

Dat Silencer:

要使搜索返回整个文档,可以设置查询选项以将整个文档作为摘要返回:

<transform-results apply="raw"/>

然后,在客户端上,您可以将JAXB保留的搜索结果的内容通过JAXB反编组器传递,以混合Java对象.

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

除了细节之外,一般策略非常明智-利用MarkLogic搜索的优势,使用对象或主题的任何字段来获取持久的关注对象.

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

标签:marklogic,search,jaxb,java
来源: https://codeday.me/bug/20191122/2063120.html