检索所有文档计数在 MarkLogic 9 中有所不同
Retrieve All Document Count Varies in 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() 查询生成器的详细信息,请参阅:
希望对您有所帮助,
我最近从 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() 查询生成器的详细信息,请参阅:
希望对您有所帮助,