SharePoint の検索アドインSearch add-ins in SharePoint

SharePoint アドインの検索と独自の検索アドインを作成する方法について説明します。作成するアドインは SharePoint アドイン カタログに追加して、オンプレミスの展開と Office 365 の両方で使用できます。検索アドインは、元のソース文書ではなく、検索インデックスに格納されたデータにのみ有効です。SharePoint アドインは、SharePoint Web サイトの機能を拡張する自己完結型のソフトウェアです。これらのアドインは、最高の Web コンテンツと SharePoint を統合することで、特定のビジネスやエンドユーザーのニーズを解決します。アドインには、リスト、リモート イベント レシーバー、コンテンツ タイプ、ワークフロー、ワークフロー カスタム アクティビティ、サイト コラム、モジュール、メニュー項目のカスタム アクション、クライアント Web パーツ、検索構成など、さまざまな SharePoint 要素が含まれています。詳細については、「SharePoint アドイン」を参照してください。Learn about search SharePoint Add-ins and how you can create your own search add-ins. The add-ins you create can be added to the SharePoint add-ins catalog so that they can be used in both on-premises deployment and Office 365. Search add-ins only work with data that is stored in the search index and not with the original source documents. SharePoint Add-ins are self-contained pieces of functionality that extend the capabilities of a SharePoint website. These add-ins solve specific business and end-user needs by integrating the best of the web and SharePoint. An add-in can contain various SharePoint elements like Lists, Remote Event Receivers, Content Types, Workflows, Workflow Custom Activities, Site Columns, Modules, Menu Item Custom Actions, Client Web Parts, and Search Configurations. For more information, see SharePoint Add-ins.

検索アドインとは、検索機能を使用する SharePoint アドイン アドインです。検索アドインでは、SharePoint 検索 API を使ってコンテンツを検索します。 アドイン マニフェストで設定されている権限のタイプに応じて、アドインのコンテンツの内側または外側のいずれかを検索できます。また、1 つの SharePoint インストール環境から別のインストール環境に、検索アドインを使用して検索構成を配布することもできます。 検索アドインのコア設計は、選択した展開方法によって決まります。次のセクションでは、使用可能な選択肢とそのメリットを要約します。詳細については、「 SharePoint アドインを開発およびホスティングするためのパターンを選択する」を参照してください。A search add-in is an SharePoint Add-in that uses search functionality. In a search add-in, you can use the SharePoint Search API to locate content. Depending on the type of permissions set up in your add-in manifest, you can search either inside or outside the contents of the add-in. In addition, you can also use a search add-in to distribute search configurations from one SharePoint installation to another. The core design of a search add-in depends on the deployment method that you choose. The following section summarizes the available options and their benefits. For more information, see Choose patterns for developing and hosting your SharePoint Add-in

検索アドインを展開するDeploy your search add-ins

検索アドインの展開には、次の 2 つの方法があります。There are two ways to deploy your search add-in:

  1. SharePoint ホスト型 - オンプレミスの展開。検索アドインは会社のサーバーの社内ネットワークの内側でホストされます。会社の管理者がこのアドインを管理します。このシナリオでは、ハードウェアとソフトウェアが管理者によってローカルに保守されるため、展開の柔軟性とサポートが実現します。SharePoint hosted - On-premises deployment. The search add-in is hosted inside the corporate network on the company's servers. The company's administrators manage the add-in. This scenario offers flexibility in deployment and support because the hardware and software is maintained locally by the administrators.

  2. プロバイダーホスト型 - ホストしている任意の Web サーバー。検索アドインは、顧客の SharePoint サーバーの外部にある任意のプロバイダーによってホストされます。Provider hosted - Any web server hosting. The search add-in is hosted by any provider, outside of the customer's SharePoint server.

検索のアドインの開発環境Search add-in development environment

検索アドインを作成するには、以下の環境を使用します。To create a search add-in, use following environment:

  • Microsoft Visual Studio 2012、Microsoft Visual Studio 2013 または Visual Studio 2015Microsoft Visual Studio 2012 or Microsoft Visual Studio 2013 or Visual Studio 2015

Visual Studio 2013 以降では、オンプレミスと Office 365 の両方で検索アドインを公開できます。With Visual Studio 2013 and later, you can publish your search add-ins to both on-premises or in Office 365. 2 つの開発環境と開発環境を使った検索アドインの作成方法の詳細については、「SharePoint の一般的な開発環境を設定する」を参照してください。For more information about the development environments and how to use them to create search add-ins, see Set up a general development environment for SharePoint.

