查询和/或搜索SharePoint文档ID
我们启用了文档ID为的sharepoint 2010环境 给定(部分)文档ID,我们希望通过编程检索与该ID匹配的文档。问题似乎在于此列相当特殊,因为它可能需要特殊处理 使用SPSiteDataQuery,将_dlc_DocId字段作为viewfields的一部分进行提取可以正常工作。然而,将其作为where查询的一部分,永远不会导致获取任何文档 使用搜索API让我们一事无成 有没有人做到了这一点,或者对如何解决这个问题有什么建议查询和/或搜索SharePoint文档ID,sharepoint,sharepoint-2010,Sharepoint,Sharepoint 2010,我们启用了文档ID为的sharepoint 2010环境 给定(部分)文档ID,我们希望通过编程检索与该ID匹配的文档。问题似乎在于此列相当特殊,因为它可能需要特殊处理 使用SPSiteDataQuery,将_dlc_DocId字段作为viewfields的一部分进行提取可以正常工作。然而,将其作为where查询的一部分,永远不会导致获取任何文档 使用搜索API让我们一事无成 有没有人做到了这一点,或者对如何解决这个问题有什么建议 [Update]结果证明,我们被XML中的细微错误和错误的调试误
[Update]结果证明,我们被XML中的细微错误和错误的调试误解所愚弄。这些东西很好用。以防万一,没有人能从Sharepoint基础架构的深处提供灵巧的解决方案: 谷歌会怎么做 切片是,将其切成小方块,并将其转储到反向索引中 Solr和Lucene为此提供了一流的工具。其想法是将文档ID切成小块,并将文档的位置添加到该块的存储桶中 假设我们有一个Id为ABCD123的“非常好的文档”。您可以将其添加到桶中 ABCD,BCD1,CD12,D123 搜索部分ID(+日期、类型等其他数据,…)时,您(搜索引擎)创建存储桶的并集并应用附加约束 要实现这一点,您需要为sharepoint服务器编写一个spider,并编写一个例程,用于记录要索引的数据元素 在它的frnt中放置一个很好的REST接口(实际上SOLR已经有了这个接口),将它集成到主sharepoint服务器中,没有人需要知道它背后还有其他东西在运行
这些产品还可以增量更新索引,使其保持最新状态。以防没有人能从Sharepoint基础架构的深处提供灵巧的解决方案: 谷歌会怎么做 切片是,将其切成小方块,并将其转储到反向索引中 Solr和Lucene为此提供了一流的工具。其想法是将文档ID切成小块,并将文档的位置添加到该块的存储桶中 假设我们有一个Id为ABCD123的“非常好的文档”。您可以将其添加到桶中 ABCD,BCD1,CD12,D123 搜索部分ID(+日期、类型等其他数据,…)时,您(搜索引擎)创建存储桶的并集并应用附加约束 要实现这一点,您需要为sharepoint服务器编写一个spider,并编写一个例程,用于记录要索引的数据元素 在它的frnt中放置一个很好的REST接口(实际上SOLR已经有了这个接口),将它集成到主sharepoint服务器中,没有人需要知道它背后还有其他东西在运行
这些产品还可以增量更新索引,使其保持最新。您可以使用以下内容获取文档ID SPFile file=MethodToUploadFileToServer(web,文件路径); SPListItem=file.item;
字符串DocID=item.Properties[“\u-dlc\u-DocID”].ToString() 您可以使用以下命令获取文档ID SPFile file=MethodToUploadFileToServer(web,文件路径); SPListItem=file.item;
字符串DocID=item.Properties[“\u-dlc\u-DocID”].ToString() 我通常不会对这类事情做出贡献,因为比我更聪明的人总是在我之前到达那里,但由于这是一个没有正确答案的老问题,我想我会为那些找到这一页的人补充我的想法 我一直在努力解决这个问题,但经过一番探索,学习了一点Caml,我终于成功了。 我正在针对SharePoint 2010和Office365测试版使用SharePoint客户端对象模型 通过查看“所有列表项”查询开始您的查询: Microsoft.SharePoint.Client.CamlQuery.CreateAllItemsQuery().ViewXml
“\r\n\r\n\r\n”
在查询中插入一个子项
然后加上
MDXC2KE55ASN-3-80
将MDXC2KE55ASN-3-80替换为您在where中查找的文档ID
另外,不要忘记,您可能也想利用这些:
1
然后使用List.GetItems()方法返回ListItemCollection。我通常不会对这类事情做出贡献,因为比我更聪明的人总是在我之前到达那里,但由于这是一个没有正确答案的老问题,我想我会为找到这一页的人补充我的想法 我一直在努力解决这个问题,但经过一番探索,学习了一点Caml,我终于成功了。 我正在针对SharePoint 2010和Office365测试版使用SharePoint客户端对象模型 通过查看“所有列表项”查询开始您的查询: Microsoft.SharePoint.Client.CamlQuery.CreateAllItemsQuery().ViewXml
“\r\n\r\n\r\n”
在查询中插入一个子项
然后加上
MDXC2KE55ASN-3-80
将MDXC2KE55ASN-3-80替换为您在where中查找的文档ID
另外,不要忘记,您可能也想利用这些:
1
然后使用List.GetItems()方法返回ListItemCollection。您说得对,感谢您抽出时间发布您的答案。自从提出这个问题以来,我们发现它确实可以工作,这正是您描述它的方式(这段代码已经进入生产阶段很久了)。我们只是直接查询SharePoint对象模型,而不是通过webservice调用。你说得对,感谢你花时间发布你的答案。自从提出这个问题以来,我们发现它确实可以工作,这正是您描述它的方式(这段代码已经进入生产阶段很久了)。我们只是直接查询SharePoint对象模型,而不是通过webservice调用。