我们有一个系统,使用Web界面将文档上载到SharePoint库。我是使用客户端API完成此任务的。具体来说,我使用SaveBinaryDirect上传文档,之后使用CAML查询来检索文档,以便可以设置元数据列。 CAML查询基于FileLeafRef字段检索文档,该字段填充了上载文档的文件名。
问题是SharePoint强制从任何查询返回最多5000个项目,因此一旦文档库增长到5000个项目,CAML查询将不再起作用。 (即使它只返回单个文档,但显然需要扫描整个库)
我已经调查了索引列,但显然您无法索引FileLeafRef,它似乎是上传时立即填充文档名称的唯一字段。 我已经通过将项目限制从5000增加到10000来推迟了问题,但是我们正要反对这个新的限制,并且人们开始报告间歇性的性能问题。
有没有办法通过客户端API上传文档并设置元数据而不会遇到最大项目限制?
答案 0 :(得分:0)
也许你可以创建另一个字段(文本字段),它是FileLeafRef的简单副本,然后将这个新字段编入索引?
答案 1 :(得分:0)
通过不依赖CAML来定位文件来解决问题。相反,我正在使用GetFileByServerRelativeUrl,它不受项目限制。文件对象有一个名为ListItemAllFields的方法,它允许您查询和设置元数据。
如果需要返回文件名以外的条件,上述方法将允许最初设置元数据,从而可以存储和索引满足查询所需的任何条件。
如果需要根据未编制索引的条件查询大型列表,或者无法编制索引,则解决方案似乎涉及使用ContentIterator对象以小批量吐出列表。但是这似乎不适用于客户端API,因此我不知道如何以编程方式处理大型列表。