検索アドイン用の APIAPIs for search add-ins

検索アドイン用に SharePoint が提供する検索関連の広い範囲にわたる API を使用できます。次の表にこのような API とそのクラス ライブラリの場所を示します。You can use the wide range of search-related APIs that SharePoint offers for search add-ins. The following table lists these APIs and the location of their class libraries.

検索アドイン用の SharePoint APISharePoint APIs for Search add-ins

API 名API name クラス ライブラリClass library
.NET クライアント オブジェクト モデル (CSOM).NET client object model (CSOM)
Microsoft.SharePoint.Client.Search.dllMicrosoft.SharePoint.Client.Search.dll
Silverlight CSOMSilverlight CSOM
Microsoft.SharePoint.Client.Search.Silverlight.dllMicrosoft.SharePoint.Client.Search.Silverlight.dll
ECMAScript (JavaScript, JScript) オブジェクト モデル (JSOM)ECMAScript (JavaScript, JScript) object model (JSOM)
SP.search.jsSP.search.js
REST API の検索Search REST API
http://server/_api/search/query

コード サンプルCode examples

ここではさまざまな API を使用したコード サンプルをいくつか示します。各コード サンプルでは、キーワード "SharePoint" を含むシンプルな 検索 クエリが Search Service アプリケーション (SSA) に送信されます。Here are some code examples using the different APIs. Each code example sends a simple Search query that contains the keyword "SharePoint" to the Search service application (SSA).

Client-side Object Model (CSOM)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)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);

RESTREST

HTTP GET リクエストHTTP GET request


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

HTTP POST リクエストHTTP POST request

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

検索アドインの権限Search add-in permissions

検索アドインは、クエリ リクエストを Search Service アプリケーション (SSA) に送信し、適切に機能するため、さまざまなタイプの権限を要求します。これらの権限は、アドインのマニフェスト ファイルを使って構成できます。マニフェスト ファイルは、各 SharePoint アドインに含まれています。テキスト エディターを使ってアドインのマニフェスト ファイルを直接変更できます。また次図に示すように、Visual Studio や Napa を使って変更することもできます。Search add-ins send query requests to the Search service application (SSA), and the add-ins require different types of permissions to function correctly. You can configure these permissions via the add-in manifest file, which is a part of each SharePoint add-in. You can modify the add-in manifest file directly with a text editor, or you can modify it with Visual Studio or Napa, as shown in the following figures.

図 1: Visual Studio 2015 での検索アドインの権限の設定Figure 1: Setting up permissions for search add-ins in Visual Studio 2015

VS による検索アプリのアクセス許可構成

図 2: "Napa" Office 365 開発ツールでの検索アドインの権限の設定Figure 2: Setting up permissions for search add-ins in "Napa" Office 365 Development Tools

Napa による検索アプリのアクセス許可構成

SharePoint アドインは独自の ID を持ち、アドイン プリンシパルと呼ばれるセキュリティ プリンシパルに関連付けられています。ユーザーやグループと同じように、アドイン プリンシパルには一定のアクセス許可と権限があります。アドイン プリンシパルはアドイン Web に対するフル コントロール権限があるため、必要なのは、ホスト Web や、アドイン Web の外部の場所 (サイト コレクションなど) にある SharePoint リソースへのアクセス許可を要求することだけです。他の SharePoint アドイン とは異なり、検索アドインには QueryAsUserIgnoreAppPrincipal と呼ばれるユーザーレベルの権限だけが必要となります。この権限があれば、ユーザーの権限に基づいて検索アドインをクエリできます。つまり、ユーザーの ACL に基づいて検索結果が返されます。An SharePoint Add-in has its own identity and is associated with a security principal, called an add-in principal. Like users and groups, an add-in principal has certain permissions and rights. The add-in principal has full control rights to the add-in web, so it only needs to request permissions to SharePoint resources in the host web or other locations outside the add-in web, such as site collections. Unlike other SharePoint Add-ins, a search add-in requires only user-level permissions, known as QueryAsUserIgnoreAppPrincipal. This permission lets you query the search add-in based on the user's permissions. This means that search results will be returned based on the user's ACLs.

アドインのマニフェスト ファイルに対するアクセス許可の要求Request permissions in the add-in manifest file

アドインのマニフェスト ファイルは XML 形式であり、直接編集できます。アクセス許可を取得するには、次の例のような要求を作成します。The add-in manifest file is in XML format and can be edited directly. To get permissions, you write a request, as shown in the following example:


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

関連項目See also