marklogic - 检索 MarkLogic 9 中的所有文档计数有所不同

标签 marklogic marklogic-8 marklogic-9

我最近从 MarkLogic-8 升级到 MarkLogic-9,并且我在 MarkLogic-8 中有以下一组文档,

Collection - System, User
Document URI - /user.xml

Collection - System, Role
Document URI - /role.xml

Collection - System, Admin
Document URI - 1.   /systemadmin.xml
               2.   /accountadmin.xml

以下是我用来从集合中检索所有文档的示例 java 代码片段

String[] collections = {"System", "Admin"};
QueryManager queryMgr = client.newQueryManager();
SearchHandle resultsHandle = new SearchHandle();

StringQueryDefinition query = queryMgr.newStringDefinition();
query.setCollections(collections);
queryMgr.setPageLength(Long.parseLong(UIParam.PAGINATION_PAGE_LENGTH));
queryMgr.search(query, resultsHandle);

当我在 MarkLogic-8 上执行上述 java 代码片段时,我得到了 /systemadmin.xml 和 accountadmin.xml 结果,这是正确的结果,

但是现在当我针对 MarkLogic-9 执行上述代码时,我得到了所有文档 /user.xml、/role.xml、/systemadmin.xml、/accountadmin.xml 这是错误的结果。

<dependency>
  <groupId>com.marklogic</groupId>
  <artifactId>marklogic-client-api</artifactId>
  <version>4.1.0</version>
</dependency>

MarkLogic-9 的 Maven 依赖项

我很困惑为什么 MarkLogic-8 和 MarkLogic-9 结果之间存在差异。

请帮我解决这个问题。

最佳答案

MarkLogic 9 修复了一个错误,该错误将集合列表的语义从 AND 相关更改为 OR 相关:

http://docs.marklogic.com/guide/relnotes/chap4#id_76507

要在 Java API 中获取与 AND 相关的语义,您可以使用 StructuredQueryBuilder 在 CollectionQuery 数组上指定 AndQuery。用类似于以下草图的内容替换现有查询应该可行:

StructuredQueryBuilder qb = StructuredQueryBuilder();
StructuredQueryDefinition query = qb.and(qb.collection("System"), qb.collection("Admin"));
queryMgr.setPageLength(Long.parseLong(UIParam.PAGINATION_PAGE_LENGTH));
queryMgr.search(query, resultsHandle);

有关 collection() 查询生成器的更多信息,请参阅:

http://docs.marklogic.com/javadoc/client/com/marklogic/client/query/StructuredQueryBuilder.html#containerQuery-com.marklogic.client.query.StructuredQueryBuilder.ContainerIndex-com.marklogic.client.query.StructuredQueryDefinition-

希望有帮助,

关于marklogic - 检索 MarkLogic 9 中的所有文档计数有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52215927/

相关文章:

marklogic - 如何修复 MarkLogic "File too large"林合并错误?

centos - 从 CentOS 升级到 RHEL 时如何备份 marklogic 数据库

MarkLogic - 自定义休息 GET REST 服务的性能变化

xquery - 在XQuery Marklogic中如何动态排序?

marklogic - 克隆我的应用程序最方便的方法是什么?

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

马克逻辑 8 : Count documents per collection and/or directory

XQuery 基于 xml 结构创建 where 子句作为一种动态 where 子句

marklogic - 如何使用 xdmp :eval in Marklogic? 进行时间点查询

marklogic - 如何保证元素值的唯一性?