1

你好, 

我有一个自定义索引连接器,其中包含通过 AssociationNavigator 方法关联的实体。为了让搜索(SharePoint 2013)抓取关联实体,我们需要在关联实体中设置“DirectoryLink”属性或“AttachmentAccessor”属性,如下所述: http://msdn.microsoft.com/en-us/library/gg294164(v=office.14).aspx

当我设置 DirectoryLink 属性时,搜索会同时抓取关联实体(子实体)和父实体。

但是,当我使用 AttachmentAccessor 属性将子实体设置为作为附件进行爬网时,爬网程序只会爬网父实体并忽略关联的实体,因此不会被索引。 

这是自定义连接器的一些问题吗?就像在 这篇文章中一样。如果更改为 .net 连接器,同样可以正常工作。

我通过将文件实体下的 DirectoryLink 更改为 AttachmentAccessor 对Microsoft 的 示例进行了相同的测试。现在永远不会爬取文件,而是爬虫在文件夹级别停止。

谢谢,

南迪尼


4

1 回答 1

1

经过一番挖掘,我有点想通了。例如,我们采用 Microsoft 示例 ( http://code.msdn.microsoft.com/office/SharePoint-2013-MyFileConne-79d2ea26#content )。这里父实体是文件夹,关联的子实体是文件。文件夹充当包含文件的容器,因此他们使用 DirectoryLink 方法在特定文件夹的 AssociatedNavigation 方法 GetAllFiles 中抓取文件。但是,如果我将此属性更改为 AttachmentAccessor,在此方法中,Search 将永远不会调用 GetAllFiles 方法,只会在爬取文件夹后退出该过程。因此文件从未被索引。

问题似乎是父实体(文件夹)本身作为关联被爬网(对于自身,具有'DirectoryLink'属性集),它获取其中的所有子文件夹,如果我尝试爬网关联实体(文件)具有 'AttachmentAccessor' 属性,它无法识别我想的子实体。

在我将父实体(文件夹)更改为 IdEnumerator 或 Finder 方法后,可以将关联的实体作为“AttachmentAccessor”进行爬网,这解决了我的问题。

于 2013-09-05T08:03:45.060 回答