SharePoint 用の検索ソリューション

SharePoint での検索は、単一のエンタープライズ検索プラットフォームで、構成および展開の容易さを FAST Search Server のスケーラビリティおよび拡張性と同時に実現しました。

SharePoint には、さまざまなシナリオに合わせて検索をカスタマイズするのに役立つ、検索プラットフォームの共通のパターンが含まれます。 次に例を示します。

  • 動画検索会話検索が、設定なしですぐに使用できる バーティカル検索として含まれています。
  • トピック ページ検索によるコンテンツによって、Web コンテンツ管理機能と検索型サイトやナレッジ マネージメント サイトなどのシナリオが強化されます。
  • マイ タスクによってプロジェクト タスクがまとめられ、複数のサイトで割り当てられたタスクをユーザーが 1 つの場所 (OneDrive for Business サイト) から追跡できるようになります。

SharePoint 検索アーキテクチャ

SharePoint の検索アーキテクチャには、連携して動作するコンポーネントとデータベースが含まれます。

SharePoint 2013 の検索コンポーネント

コンポーネント 説明
クロール プロパティとメタデータを収集するためにコンテンツ ソースをクロールし、その情報をコンテンツ処理コンポーネントに送信します。
コンテンツ処理 クロールされたアイテムを変換して、インデックス コンポーネントに送ります。
このコンポーネントは、クロールされたプロパティの管理プロパティへのマップも行います。
分析処理 検索分析と利用状況分析を実行します。
インデックス コンテンツ処理コンポーネントから処理済みのアイテムを受け取り、それを検索インデックスに書き込みます。
また、このコンポーネントは、受信クエリを処理し、検索インデックスから情報を取得して、結果セットをクエリ処理コンポーネントに返送します。
クエリ処理 受信クエリを分析します。 これは、精度、再現性、関連性の最適化に役立ちます。
クエリはインデックス コンポーネントに送られ、インデックス コンポーネントからはクエリの検索結果のセットが返されます。
検索管理 検索用のシステム処理を実行し、検索コンポーネントの新しいインスタンスの追加と初期化を行います。

SharePoint の検索データベース

データベース 説明
クロール ドキュメントや URL などのクロールされたアイテムに関する追跡情報と履歴情報を格納します。
また、最終クロール時刻、最終クロール ID、最終クロール時の更新の種類 (追加、更新、削除) などの情報も格納します。
リンク コンテンツ処理コンポーネントによって抽出された未処理の情報および検索クリックに関する情報を格納します。
分析処理コンポーネントはこの情報を分析します。
分析レポート 使用状況分析の結果を格納します。
検索管理 検索構成データを格納します。

クロールとコンテンツの処理

クロール プロセスは、コンテンツのさまざまなソース (HTTP、ファイル共有、SharePoint など) から開始されます。 インデックスに追加するコンテンツの場合、クローラーは、コンテンツ ソースに接続してソース内のコンテンツ アイテムにアクセスする方法をクローラーに示すコネクタを使用します。 クローラーがコンテンツ アイテムを検出すると、該当する形式ハンドラーを使用してコンテンツを解析します。

コンテンツを取得した後、クロール コンポーネントはクロールされたアイテムをコンテンツ処理コンポーネントに渡します。これにより、アイテムが処理され、インデックス コンポーネントに送信されます。 これには、ドキュメントの解析、クロールされたプロパティの関連付けられた管理プロパティへのマッピング、言語検出やエンティティ抽出などの言語処理が含まれます。 また、コンテンツ処理コンポーネントは、リンクと URL に関する情報をリンク データベースに書き込みます。

クエリ処理

クエリ処理コンポーネントは、検索クエリを分析および処理して、単語区切りやステミングなどの言語処理を実行するなど、精度、再現率、関連性を最適化します。 その後、処理されたクエリがインデックス コンポーネントに送信され、処理されたクエリに基づいて結果セットがクエリ処理コンポーネントに返されます。これにより、その結果セットが処理されます。

検索分析

SharePoint は、コンテンツ自体 (検索分析) とユーザーがコンテンツとやりとりする方法 (利用状況分析) の両方を分析し、この情報を活用して検索を向上させます。

検索分析は、リンク、アイテムがクリックされた回数、アンカー テキスト、ユーザーに関連するデータ、メタデータなどの情報をリンク データベースから抽出します。 検索分析が関連性の判別の基盤となります。

