65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.33/5 (2投票s)

2008年10月14日

CPOL

2分钟阅读

viewsIcon

32889

downloadIcon

134

SharePoint 爬虫规则在某些情况下不起作用,尤其是在排除数据时。

引言

您可能会在使用 SharePoint Server 爬虫规则时遇到一些问题。在某些情况下,它不能正常工作,尤其是在您定义包含数据的规则时。我将通过一个例子来解释这一点。

使用代码

您可以定义规则来包含或排除数据。如果您想排除一些特定数据,那没问题。例如,您有一个数据树如下所示:

http://moss:8080/News/
Http://moss:8080/Products/
http://moss:8080/Products/Computers/
以及许多其他…

image001.png

在这种情况下,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/* 以及其他列表和文档库。

如您所知,无法在内容源中定义这些类型的规则。让我们尝试使用爬虫规则。

image003.png

在这种情况下,我们期望包含“/Pages/”的 URL 会被爬取,而其他 URL 不会被爬取。但它不起作用。我与 Microsoft 支持团队的人员交谈过,他们说这与 MOSS 搜索架构有关。我不知道这个目的是否有效,但有一个解决方法。

每个站点、列表和文档库都有自己的搜索可见性属性。

image005.png

您可以根据需要设置搜索可见性,但如果您有超过 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 窗体项目,您只需要按照以下方式输入包含或排除的规则:

image007.png

顺便说一下,请清除搜索管理中的所有规则。完成此操作后,开始爬取并检查结果。


祝您拥有愉快的 MOSS 体验!

© . All rights reserved.