首页 文章

Sharepoint 2010:以编程方式将文档添加到大型库中

提问于
浏览
0

我们有一个系统,使用Web界面将文档上载到SharePoint库 . 我正在使用客户端API完成此操作 . 具体来说,我使用SaveBinaryDirect上传文档,之后使用CAML查询来检索文档,以便可以设置元数据列 . CAML查询基于FileLeafRef字段检索文档,该字段填充有上载文档的文件名 .

问题是SharePoint强制从任何查询返回最多5000个项目,因此一旦文档库增长到5000个项目,CAML查询将不再起作用 . (即使它只返回单个文档,显然需要扫描整个库)

我已经调查了索引列,但显然你不能索引FileLeafRef,它似乎是上传时立即填充文档名称的唯一字段 . 我通过将项目限制从5000增加到10000来推迟了问题,但是我们即将遇到这个新的限制,人们开始报告间歇性的性能问题 .

有没有办法通过客户端API上传文档并设置其元数据而不会遇到最大项目限制?

2 回答

  • 0

    也许你可以创建另一个字段(文本字段),它将是FileLeafRef的简单副本,然后索引这个新字段?

  • 0

    通过不依赖CAML来定位文件来解决问题 . 相反,我正在使用GetFileByServerRelativeUrl,它不受项目限制 . 文件对象有一个名为ListItemAllFields的方法,它允许您查询和设置元数据 .

    如果需要返回具有除文件名之外的标准的项,则上述方法将允许最初设置元数据,使得可以存储和索引满足查询所需的任何标准 .

    如果需要根据未编制索引或无法索引的条件查询大型列表,则解决方案似乎涉及使用ContentIterator对象以小批量吐出列表 . 但是这似乎不适用于客户端API,所以我不知道你应该如何以编程方式使用大型列表 .

相关问题