一方、使用状況分析は、イベント ストアを経由してフロント エンドから受信した使用状況のログ情報を分析します。 使用状況分析は、使用状況と統計のレポートの基盤となります。

分析の結果は、検索インデックスのアイテムに追加されます。 さらに、使用状況分析の結果は、分析レポート データベースに格納されます。

検索機能をカスタマイズするための構成要素

SharePoint および SharePoint Online の検索には、新機能と検索機能をカスタマイズできる機能強化が含まれています。 大半の機能強化では、コードを記述する必要はありません。 SharePoint 検索には、カスタマイズするためにコードを記述しなければならない場合、またはアドインに SharePoint 外部で SharePoint の検索結果にアクセスさせる場合に役立つ CSOM および REST API が含まれます。

新しい機能と機能強化には、以下が含まれます。

  • 検索センター サイト
  • 検索センターの Web パーツ
  • 検索先
  • クエリ ルール
  • クエリの変換
  • 検索結果の種類と表示テンプレート

検索センター サイト

検索センターは、検索用に設定された SharePoint サイトです。 これは、組織のイントラネット上に存在するコンテンツを検索ができるポータルで、一元的で、高度にカスタマイズ可能なユーザー インターフェイスを提供します。 このセクションでは、検索センターのページと Web パーツ、および検索構成設定について説明します。この設定を変更することで、多くのコードを記述せずにカスタム検索アプリケーションや検索機能を作成できます。

検索センターのサイトを作成すると、SharePoint は既定の検索ホーム ページと既定の検索結果ページを作成します。 さらに、バーティカル検索と呼ばれるいくつかのページも作成されます。 バーティカル検索は、人や動画など特定のコンテンツ タイプを検索するためにカスタマイズされた検索結果ページで、これらのページには、特定のコンテンツ タイプまたはクラスに合わせてフィルター処理および書式設定された検索結果が表示されます。

以下のページがページ ライブラリの検索センター サイト コレクションに作成されます。

  • default.aspx – 検索センターのホーム ページと、エンド ユーザーがクエリを入力するページ。
  • results.aspx – 検索センターの既定の検索結果ページ。 [すべて] バーティカル検索の検索結果ページもこのページになります。
  • peopleresults.aspx – 垂直検索のPeopleの検索結果ページ。
  • conversationresults.aspxConversations search vertical の検索結果ページ。
  • videoresults.aspxビデオ 検索バーティカルの検索結果ページ。
  • advanced.aspx – エンド ユーザーが検索語句に制限を適用できる検索ページ。たとえば、検索を正確な語句に制限します。

すべてのバーティカル検索ページには検索結果 Web パーツが含まれますが、それらの Web パーツはバーティカル検索ごとに異なる仕方で構成されます。 検索結果 Web パーツのクエリは、それぞれ特定の検索先が設定されており、そのバーティカル検索に適用できます。 たとえば、peopleresults.aspx ページの検索結果 Web パーツのクエリは [ローカルのひとの結果] の検索先に限定されています。 SharePoint の既定のバーティカル検索の構成方法について理解することは、独自のバーティカル検索を作成したり、検索センターをカスタマイズしたりすることに役立ちます。

検索センターを使用するのに役立つその他のリソースを以下に示します。

検索センターの Web パーツ

検索センターのページには、検索ボックス、検索結果、検索ナビゲーション、絞り込みの 4 種類の Web パーツがあります。

検索ボックス Web パーツ

検索ボックス Web パーツには、ユーザーが検索するテキストを入力するテキスト ボックスが表示されます。 既定では、検索ボックス Web パーツは、検索センターのホーム ページ (default.aspx) およびすべての既定の検索結果ページ (results.aspx、peopleresults.aspx、conversationresults.aspx、videoresults.aspx) で使用されます。

Web パーツのツール ウィンドウでプロパティを編集することによって、検索ボックス Web パーツをカスタマイズできます。 これにより、次のようなことが可能になります。

  • 検索結果が表示される場所を変更します。 たとえば、カスタム検索結果 Web パーツまたはカスタム検索結果ページに結果を表示できます。
  • クエリ候補や人の候補を無効にします。
  • 検索設定ページと高度な検索ページへのリンクを表示します。
  • Web パーツの表示テンプレートを変更します。

詳細については、次のトピックを参照してください。

検索結果 Web パーツ

