我想从一个柜子中检索所有文件(称为“Wombat Insurance Co”)。目前我正在使用此DQL查询:
select r_object_id, object_name from dm_document(all)
where folder('/Wombat Insurance Co', descend);
这是好的,但它只返回最多100个结果。如果机柜中有5000个文件,我想获得全部5000个结果。有没有办法使用分页来获得所有结果?
我试过这个问题:
select r_object_id, object_name from dm_document(all)
where folder('/Wombat Insurance Co', descend)
ENABLE (RETURN_RANGE 0 100 'r_object_id DESC');
意图以100个文件为增量获得结果,但是当我尝试执行它时,此查询会给我一个错误。错误说明了这一点:
com.emc.documentum.fs.services.core.CoreServiceException: "QUERY" action failed.
java.lang.Exception: [DM_QUERY2_E_UNRECOGNIZED_HINT]error:
"RETURN_RANGE is an unknown hint or is being used incorrectly."
我认为我正在使用RETURN_RANGE提示,但也许我不是。任何帮助将不胜感激!
我也尝试使用提示ENABLE(FETCH_ALL_RESULTS 0)
,但这仍然只返回最多100个结果。
为了澄清,我的问题是:如何从机柜中获取所有文件?
答案 0 :(得分:2)
String queryStr = "select r_object_id, object_name from dm_document(all)
where folder('/Wombat Insurance Co', descend);"
PassthroughQuery query = new PassthroughQuery();
query.setQueryString(queryStr);
query.addRepository(repositoryStr);
QueryExecution queryEx = new QueryExecution();
queryEx.setCacheStrategyType(CacheStrategyType.DEFAULT_CACHE_STRATEGY);
queryEx.setStartingIndex(currentIndex); // set start index here
OperationOptions operationOptions = null;
// will return 100 results starting from currentIndex
QueryResult queryResult = queryService.execute(query, queryEx, operationOptions);
您只需增加currentIndex
变量即可获得所有结果。
答案 1 :(得分:2)
您已经接受了使用DFS的答案。
由于您正在玩DFC,这些信息可能会对您有所帮助。
<强> DFS:强>
如果您使用的是DFS,则必须了解可以使用DFS使用的并发会话数。 我认为它是100或150。
<强> DFC 强>
实际上你可以通过DFC获取一个限制(我不确定DFS)。
转到DFC应用程序(webtop或da或任何其他内容)并检查dfc.properties文件。
# Maximum number of results to retrieve by a query search.
# min value: 1, max value: 10000000
#
dfc.search.max_results = 100
# Maximum number of results to retrieve per source by a query search.
# min value: 1, max value: 10000000
#
dfc.search.max_results_per_source = 400
dfc.properties.full
或类似文件,您可以根据您的系统验证这些值。
我说的是ContentServer端,而不是客户端dfc.properties文件。
如果您对DFC使用ENABLE (RETURN_TOP)
提示,则有两种方法可以从ContentServer获取结果。
您必须使用server.ini文件中的参数return_top_results_row_based
进行配置。
对于documentum服务器端的所有这些更改,而不是对于DFC / DQL客户端。
答案 2 :(得分:0)
我已经使用DFC API(使用Java)一段时间但我不记得查询的任何默认限制,IIRC我们总是得到所有文件,没有任何限制。实际上(根据我的说明),我们必须明确设置限制,例如enable (return_top 2000)
。 (据我所知,语法可能取决于EMC Documentum背后的DBMS。)
猜一猜:查看您的dfc.properties
文件。