嗨,
我有一个自定义索引连接器,其实体通过AssociationNavigator方法关联。为了使搜索(SharePoint 2013)对关联实体进行爬网,我们需要将关联实体中的“DirectoryLink”属性或“AttachmentAccessor”属性设置为 这里提到: http://msdn.microsoft.com/en-us/library/gg294164(v=office.14).aspx
当我设置DirectoryLink属性时,搜索会抓取关联的实体(子实体)和父实体。
但是,当我将子实体设置为作为附件进行爬网时,使用AttachmentAccessor属性,爬网程序只会抓取Parent实体并忽略关联的实体,因此不会被索引。
这是自定义连接器的一些问题吗?就像 this帖子一样。如果更改为.net连接器,同样可以正常工作。
我通过将File实体下的DirectoryLink更改为AttachmentAccessor,对Microsoft的 sample进行了相同的测试。现在永远不会抓取文件,而是爬虫停在文件夹级别。
谢谢,
Nandini
答案 0 :(得分:1)
经过多一点挖掘,我有点想出了问题。比如说,我们采用Microsoft示例(http://code.msdn.microsoft.com/office/SharePoint-2013-MyFileConne-79d2ea26#content)。这里父实体是文件夹,关联的子实体是文件。文件夹充当包含文件的容器,因此他们使用DirectoryLink方法来抓取文件,在特定文件夹的AssociatedNavigation方法GetAllFiles中。但是,如果我将此属性更改为AttachmentAccessor,则在此方法中,搜索将永远不会调用GetAllFiles方法,并且只会在爬网文件夹后退出该进程。因此从未编入索引的文件。
问题似乎是父实体(文件夹)本身被抓取为关联(对于自身,“DirectoryLink”属性集),它获取其中的所有子文件夹,如果我尝试抓取关联实体(文件)与'AttachmentAccessor'属性,它不识别我想的子实体。
在我将父实体(文件夹)更改为IdEnumerator或Finder方法之后,可以将关联实体作为“AttachmentAccessor”进行爬网,这解决了我的问题。