虽然对于信息工作者来说SharePoint 2010开箱即用的搜索界面已经非常直观并易用,但作为超级用户仍然可以创建属于自己的搜索体验。SharePoint Server 2010包括了许多与搜索相关的强大的Web部件,用于支持超级用户定制搜索体验,包括搜索最佳匹配,精简面板,搜索核心结果,相关查询等等。下图为标准的搜索类WebPart。
开发实例精选:可排序的搜索核心结果-sharepoint 2013">
IT Pros或Developers可以配置内置的搜索Web部件来定制搜索体验。作为开发人员,你也可以扩展这些WebPart,来改变搜索结果页上内置搜索WebPart的行为。只需要在现有基础上进行继承并扩展,无需创建新的WebPart。
此外,我们还可以在定制搜索WebPart时使用查询日志记录,以及随时通过查询对象模型访问搜索服务。
例子:扩展搜索核心结果Web部件
让我们用Visual Studio 2010创建一个新的搜索WebPart。本例中的WebPart继承自CoreResultsWebPart,并从一个自定义的源中显示数据。标准的搜索核心结果WebPart包括一个构造函数和两个方法,我们将在本例中对其进行修改。
第一步是新建一个WebPart类。创建一个新的WebPart项目并继承自CoreResultsWebPart类。覆写 CreateChildControls来添加界面所需的任何控件,然后覆写CreateDataSource。这是我们操作查询的入口。在覆写中,我们将创建一个稍后创建的自定义数据源类的实例。
class MSDNSample : CoreResultsWebPart
{
public MSDNSample()
{
//默认构造器:支持为了序列化所以必须存在
}
protected override void CreateChildControls()
{
base.CreateChildControls();
//在此处添加界面上用到的控件
}
protected override void CreateDataSource()
{
//base.CreateDataSource();
this.DataSource = new MyCoreResultsDataSource(this);
}
第二步是创建一个新类继承自CoreResultsDatasource类。在CreateDataSource的覆写中,会设置 DataSource属性为该类。在CoreResultsDataSource构造器中,创建一个稍后创建的自定义数据源视图类的实例。至此,无需再覆写其他任何内容了。
public class MyCoreResultsDataSource : CoreResultsDatasource
{
public MyCoreResultsDataSource(CoreResultsWebPart ParentWebpart)
: base(ParentWebpart)
{
//如果在这里我们需要引用该WebPart的属性或方法
//那么可以通过 ParentWebPart 参数获取
//创建将用于此数据源的视图
this.VIEw = new MyCoreResultsDataSourceView(this, "MyCoreResults");
}
}