検索結果 Web パーツには、検索クエリの結果が表示されます。 既定では、すべての既定のバーティカル検索ページ (results.aspx、peopleresults.aspx、conversationresults.aspx、videoresults.aspx) で、検索結果 Web パーツが使用されます。 検索結果 Web パーツは、絞り込み Web パーツや検索ナビゲーション Web パーツにも検索結果を送信するため、他の検索 Web パーツが機能できるよう、検索結果ページに検索結果 Web パーツが存在している必要があります。

Web パーツ ツール ウィンドウで検索結果 Web パーツのプロパティを編集することによって、検索クエリを変更したり、検索結果ページの動作や結果の外観を変更したりできます。

プロパティの値を変更することによって、次の操作を実行できます。

  • 検索先を変更して検索対象となるコンテンツを指定します。
  • クエリ変数やプロパティ フィルターを追加し、さまざまなユーザーまたはユーザー グループの検索結果をカスタマイズします。
  • 検索結果内のアイテムまたはページを昇格または降格します。
  • 検索結果の並べ替えを変更します。
  • 表示テンプレートを変更します。

検索結果 Web パーツの詳細については、以下のトピックを参照してください。

検索ナビゲーション Web パーツ

検索ナビゲーション Web パーツには、異なるバーティカル検索間 (すべての、人、会話、動画) をユーザーがすばやく移動できるようにするリンクが表示されます。 ユーザーがバーティカル検索リンクを選択すると、検索結果がフィルター処理され、バーティカル検索の設定方法に従って表示されるように、検索ナビゲーション Web パーツは索結果 Web パーツからの検索結果を使用します。

Web パーツのツール ウィンドウで検索ナビゲーション Web パーツ プロパティを編集することによって、次のように Web パーツをカスタマイズできます。

  • 結果を取得する別の Web パーツを指定します。
  • 表示するバーティカル検索リンクの数を変更します。
  • Web パーツの外観とレイアウトを変更します。

また、リボンで [サイト設定]>[検索の設定] を選択して以下を変更することもできます。

  • リンクの表示名を変更します。
  • リンクの順序を変更します。

絞り込み Web パーツ

絞り込み web パーツは、検索結果をフィルター処理し、「絞り込み条件」と呼ばれるカテゴリに分類します。 ユーザーはこれらの絞り込み条件を選択して、検索結果を絞り込むことができます。 絞り込み条件は、 リファイナブルクエリ可能としてマークされている管理プロパティです。 これらの設定については、「SharePoint Server の検索スキーマの概要」の「管理プロパティの設定の概要」を参照してください。

Web パーツのツール ウィンドウで絞り込み Web パーツのプロパティを編集し、以下を指定できます。

  • 検索結果をフィルターに掛ける検索結果 Web パーツ。
  • 絞り込み Web パーツで使用する絞り込み条件。
  • 各絞り込み条件に適用する表示テンプレート。
  • 絞り込み Web パーツの外観、レイアウト、および動作。

既定では、絞り込み Web パーツに、絞り込み条件の値ごとに結果数は表示されません。 絞り込み条件用の表示テンプレートを変更することで、絞り込み条件のカウントを追加できます。

この機能の詳細については、「SharePoint Server で絞り込み Web パーツのプロパティを構成する」を参照してください。

絞り込み Web パーツと絞り込み条件の詳細については、以下のトピックを参照してください。

検索先

検索先は、特定のコンテンツ、または検索結果のサブセットに検索を制限します。 以下を指定することによって、検索先を定義できす。

  • 検索結果を取得する検索プロバイダーまたはソース URL。たとえば、ローカル SharePoint 検索サービスの検索インデックス。
  • 検索結果を取得するために使用するプロトコル。たとえば、 OpenSearch プロトコル。
  • クエリの変換。特定の検索プロバイダー または URL からの結果を、特定の結果のサブセット (たとえば、特定のコンテンツ タイプを持つ結果のセット) に絞り込むことができます。

SharePoint では、ローカル SharePoint の結果、会話、および現在のユーザーに関連するアイテムなど 16 個の事前構成された検索先が提供されています。 [検索先の管理] ページ ([サイト設定]>[検索]>[検索先]) から検索先に関する詳細を表示できます。

