Sharepoint 爬行器规则问题和解决方法






3.33/5 (2投票s)
SharePoint 爬虫规则在某些情况下不起作用,尤其是在排除数据时。
引言
您可能会在使用 SharePoint Server 爬虫规则时遇到一些问题。在某些情况下,它不能正常工作,尤其是在您定义包含数据的规则时。我将通过一个例子来解释这一点。
使用代码
您可以定义规则来包含或排除数据。如果您想排除一些特定数据,那没问题。例如,您有一个数据树如下所示:
http://moss:8080/News/
Http://moss:8080/Products/
http://moss:8080/Products/Computers/
以及许多其他…
在这种情况下,MOSS 不会爬取以 http://moss:8080/Products/computers/ URL 开头的数据。这没有问题。如果只是反过来呢?我的门户网站有数千个列表、文档、库和站点,我只想让 MOSS 爬取我想要的一些列表。在我的场景中,我希望 MOSS 仅爬取 Pages 文件夹下的文件。
http://moss:8080/Pages/*
http://moss:8080/News/Pages/*
http://moss:8080/Companies/Asia/Pages/*
…
但我不需要其他资源,例如:
http://moss:8080/Lists/*
http://moss:8080/companies/lists/* 以及其他列表和文档库。
如您所知,无法在内容源中定义这些类型的规则。让我们尝试使用爬虫规则。
在这种情况下,我们期望包含“/Pages/”的 URL 会被爬取,而其他 URL 不会被爬取。但它不起作用。我与 Microsoft 支持团队的人员交谈过,他们说这与 MOSS 搜索架构有关。我不知道这个目的是否有效,但有一个解决方法。
每个站点、列表和文档库都有自己的搜索可见性属性。
您可以根据需要设置搜索可见性,但如果您有超过 1000 个站点,这会有点麻烦。因此,您需要一些自定义开发来自动设置搜索可见性。
SPList 和 SPWeb 都有 NoCrawl 成员,您可以设置它。这里是 Windows 窗体应用程序的一部分。现在只需关注 "web.NoCrawl = false" 行。
private void SetCrawlVisibility(SPWeb web, bool visible, string url) { try { web.NoCrawl = false; web.Update(); if (visible) { this.Log("Include object SPWeb " + url + " in search results", false); } else { this.Log("Exclude object SPWeb " + url + " from search results", false); } } catch (Exception exception) { this.Log(exception.Message, true); } }
我发送了一个使用 Visual Studio 开发的 Windows 窗体项目,您只需要按照以下方式输入包含或排除的规则:
顺便说一下,请清除搜索管理中的所有规则。完成此操作后,开始爬取并检查结果。
祝您拥有愉快的 MOSS 体验!