内容源通常被认为是一块区域(location),其中包含我们想要爬网或索引的资源。在MOSS中,默认提供了多种类型的区域:如SharePoint网站集,网站,共享文件夹,Exchange公共文件夹,通过BDC得到的数据等。
管理搜索和BDC所必需的引用
开发人员可以创建应用程序来通过编程方式处理所有我们在浏览器中所做的管理操作。下面的代码必须在MOSS服务器上运行,需要引用的dll有:Microsoft.SharePoint.dll, Microsoft.Office.Server.dll, Microsoft.Office.Server.Search.dll, Microsoft.SharePoint.Portal.dll, 和 System.Web.dll。下面是使用到的命名空间。
// -- Namespaces used for the search administration classes
using Microsoft.Office.Server;
using Microsoft.Office.Server.Administration;
using Microsoft.Office.Server.Search;
using Microsoft.Office.Server.Search.Administration;
// -- Namespaces used to access the Business Data Catalog
using Microsoft.Office.Server.ApplicationRegistry.MetadataModel;
using Microsoft.Office.Server.ApplicationRegistry.Infrastructure;
using Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db;
连接到SSP和搜索上下文
在我们操作各种类型的内容源之前,先要获取当前SSP和搜索的上下文。下面的代码展示了该过程。本例假设共享服务的名称为“SharedServices1”。
private ServerContext serverctx = null;
private SearchContext searchctx = null;
private void Form1_Load(object sender, EventArgs e)
{
serverctx = ServerContext.GetContext("SharedServices1");
searchctx = SearchContext.GetContext(serverctx);
}
列出所有已有的内容源
我们可以通过创建Content类的实例来获取到现有内容源的列表。在其构造器中需要传递一个SearchContext的引用作为参数。接着,我们就可以通过循环得到所有的内容源。每个内容源都有一个或多个起始地址。
Content content = new Content(this.searchctx);
foreach (ContentSource contentsource in content.ContentSources)
{
TreeNode node = treeViewContentSources.Nodes.Add(contentsource.Name);
node.Tag = contentsource;
foreach (object startaddress in contentsource.StartAddresses)
{
node.Nodes.Add(startaddress.ToString());
}
}