0

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

问题在于,SharePoint 对从任何查询返回的最大限制为 5000 个项目,因此一旦文档库增长到 5000 个项目,CAML 查询将不再起作用。(尽管它只返回单个文档,但显然需要扫描整个库)

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

有没有办法通过客户端 API 上传文档并设置它们的元数据而不会超出最大项目限制?

4

2 回答 2

0

也许您可以创建另一个字段(文本字段)作为 FileLeafRef 的简单副本,然后为这个新字段编制索引?

于 2013-04-13T13:59:42.990 回答
0

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

如果需要返回具有文件名以外的条件的项目,上述方法将允许最初设置元数据,从而可以存储和索引满足查询所需的任何条件。

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

于 2013-04-17T14:48:42.323 回答