使用SiteData Webservice进行爬网时Sharepoint文档的唯一标识符
有人知道如何将“UniqueID”属性映射到托管属性,以便在高级搜索结果中显示它吗?当我尝试使用共享服务管理中的元数据属性映射链接创建新的托管属性时,此属性不可见使用SiteData Webservice进行爬网时Sharepoint文档的唯一标识符,sharepoint,moss,wss,uniqueidentifier,web-crawler,Sharepoint,Moss,Wss,Uniqueidentifier,Web Crawler,有人知道如何将“UniqueID”属性映射到托管属性,以便在高级搜索结果中显示它吗?当我尝试使用共享服务管理中的元数据属性映射链接创建新的托管属性时,此属性不可见 使用SiteData或Lists web服务,我可以看到“ows_UniqueId”属性,使用对象模型,我可以访问SPListItem.UniqueId属性-但我似乎找不到将其映射到已爬网/托管属性的方法。它应该已经被索引。您是否尝试过使用objectid?这显示为映射到SharePoint:objectid(文本)。它看起来最接近您
使用SiteData或Lists web服务,我可以看到“ows_UniqueId”属性,使用对象模型,我可以访问SPListItem.UniqueId属性-但我似乎找不到将其映射到已爬网/托管属性的方法。它应该已经被索引。您是否尝试过使用
objectid
?这显示为映射到SharePoint:objectid(文本)。它看起来最接近您的目标。这有点痛苦,可能不受支持,但以下是您需要做的事情,以使UniqueId成为一个爬网属性/映射属性,从而可以包含在高级搜索结果中
首先,您需要在内部更改要搜索的列表上的UniqueId字段,使其不再隐藏,并且可以由爬虫索引。以下是一些示例对象模型代码:
// this is the identifier for UniqueId
Guid g = new Guid("4b7403de8d9443e89f0f137a3e298126");
// we will need these for reflection in a bit
BindingFlags bf = BindingFlags.NonPublic | BindingFlags.Instance;
using (SPSite s = new SPSite("http://SharePoint/")) {
// grab the list that contains what you want indexed
// and the UniqueId field from that list
SPList l = s.RootWeb.Lists["Your Custom List/Library"];
SPField f = l.Fields[g];
// We need to call the private method SetFieldBoolValue
// to allow us to change the Hidden property to false
MethodInfo mi = f.GetType().GetMethod("SetFieldBoolValue", bf);
mi.Invoke(f, new object[] { "CanToggleHidden", true });
f.Hidden = false;
f.Update();
}
运行该代码后(以及在您希望涵盖的所有列表/库上),您需要在共享服务搜索管理中执行三个步骤:
- 执行完全爬网
- 完整爬网完成后,导航到已爬网的属性类别(通常在服务器上),并验证是否存在名为ows_UniqueId的属性。然后需要创建一个名为UniqueId的托管属性,该属性映射到ows_UniqueId
- 执行另一次完全爬网
- 打开web部件进行编辑
- 展开“结果查询选项”
- 修改所选列的XML以包含UniqueId的引用
- 修改数据视图属性的XSL,以包含一条语句来输出UniqueId
- 单击“确定”,必要时发布页面