查询和/或搜索SharePoint文档ID

时间:2010-06-04 07:08:48

标签: sharepoint sharepoint-2010

我们拥有启用了文档ID的sharepoint 2010环境。

给定(部分)Doc ID,我们希望以编程方式检索与该ID匹配的文档。问题似乎是这个专栏很特别,因为它可能需要特殊处理。

使用SPSiteDataQuery,将_dlc_DocId字段作为 viewfields 的一部分提取工作正常。但是,将其作为的一部分包含在查询中,永远不会导致获取任何文档。

使用搜索API让我们无处可去。

是否有人撤消此消息,或有任何关于如何解决此问题的建议?

[更新] 原来我们被XML中的细微错误和糟糕的调试错误解释所迷惑。这个东西工作正常。

3 个答案:

答案 0 :(得分:4)

我通常不会为这些事情做出贡献,因为比我更聪明的人总是在我之前到达那里,但由于这是一个没有正确答案的老人,我想我会为找到这个页面的人添加我的想法

我正在努力解决这个问题,但经过一番挖掘并学习了一点Caml后,我得到了这个工作。 我正在使用针对SharePoint 2010和Office365测试版的SharePoint客户端对象模型。

通过查看所有列表项查询来开始查询:

Microsoft.SharePoint.Client.CamlQuery.CreateAllItemsQuery()。ViewXml

"<View Scope=\"RecursiveAll\">\r\n <Query>\r\n </Query>\r\n</View>"

在查询中粘贴一个孩子

然后加入

<Eq><FieldRef Name="_dlc_DocId" /><Value Type="Text">MDXC2KE55ASN-3-80</Value></Eq>

将MDXC2KE55ASN-3-80替换为您在其中寻找的文档ID。

另外请不要忘记您也可能想要使用这些:

<ViewFields><FieldRef Name="_dlc_DocId" /></ViewFields>

<RowLimit>1</RowLimit>

然后使用List.GetItems()方法返回ListItemCollection。

答案 1 :(得分:0)

以防万一没有人从Sharepoint基础架构深处获得灵活的解决方案:

Google会做什么?

Slice is,Dice it并将其转储到反向索引中。

Solr和Lucene为此提供了至高无上的工具。我们的想法是将DocId切成小块,并将文档的位置添加到该块的桶中。

说我们拥有Id ABCD123的“真正优秀的文档”。您可以将其添加到存储桶

ABCD,BCD1,CD12,D123

当搜索部分ID(+其他数据,如日期,类型......)时,您(以及搜索引擎)会创建存储桶的并集+应用附加约束。

要实现这一点,您需要为sharepoint服务器编写一个蜘蛛,并编写一个例程,用于记录要编制索引的数据元素。

在其中放置一个漂亮的REST接口(实际上SOLR已经有了),将它集成到主sharepoint服务器中,没有人需要知道其后面还有其他东西在运行。

这些产品还可以逐步更新索引,因此可以保持最新状态。

答案 2 :(得分:0)

您可以使用以下内容获取文档ID。

SPFile file = MethodToUploadFileToServer(web,filepath); SPListItem item = file.Item; string DocID = item.Properties [“_ dlc_DocId”]。ToString();