[検索先の管理] ページでは、次のいずれかの方法で新しい検索先を作成できます。

  • [新しい検索先] を選択して、目的の検索先を選択します。 詳細については、「SharePoint Server の検索に関する結果ソースを構成する」を参照してください。
  • 既存の検索先の横にある矢印をポイントして [コピー] を選択し、必要に応じてコピーを変更してから新しい名前で保存します。

検索先には検索結果を取得する 4 つのプロトコルのいずれかを指定します。 検索先が [ローカルの SharePoint] 以外のプロトコルを使用する場合、検索先には検索結果の取得先の URL も指定する必要があります。

検索先プロトコルとそのプロバイダー

検索先プロトコル プロバイダー URL
ローカル SharePoint ローカル検索サービスの検索インデックス なし。
リモート SharePoint 別のファームにホストされている検索サービスの検索インデックス。 リモート SharePoint ファームのルート サイト コレクションのアドレス。
OpenSearch 1.0/1.1 OpenSearch プロトコルを使用して検索結果を提供する外部検索プロバイダー (リモート検索エンジンやフィードなど)。 OpenSearch プロトコルを使用する検索プロバイダーの RSS フィードの URL。
Exchange Exchange Web サービス (EWS)。 EWS URL。

詳細については、以下を参照してください。

クエリ ルール

ユーザーにとって特に重要なクエリの検索機能をカスタマイズするにはクエリ ルールを使用します。 クエリ ルールでは、コンテキスト、条件、関連するアクションを指定します。 すると、指定したコンテキストで、かつクエリが指定した条件を満たす場合に、検索は相関性のあるアクションを実行し、検索結果の関連性が向上します。

コンテキストに関しては、クエリ ルールのクエリを以下のものに制限できます。

  • 指定した検索先に対して実行されるクエリ。
  • 指定されたトピック カテゴリからのクエリ。
  • 指定したユーザー セグメントに一致するユーザーによって実行されたクエリ。

次の表に、クエリ ルールの実行条件として指定可能なものを示します。

クエリ ルール条件

条件 説明
クエリがキーワードに正確に一致する クエリが指定した単語や語句に正確に一致する場合に、クエリ ルールを適用します。
クエリにアクション用語が含まれている ユーザーが何かを実行しようとしていることを示す 1 つの単語または語句の形で用語がクエリに含まれている場合に、クエリ ルールを適用します。
用語はクエリの先頭または末尾にある必要があり、動詞、コマンド、またはフィルターを指定できます。
クエリが辞書に正確に一致する クエリが辞書エントリに正確に一致する場合に、クエリ ルールを適用します。
このエントリは、用語ストアの用語、または人名辞典のエントリである可能性があります。
ソースでよく使用されるクエリ ユーザーのクエリが現在の検索先とは別の検索先に対してより頻繁に実行されている場合、このクエリ ルールを適用します。
この状況では、さまざまな検索先にユーザーが入力したクエリの解析を用います。
よくクリックされる検索結果の種類 クエリが特定の検索結果の種類でユーザーが選択した結果になることが多い場合、このクエリ ルールを適用します。
新しい結果の種類を作成する場合、それらの選択をクエリ ルールで使用するために記録する必要があることを示すことができます。
高度なクエリ テキスト照合 クエリが正規表現に一致する場合、このクエリ ルールを適用します。
また、前述のように、キーワード、アクション用語、および辞書条件のバリエーションを使用することもできますが、より高度な制御が必要になります。

クエリ ルールは、次の 3 つの種類の操作を指定できます。

  • ランク付けされた結果の上に表示される「昇格した結果」(以前の「おすすめコンテンツ」) を追加します。 たとえば、「病欠」というクエリの場合、クエリ ルールには、休暇に関する会社のポリシーの声明が記載されたサイトへのリンクなど、特定の昇格した結果を指定できます。

  • 「結果ブロック」と呼ばれる結果の 1 つ以上のグループを追加します。 結果ブロックには、特定の方法でクエリに関連付けられている結果の小さいサブセットが含まれています。 個々 の検索結果のように、結果ブロックを昇格させたり、他の検索結果と共にランク付けしたりできます。

  • クエリを変更して、ランク付けされた結果を変更します。 たとえば、ダウンロード ツールボックス を含むクエリの場合は、クエリ ルールで ダウンロード をアクション用語として認識し、イントラネットの特定のダウンロード サイトを参照する検索結果を昇格できます。

クエリ ルールの詳細については、「SharePoint Server でクエリ ルールを管理する」を参照してください。

