配置SharePoint Server 2010爬网大小写敏感的知识库

介绍

许多知识库都是大小写敏感的。举例说明,对于大小写敏感的知识库中的链接:

http://myhost/CaseSensitivePage.htm

http://myhost/casesensitivepage.htm

代表不同的网页。对于这样的库进行爬网建索引时,也要保持其链接的大小写的状态 ,以保证可以有效的访问到其中的内容。类似这样的知识库的例子有:

-部署在Apache服务器上的网站

-Linux上的文件共享

-业务数据目录

-等等

默认情况下,SharePoint搜索蜘蛛程序会使用标准化的流程处理每个发现的链接,并将其全部转换为小写。也就是说,正常状态下不允许对大小写敏感的知识库进行爬网。SharePoint Server 2007 SP1里对大小写敏感的知识库的爬网提供了有限的支持,允许管理员设置一个注册表键值:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\12.0\Search\Applications\<GUID>\Gather\Portal_Content\CaseSensitiveURLs。

当设置了此注册表项后,可以确保所有的爬网操作都区分大小写。有关这项的更多细节,可以参考这篇识库文章。 

SharePoint Server 2010中的解决方案

SharePoint Server 2010进一步扩展了这一功能,提供了管理上的更多的灵活性。现在我们能够明确地指定具体的知识库/主机/链接,需要以区分大小写的方式爬网其中的链接。这是通过创建区分大小写的爬网规则 来实现的。全局的大小写敏感标志可以通过对象模型和PowerShell(后面的部分会详细介绍)进行设置。 

大小写敏感规则 

SharePoint Server 2010扩展了爬网规则,主要增加两项有用的功能:正则表达式和区分大小写。 爬网规则中使用正则表达式的详细情况我们会在单独的博文中进行介绍,现在我们先把注意力放在区分大小写这一项上。爬网规则可以设置为区分大小写,这样符合该爬网规则的链接就会在保留大小写的情况下进行保存。

通过用户界面创建大小写敏感的爬网规则 

通过在爬网规则用户界面上勾选新的“区分大小写”复选框,就可以创建一条大小写敏感的爬网规则。 下面的截图显示了区分大小写的复选框。

通过PowerShell创建大小写敏感的爬网规则

区分大小写的爬网规则也可以使用PowerShell创建。下面的脚本为一个名为“mycasesensitivehost”的主机创建了一条区分大小写的爬网规则:

#获取搜索应用程序对象
$app = Get-SPEnterprisesearchServiceApplication "<SSA 名称>”
#创建一条“包含”爬网规则
$rule = New-SPEnterpriseSearchCrawlRule -SearchApplication $app -Path http://mycasesensitivehost/*” -Type 0
#设置URL区分大小写为true
$rule.CaseSensitiveURL $true
#更新该条规则保存修改
$rule.Update() 

它是如何工作的?

如果管理员想要使某个特定的库(例如:http://mycasesensitivehost/)被爬网时区分大小写,则须执行以下三个步骤:

1、创建一条匹配相应库中的链接的爬网规则:这里是http://mycasesensitivehost/*

2、选中“区分大小写”复选框。

3、创建内容源:抓取以该知识库的起始地址( 这里是http://mycasesensitivehost/StartPage.htm),并启动完全爬网。爬网蜘蛛需要进行一次完全爬网才能使我们应用的大小写敏感的爬网规则生效。

爬网蜘蛛默认会将发现的链接都转换成小写,所以任何不匹配我们的爬网规则的链接都会被转换为小写。

它是如何出现在搜索结果里的?

如果配置为区分大小写,爬网蜘蛛会把链接的大小写情况也带到搜索结果中。这也就意味着大小写不同会作为不同的文档来处理——比如下面的例子。

它是如何出现在爬网日志里的?

大小写敏感的爬网日志如下图:

一般的爬网日志如下图:

注意到,mycasesensitivehost下的链接的大小写被保存了下来,而mynormalhost下的链接都是小写。

通过对象模型或PowerShell设置全局大小写敏感

搜索应用程序对象公开了一个属性:“CaseSensitiveCrawling”,是可get和可set的。通过SearchApplication.GetProperty获取当前值,通过SearchApplication.SetProperty设置一个新值。下面通过PowerShell脚本操作该属性:

# 获取搜索应用程序对象
PS D:\
> $searchApp = Get-SPEnterpriseSearchServiceApplication -local
# 检查属性值;默认是False
PS D:\
> $searchApp.GetProperty("CaseSensitiveCrawling")
False
# 设置该属性为true
PS D:\> $searchApp.SetProperty("CaseSensitiveCrawling"1)
# 检查属性是否被设置
PS D:\> $searchApp.GetProperty("CaseSensitiveCrawling")
True

 

当设置了“CaseSensitiveCrawling”属性后,爬网蜘蛛会对指定的搜索应用程序里所有爬到的链接都区分大小写。

我希望本文能够帮助你了解如何在SharePoint Server 2010中配置爬网大小写敏感。同时也欢迎提出任何问题或意见。

 

参考资料

Crawling case sensitive repositories using SharePoint Server 2010 

posted @ 2010-07-22 17:19  Sunmoonfire  阅读(2390)  评论(2编辑  收藏  举报