使用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