クエリの変換

ユーザーのクエリに対して適切な検索結果を提供するため、クエリを変更する必要がある場合があります。 クエリの変換でこれを行います。 SharePoint には、動画、人、会話などの既定のバーティカル検索が組み込まれています。すべてにそのバーティカル検索機能を最適化するための定義済みのクエリ変換が含まれています。

次の 3 つの場所で、クエリ変換を構成できます。

  • 検索結果 Web パーツなどの Web パーツ。
  • クエリ ルール。これは、特定の条件が満たされた場合にのみ、特定のアクションを実行することを指定します。
  • クエリが検索結果を取得するために使用する検索先。

まず Web パーツ、次に該当するすべてのクエリ ルール、最後に検索先によって、ユーザーのクエリが変換されます。 結果先で変換を構成する場合、検索先の変換はクエリを最後に変換するため、その変換の変更は破棄されたり、上書きされたりされないことを覚えておいてください。 Web パーツや結果ブロックで検索先のクエリ変換を再利用できます。また、特定の検索先からの結果にのみ適用されるクエリ ルールや検索先を作成することもできます。

クエリ変換の作成とテストを行うために、クエリ ビルダーを使用できます。 クエリ変数の一時的なテスト値を設定し、クエリを実行して、検索結果のプレビューすることによって、クエリ ビルダーからクエリをテストできます。

クエリ変換の詳細については、「SharePoint Server でクエリの変換と結果の順序付けを計画する」を参照してください。

検索結果の種類と表示テンプレート

SharePoint の検索には、検索結果の表示方法をカスタマイズしやすくする新しい結果フレームワークが含まれています。 検索結果の表示方法を変更するためにカスタム XSLT を作成する代わりに、表示テンプレートと検索結果の種類を使用して、検索結果の重要な種類の表示形式をカスタマイズできます。

検索結果の種類

検索結果を異なる方法で表示するには、検索結果を異なる検索結果の種類に分類する必要があります。 検索結果の種類は、1 つの検索結果を別の検索結果から区別する検索結果の分類です。 これは、以下のコレクションによって構成されます。

  • ルール – 検索結果の結果ソースやコンテンツ タイプなど、各検索結果を比較する 1 つ以上の特性または条件。 等価、比較、および論理演算子を使用して、ルール条件を結合できます。

  • プロパティ – 検索結果の管理プロパティの一覧。 管理プロパティを表示テンプレートにマップする前に、管理プロパティをプロパティ リストに追加する必要があります。

  • 表示テンプレート – 条件を満たすすべての結果が検索結果ページに表示され、動作する方法を制御します。

SharePoint 検索には、いくつかの既定の結果の種類が含まれています。 それらを表示するには、[サイト設定]>[サイト コレクションの管理]>[検索結果の種類] に移動します。 既定の結果の種類は、いずれも編集できません。 既定の結果の種類をコピーし、それを編集することで、新しい検索結果の種類を作成できます。

SharePoint に含まれる既定の結果の詳細については、「SharePoint Server で検索結果の表示に使用される検索結果の種類と表示テンプレート」を参照してください。

表示テンプレート

表示テンプレートは、表示レイアウトと検索結果の動作を定義します。 これは、どの管理プロパティが検索結果に表示されるか、またそれらがどのように表示されるかを制御します。 SharePoint は、マスター ページ ギャラリー内の Display Templates フォルダーの Search サブフォルダーに表示テンプレートを格納します。 各表示テンプレートは、次の 2 つのファイルで構成されます。

  • HTML エディターで編集できる表示テンプレートの HTML バージョン。
  • SharePoint が使用する .js ファイル。

表示テンプレートを使用する場合は、HTML ファイルを変更します。 .js ファイルは、SharePoint によって作成され、変更されます。 このファイルの編集は行いません。

表示テンプレートには、以下の 2 つの主要な種類があります。

  • コントロール表示テンプレート – 結果の表示方法の全体的な構造を決定します。
  • アイテム表示テンプレート – セット内の各結果の表示方法を決定します。

コントロール表示テンプレートは、検索結果を表示する方法の全体的なレイアウトを構成する HTML を提供します。 たとえば、コントロール表示テンプレートには、見出しおよびリストの始まりと終わりの HTML が用意されている場合があります。 コントロール表示テンプレートは、Web パーツで一度だけレンダリングされます。

