SharePoint 中的搜索外接程序

了解搜索 SharePoint 外接程序以及如何创建自己的搜索加载项。可以将您创建的外接程序添加到 SharePoint 外接程序目录,以便可以在本地部署和Office 365中使用它们。 搜索外接程序仅处理存储在搜索索引中的数据,而不处理原始源文档。

SharePoint 外接程序是自包含功能,可扩展 SharePoint 网站的功能。 这些加载项通过集成 Web 和 SharePoint 的最佳功能来解决特定的业务和最终用户需求。 加载项可以包含各种 SharePoint 元素,例如列表、远程事件接收器、内容类型、工作流、工作流自定义活动、网站栏、模块、菜单项自定义操作、客户端 Web 部件和搜索配置。 有关详细信息,请参阅 SharePoint 加载项

搜索外接程序是使用搜索功能的 SharePoint 外接程序。 在搜索外接程序中,您可以使用 SharePoint 搜索 API 来查找内容。 根据在 外接程序清单中设置的权限类型,您可以在外接程序内容的内部或外部进行搜索。 此外,您还可以使用搜索外接程序将搜索配置从一个 SharePoint 安装分发到另一个安装。 搜索外接程序的核心设计取决于您所选的部署方法。 下节概括了可用选项及其优势。 有关详细信息,请参阅 选择用于开发和托管 SharePoint 外接程序的模式

部署您的搜索外接程序

有两种方法可用来部署您的搜索外接程序:

  1. SharePoint 托管 - 本地部署。 搜索外接程序托管在公司服务器上的公司网络内。 公司的管理员可以管理外接程序。 此方案在部署和支持方面提供了灵活性,因为管理员可以本地保留硬件和软件。

  2. 提供程序托管 - 任何 Web 服务器托管。 搜索外接程序由任何提供程序在客户的 SharePoint 服务器外部托管。

搜索外接程序开发环境

若要创建搜索加载项,请使用以下环境:

  • Microsoft Visual Studio 2012 或 Microsoft Visual Studio 2013 或 Visual Studio 2015

使用 Visual Studio 2013 及更高版本,可以在本地或 Office 365 中发布搜索加载项。 有关开发环境以及如何使用它们创建搜索加载项的详细信息,请参阅 为 SharePoint 设置常规开发环境

适用于搜索加载项的 API

您可以将 SharePoint 提供的大量与搜索相关的 API 用于搜索外接程序。下表列出了这些 API 及其类库的位置。

适用于搜索外接程序的 SharePoint API

API 名称 类库
.NET 客户端对象模型 (CSOM)
Microsoft.SharePoint.Client.Search.dll
Silverlight CSOM
Microsoft.SharePoint.Client.Search.Silverlight.dll
ECMAScript (JavaScript, JScript) 对象模型 (JSOM)
SP.search.js
搜索 REST API
http://server/_api/search/query

代码示例

下面是使用不同 API 的一些代码示例。 每个代码示例都将向 Search service 应用程序 (SSA) 发送一个包含了关键字"SharePoint"的简单 搜索 查询。

Client-side Object Model (CSOM)


using (ClientContext clientContext = new ClientContext("http://localhost"))
{
    KeywordQuery keywordQuery = new KeywordQuery(clientContext);
    keywordQuery.QueryText = "*";
    SearchExecutor searchExecutor = new SearchExecutor(clientContext);
    ClientResult<ResultTableCollection> results = 
        searchExecutor.ExecuteQuery(keywordQuery);
    clientContext.ExecuteQuery();
}

JavaScript Object Model (JSOM)


var keywordQuery = new
Microsoft.SharePoint.Client.Search.Query.KeywordQuery(context);
keywordQuery.set_queryText('SharePoint');
var searchExecutor = new Microsoft.SharePoint.Client.Search.Query.SearchExecutor(context);
results = searchExecutor.executeQuery(keywordQuery);
context.executeQueryAsync(onQuerySuccess, onQueryFail);

REST

HTTP GET 请求


http://mylocalhost/_api/search/query?querytext='SharePoint'

HTTP POST 请求

{
'__metadata' : {'type' : 'Microsoft.Office.Server.Search.REST.SearchRequest'},
'Querytext' : 'SharePoint'
}

搜索外接程序权限

搜索外接程序向 Search service 应用程序 (SSA) 发送查询请求,并且外接程序需要不同类型的权限才能正常运行。 您可以通过外接程序清单文件配置这些权限,该文件是每个 SharePoint 外接程序的一部分。 您可以使用文本编辑器直接修改外接程序清单文件,也可以使用 Visual Studio 或 Napa 进行修改,如下图所示。

图 1:在 Visual Studio 2015 中为搜索外接程序设置权限

使用 VS 搜索应用程序权限配置

图 2:在"Napa"Office 365 开发工具中为搜索外接程序设置权限

通过 Napa 搜索应用程序权限配置

SharePoint 外接程序具有其自己的标识并且与称为外接程序主体的安全主体关联。 与用户和组一样,外接程序主体拥有某些特定的权限和权利。 外接程序主体具有对外接程序 Web 的完全控制权限,因此它只需要对位于主机 Web 或外接程序 Web 之外的其他位置的 SharePoint 资源(例如网站集)的请求权限。 与其他 SharePoint 外接程序不同,搜索外接程序仅需要用户级别权限,我们称之为 QueryAsUserIgnoreAppPrincipal。 此权限允许您基于用户的权限查询搜索外接程序。 这意味着将基于用户的 ACL 返回搜索结果。

请求外接程序清单文件中的权限

外接程序清单文件采用 XML 格式并可以直接进行编辑。 若要获取权限,您可以编写一个请求,如以下示例所示:


<AppPermissionRequests>
  <AppPermissionRequest Scope="http://sharepoint/search" Right="QueryAsUserIgnoreAppPrincipal" />
</AppPermissionRequests>

另请参阅