SharePoint 2013 コンテンツ検索 Web パーツでカスタムの管理プロパティを表示する

こんにちは、SharePoint サポートの佐伯です。
前回の投稿に引き続き、今回もコンテンツ検索 Web パーツについて取り上げていきます。
SharePoint サイトの運用上、カスタムの管理プロパティを作成し、この情報をコンテンツ検索 Web パーツで表示させたいというお問い合わせを多くいただきます。
本投稿では、こちらの方法についてご紹介したいと思います。

まずは、以下のケースを考えてみましょう。

そこで、ドキュメントの分類用の列を用意して複数のドキュメント ライブラリに追加し、その列の情報をマッピングした管理プロパティを表示する Web パーツを作成しましょう。
Web パーツはコンテンツ検索 Web パーツを使用します。

それでは作成していきましょう。
1. サイト列の作成
まずは、列の作成から始めましょう。複数のドキュメント ライブラリで使用するため、サイト列の作成をおすすめします。
1. [歯車] – [サイトの設定] をクリックします。
2. [Web デザイナー ギャラリー] – [サイト列] をクリックします。

3. [作成] をクリックします。

4. 列名に “文書のカテゴリ" と入力し、この列の情報の種類には “選択肢 (メニューから選択)“ にチェックを入れます。

5. 列の選択肢を入力し、保存します。

2. ドキュメント ライブラリの作成
上記で作成したサイト列をドキュメント ライブラリに追加しましょう。
1. ドキュメント ライブラリにアクセスし、リボンの [ライブラリの設定] をクリックします。

2. 列セクションにある [サイト内の既存の列から追加] をクリックします。

3. [利用可能なサイト列] で 文書のカテゴリ を選択して追加します。

4. [OK] をクリックします。
文書のカテゴリ 列を追加したいドキュメント ライブラリに上記の手順 1 ~ 4 を実施していきます。

クロールをする前に、サイト列に何らかのコンテンツを含めましょう。テスト用のドキュメントをアップロードし、追加した文書のカテゴリ列に値をセットします。

- フル クロールの実行
次にフル クロールを実行します。フル クロールを実行すると、上記で作成したサイト列がクロールされたプロパティとして反映されます。
1. サーバーの全体管理サイトにアクセスします。
2. [アプリケーション構成の管理] – [サービス アプリケーションの管理] をクリックします。

3. [サービス アプリケーションの管理] ページで該当の [Search Service Application] をクリックします。

4. [検索管理] メニューの [クロール] - [コンテンツ ソース] をクリックします。

5. 必要なコンテンツ ソースの名前をポイントし、表示された矢印をクリックして [フル クロールの開始] をクリックします。

フル クロールが完了後、[クエリと結果] – [検索スキーマ] をクリックし、[クロールされたプロパティ] をクリックします。

文書のカテゴリがクロールされたプロパティとして反映されました。

(補足) 列の種類が選択肢のサイト列は、ows_q_CHCS_サイト列名となります。1 行テキスト列であれば ows_q_TEXT_サイト列名、日付と時刻列であれば ows_q_DATE_サイト列名 になります。

3. 管理プロパティの作成
1. サーバーの全体管理サイトにアクセスし、[アプリケーション構成の管理] – [サービス アプリケーションの管理] より、該当の [Search Service Application] をクリックします。
2. [検索管理] メニューの [クエリと結果] – [検索スキーマ] をクリックします。

3. [新しい管理プロパティ] をクリックします。

4. 以下の項目を設定します。
プロパティ名 : DocumentCategory
種類 : テキスト

5. DocumentCategory の値を検索結果に表示するために [取得可能] にチェックを入れます。

6. クロールされたプロパティへのマッピングで [マッピングの追加] をクリックします。

7. クロールされたプロパティの選択でプロパティを選択し、[OK] をクリックしダイアログを閉じます。

8. [OK] をクリックします。

- フル クロールの実行
マッピングされた情報を反映するため、再度フルクロールを実行します。
手順は上述のフル クロールの実行と同様です。

4. 管理プロパティのマッピング
上記で作成した管理プロパティをコンテンツ検索 Web パーツで表示するようマッピングします。
1. ページにコンテンツ検索 Web パーツを配置し、[Web パーツの編集] をクリックします。

2. 今回は既定で用意されている表示テンプレートを使いましょう。"表示テンプレート" を展開し、アイテムで 2 行 を選択します。この表示テンプレートでは、2 つの管理プロパティを表示することができます。

※表示する管理プロパティの数を変更したい場合や、デザインおよびレイアウトを変更したい場合は表示テンプレートをカスタマイズします。表示テンプレートのカスタマイズについては、こちらの投稿でご紹介しています。
3. "プロパティのマッピング" を展開し、アイテム表示テンプレートのフィールドに対し、管理プロパティのマッピングを変更します。 にチェックを入れます。

4. 行 1 には Title、行 2 には DocumentCategory を設定します。

さらに、検索結果で取得するアイテムの条件を指定していきましょう。
- クエリの編集
今回は、結果を取得するリストを指定し、最新のドキュメントを取得するクエリの編集方法をご紹介します。
まずは、結果を取得するリストを指定しましょう。
1. [Web パーツの編集] の [クエリの編集] をクリックします。

2. [詳細モードへの切り替え] をクリックします。

以下のように切り替わります。

3. クエリ テキストに検索結果を取得する条件を設定します。まずは対象のリストの GUID を調べましょう。

< リストの GUID の調べ方>
以下のスクリプトを SharePoint 2013 管理シェルで実行し、対象のリストの GUID を取得します。管理者権限で実行する必要があります。
$web = Get-SPWeb <Web サイトの URL>
$list = $web.Lists["<リスト名>"]
$list.ID
ここで取得した GUID をメモしておきます。条件に指定したい他のリストの GUID も調べます。

4. 上記で取得したリストの GUID で以下のようなクエリを作成します。なお、リストの GUID を指定するだけではそのリストも検索結果で取得されるので、IsDocument:"True" も追加します。
IsDocument:"True" ListID:8bb03432-fdd6-4872-9252-6f7f6f08c9d4
なお、複数のリストを指定する場合は OR を使って以下のようにクエリを作成します。
IsDocument:"True" (ListID:8bb03432-fdd6-4872-9252-6f7f6f08c9d4 OR ListID:8d4a2be1-886c-4652-8d87-eb3d7a307b85 OR ListID:81091af5-ef87-447e-b351-a81ccbca097f)

次に、最新のドキュメントを取得する設定を行います。
5. [並べ替え] タブを選択し、並べ替え項目に LastModifiedTime降順 を設定します。これで最終更新日の降順でドキュメントが取得されます。

6. Web パーツを保存し、ページを保存します。以上で完了です。

いかがでしたか。
上記で紹介している手順は必要に合わせて変更してください。

検索のカスタマイズや設定に関する過去の投稿もご参考にしていただけますと幸いです。
SharePoint 2013 検索の設定やカスタマイズに関する投稿まとめ