アイテム表示テンプレートには、結果セット内の各アイテムを表示する方法を決定する HTML があります。 たとえば、アイテム表示テンプレートは、画像、およびそのアイテムに関連付けられたさまざまな管理プロパティにマップされる 3 行のテキストを含んだリスト アイテムの HTML を提供するかもしれません。 アイテム表示テンプレートは、結果セット内の各アイテムに対して 1 回レンダリングされます。 したがって、結果セットに 10 個のアイテムが含まれる場合、アイテム表示テンプレートは HTML のそのセクションを 10 回作成します。

表示テンプレートとその構造の詳細については、以下のトピックを参照してください。

SharePoint で使用可能な表示テンプレートの詳細については、「SharePoint Server の表示テンプレート リファレンス」を参照してください。

表示テンプレートのカスタマイズ

SharePoint に組み込まれた表示テンプレートをカスタマイズする場合、変更する目的のコンテンツをコピーして新しい表示テンプレートを作成し、新しいバージョンをカスタマイズします。 既存の表示テンプレートのコピーから開始する方法は、必要な要素すべてを含めて開始できるため、新しいアカウントを作成する最も簡単な方法と言えます。

表示テンプレートを使用する際のもう 1 つのヒントは、マスター ページ ギャラリーにネットワーク ドライブをマップすることです。 詳細については、「SharePoint マスター ページ ギャラリーへのネットワーク ドライブの割り当て」を参照してください。

表示テンプレートに使用する HTML ファイルは、headbody 要素を使用して完全に形成された HTML ドキュメントです。 head 要素内には、表示テンプレートの表示名を指定する title 要素があります。 このタグ内のテキストが、結果の種類の構成など、SharePoint UI で構成を行うときに表示されます。

title 要素の後に、カスタム ドキュメント プロパティの要素 (mso:CustomDocumentProperties) があります。 アイテム表示テンプレートでは、この要素は mso:ManagedPropertyMapping 要素を含んでいます。ここで SharePoint の検索によって使用される管理プロパティが、表示テンプレートで使用される値にマッピングされます。

次の例に示すように、このために使用される構文は <display template reference name>:<managed property name> です。

<mso:ManagedPropertyMapping msdt:dt="string">'Title':'Title','Path':'Path','Description':'Description'

body 要素内には script 要素があります。この要素には、表示テンプレートの外部にある、CSS ファイルや JavaScript ファイルなどの外部リソースを含めることができます。 script 要素に外部リソースを含める方法の例は、「SharePoint デザイン マネージャー表示テンプレート」の「スクリプト ブロック」セクションを参照してください。

次の要素は、div 要素です。 これは、表示テンプレートの一部として使用する HTML またはスクリプトを配置する場所です。 表示テンプレート構造に慣れるための良い方法は、検索結果、Control_SearchResults.html (コントロール表示テンプレート)、Item_Default.html (アイテム表示テンプレート) の既定の表示テンプレートのコピーをダウンロードすることです。

表示テンプレートと検索結果の種類に関するその他のリソースを次に示します。

クエリ API と検索アドイン

SharePoint の検索には、.NET と JavaScript のクライアント オブジェクト モデルに加えて、オンライン、オンプレミス、およびモバイル開発の検索結果にアクセスできるようにする REST サービスが含まれます。

検索クエリ API

API クラス ライブラリまたはスキーマ パス
.NET CSOM Microsoft.SharePoint.Client.Search.dll

SharePoint Server 2013 クライアント コンポーネント SDK
%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\15\ISAPI

SharePoint Online クライアント コンポーネント SDK
%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\16\ISAPI
マネージ クライアント オブジェクト モデルでのクエリ検索 (コード ギャラリー)
JavaScript CSOM SP.search.js
%ProgramFiles%\SharePoint Client Components\Scripts
JavaScript クライアント オブジェクト モデルでのクエリ検索 (コード ギャラリー)
REST サービス http://server/_api/search/query

http://server/_api/search/postquery

http://server/_api/search/suggest
SharePoint アドインから検索 REST サービスを使用する (コード ギャラリー)

検索クエリ .NET CSOM

クエリ .NET CSOM を使用するには、T:Microsoft.SharePoint.Client.ClientContext クラスの新しいインスタンスを作成します。これは、Microsoft.SharePoint.Client.dll の Microsoft.SharePoint.Client 名前空間にあります。 次いで、Microsoft.SharePoint.Search.Client.Query 名前空間のクエリ オブジェクト モデルを使用します。

次に簡単な例を示します。

using Microsoft.SharePoint.Client; 
using Microsoft.SharePoint.Client.Search.Query;
…
using (ClientContext clientContext = new ClientContext("http://intranet.contoso.com"))
{
    KeywordQuery keywordQuery = new KeywordQuery(clientContext);
    keywordQuery.QueryText = "Argument";
    SearchExecutor searchExecutor = new SearchExecutor(clientContext);
    ClientResult<ResultTableCollection> results = searchExecutor.ExecuteQuery(keywordQuery);
    clientContext.ExecuteQuery();
}
 

これで、検索結果を反復処理できるようになりました。 次の例では、それぞれの検索結果のタイトルを書き込んでいます。

foreach (var row in results.Value[0].ResultRows) 
{ 
    Console.WriteLine(row["Title"]); 
}

検索クエリ REST サービス

検索クエリ REST サービスは、POSTGET の両方の HTTP 要求をサポートしています。 検索 REST サービスを呼び出すときには、要求でクエリ パラメーターを指定します。検索では、それらのクエリ パラメーターを使用して検索クエリを作成します。 GET 要求では、URL でクエリ パラメーターを指定します。 POST 要求の場合は、JavaScript Object Notation (JSON) 形式のクエリ パラメーターを本文で渡します。

JSON GET および POST 要求

動詞 URI
GET 要求 http://server/_api/search/query
POST 要求 http://server/_api/search/postquery

検索 REST サービスのサンプル GET 要求

要求の種類 要求 URL
キーワード http://server/site/_api/search/query?querytext='{KQL Query}'
プロパティを選択する http://server/site/_api/search/query?querytext='test'&selectproperties='Title,Rank'
並べ替え http://server/site/_api/search/query?querytext='test'&sortlist='LastModifiedTime:descending'

http://server/site/_api/search/query?querytext='test'&sortlist='LastModifiedTime:descending,Rank:ascending'

使用可能なクエリ パラメーターの完全な一覧とその使用方法については、「SharePoint ワークフローの基礎」を参照してください。

サンプル コードについては、「SharePoint アドインから検索 REST サービスを使用する」を参照してください。

検索アドイン

SharePoint アドイン (以前の SharePoint 用アプリ) は、SharePoint Web サイトの機能を拡張する自己完結型の機能です。 検索アドイン (以前の検索アプリ) は、検索機能を使用する SharePoint アドインです。 検索アドインでは、検索クエリ API を使用して検索結果を取得できます。 さらに、1 つの SharePoint インストール環境から別の環境に検索構成を配布するためにも使用できます。

検索アドインを作成するための開発環境のセットアップ方法については、「 SharePoint アドインのオンプレミスの開発環境をセットアップする」または「 Office 365 で SharePoint アドインの開発環境をセットアップする」を参照してください。

アクセス許可

検索アドインでは、ユーザー レベルのアクセス許可のみが必要です。属性値は QueryAsUserIgnoreAppPrincipal です。 このアクセス許可では、ユーザーのアクセス許可に基づいて、検索アドインにクエリを実行できます。 つまり、ユーザーの ACL に基づいてその検索結果が返されます。 検索を使用するアドインにアクセス許可を付与するには、以下の手順を実行します。

  1. ソリューション エクスプローラーで、AppManifest.xml を開きます。

  2. [アクセス許可] タブで [検索の範囲] を選択して、[QueryAsUserIgnoreAppPrincipal] を選択します。

詳細については、「SharePoint でのアドインのアクセス許可」を参照してください。

クエリ API

.NET CSOM、JavaScript CSOM、または検索 REST サービスを使用して、検索アドインで検索結果を取得できます。 次の例には、クエリ .NET CSOM を使用して、検索のアドインで検索結果を取得する方法が示されています。

var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);
using (var clientContext = spContext.CreateUserClientContextForSPHost())
{
    KeywordQuery keywordQuery = new KeywordQuery(clientContext);
    keywordQuery.QueryText = "Argument";
    SearchExecutor searchExecutor = new SearchExecutor(clientContext);
    ClientResult<ResultTableCollection> results = searchExecutor.ExecuteQuery(keywordQuery);
    clientContext.ExecuteQuery();
}

関連項目