Uncategorized

SharePoint 2013 Search : Cross-Site Collection Publishing と Managed Metadata Navigation を使った Search Site の作成

こんにちは。

SharePoint 2013 では Search を活用した高度なアプリケーションがより柔軟に構築可能になっており、例えば、Windows Azure Virtual Machines (Azure VM) を使った Search-driven な商品検索サイトなど、高度な Web 上の検索サービスが、設定によって容易に構築できます。

今回は、以前、「Windows 8 store apps と SharePoint 2013 の連携アプリケーション開発」の投稿でも紹介した Managed Navigation を使った Search サイト (下図) の構築方法を解説したいと思います。

まったくプログラミングの話ではありませんが (仕事的に畑違いですが)、「Windows 8 store apps と SharePoint 2013 の連携アプリケーション開発」の投稿で、この手法を紹介すると書いて放置してましたので、今年の残作業として記載しておきます。

 

Site と Feature (機能) の準備

今回は、インターネット上に公開された商品検索 (Product Search) を例に紹介しましょう。
購買部門では、扱う商品を SharePoint リストを使って整理しています。そして、調達した商品 (Product) の情報を、専用のポータル (後述する発行サイト) を使って、エンドユーザー (顧客) に検索しやすい形式で提供します。ここで、SharePoint の検索 (Search) エンジンを使用します。

今回、購買部のサイト コレクションとして http://kkdeveva11/sites/purchase を構築し、元データとなる商品情報 (Product) を管理します。SharePoint は、顧客に公開されるデータ (Product など) を収集して、http://kkdeveva11/sites/productcenter という Publishing Site (発行サイト) で顧客に見やすい形式で公開します。

まず、購買部のサイト コレクション (http://kkdeveva11/sites/purchase) を作成します。
今回、このサイト コレクションで作成したデータを、上記の通り、発行サイト (http://kkdeveva11/sites/productcenter) で公開する必要があるため、まず、サイト コレクションの Feature (機能) の [SharePoint Server Publishing Infrastructure] (SharePoint Server 発行インフラストラクチャ) と [Cross-Site Collection Publishing] を Active にしておきます。

また、発行サイト (http://kkdeveva11/sites/productcenter) では、発行機能を有効にしておく必要があります。このため、発行サイトは、サイト テンプレートの Publishing Portal を使用して構築するか、あるいは、チーム サイトなどのサイトを構築してから、[SharePoint Server Publishing Infrastructure] (site collections feature) と [SharePoint Server Publishing] (site feature) の Feature (機能) を有効にしてください。(今回は、Publishing Portal のサイト テンプレートを使用してサイトを構築します。)

 

メタデータ (Term など) の作成

つぎに、Managed Navigation で使用する Term (上図の「Hard Disk」、「Memory」などの Category) を作成します。

購買部のサイト (http://kkdeveva11/sites/purchase) で、[Site settings] (サイトの設定) 画面を開き、[Term store management] をクリックします。([Term store management tool] が表示されます。)
Term を作成する際は、Group – Term set (Term) – Term の順番で作成しますが、[SharePoint Server Publishing Infrastructure] (発行インフラストラクチャ) がアクティブになっているサイト コレクションでは、「Site Collection – <site name>」という名前の Group があらかじめ作成されています。ここに、今回は、「Product Hierarchy」 の Term set を作成し、その下に、「PC Asset」という名前の Root Term と、さらに「Hard Disk」、「Memory」の各 Term を作成します。
下図のようになります。

Term は、一般に、ファーム全体で共有されますが、「Site Collection – <site name>」はサイト コレクション スコープの Term Group になっています。
そこで、このサイト コレクションの Term に、発行サイト (http://kkdeveva11/sites/productcenter) からアクセスできるようにするため、「Site Collection – <site name>」を選択し、右ペインの [Site Collection Access] に、下図の通り、発行サイトの URL (http://kkdeveva11/sites/productcenter) を追加しておきます。

つぎに、商品 (Product) のデータの入れ物を作成するため、購買部のサイト (http://kkdeveva11/sites/purchase) に、[Site columns] (サイト列) や [Site content types] (サイト コンテンツ タイプ) を作成します。今回は、Title (既存の SharePoint の列)、Item Price、Rollup Image (Publishing Infrastructure にある既存の列)、Item Category の 4 つの列を持つ「Product with Image」という Site content type を作成します。
まず、購買部のサイト (http://kkdeveva11/sites/purchase) で、[Site settings] (サイトの設定) 画面を開き、[Site columns] をクリックして下記の 2 つの列を作成します。

Item PriceCurrency (通貨)
Item CategoryManaged Metadata

なお、Managed Metadata である Item Category 列を作成する際は、下図の通り、作成画面の [Term Set Settings] で、上記で作成した「PC Asset」を選択しておきます。

つぎに、Site content type を作成します。[Site settings] (サイトの設定) 画面を開き、[Site content types] をクリックして、「Product with Image」という名前の Site content type を新規作成します。(この際、この Site content type の親として、[List Content Types] – [Item] を選択します。)
この Content type の列 (Column) として、下記の列を設定します。(いずれも、既存の site columns から選択して追加します。)

  • Title (既存)
  • Item Price
  • Rollup Image
  • Item Category

 

元データの作成

では、リストやデータの作成をおこないましょう。

購買部のサイト (http://kkdeveva11/sites/purchase) で、上記の「Product with Image」の Content type を使ってカスタム リストを新規作成します。(今回は、この作成したリストの名前を「Products」とします。)
SharePoint を使い慣れている方は説明不要だと思いますが、念のため作成方法を記載しておくと、カスタム リストを作成して、リボンから [List Settings] を選択し、表示される画面で [Advanced settings] をクリックして、[Allow management of content types?] で [Yes] を選択します。(これにより、リストで Content Type が使用可能になります。)

再度、[List Settings] の画面を表示すると Content Type を追加できるので、ここに、上記で作成した「Product with Image」を選択して追加します。さらに、既定で入っている「Item」の Content type は使用しないため、削除しておきます。

つぎに、作成したリスト (Products) の [List Settings] 画面を開いて [Catalog Settings] をクリックし、表示される画面で [Enable this library as a catalog] をオンにします。この設定により、後述する発行サイトからの Catalog の接続 (connect) が可能になります。(この設定は、必ずおこなってください。)
また、今回は、このリスト アイテムをエンドユーザー (顧客) に公開するため、[Enable anonymous access] ボタンを押して、匿名ユーザーによるアイテムの参照を可能にします。(企業内の検索サイトで公開する場合など、匿名ユーザーの参照が必要ない場合は、この設定は不要です。)
設定が完了したら、忘れずに [OK] ボタンを押して保存します。

リストの新規作成が完了しました。このリスト (Products) で新規アイテムを作成する際に、下図の通り画面が表示されるはずです。

アイテムに添付したイメージ (上図の Rollup Image) は、所定のライブラリーにアップロードされて公開されます。
また、上図の Item Category の右のアイコンをクリックすると、下図の通り、Term の選択画面が表示されます。

このリストに、リスト アイテムをいくつか登録しておきましょう。

 

クロールの実行

では、SharePoint の Search エンジンで収集するため、以降の手順でクロールを実行します。

[Central Administration] (全体管理) の画面を表示して、[Application Management] – [Manage service applications] をクリックします。表示されるサービス アプリケーションの一覧から、[Search Service Application] を選択して、[Manage] ボタンを押します。
表示される Search Administration 画面で、左から [Content Sources] を選択すると「Local SharePoint sites」のソースが表示されるので、このドロップ ダウンから [Start Full Crawl] を選択して Full Crawl を実行します。

データ量やマシン スペックにも依りますが、Crawl が完了するまで時間がかかるので、少し待ってください。(インストール直後でデータが少なければ、数分で完了するでしょう。[Refresh] をクリックすると、現在の状態が確認できます。Index Partition が壊れているなどでクロールが完了しない場合は、[Reset Index] でインデックス ファイルを作り直してください。)

 

Search site (発行サイト) の作成

つぎに、上記で収集 (クロール) されたデータに接続して、Product の一覧を表示する顧客用の発行サイトを設定します。

まず、上記で作成した発行サイト (http://kkdeveva11/sites/productcenter) に行き、[Site settings] 画面の [Term store management] をクリックして、下図の通り、「Product」という名前の Term を作成します。
今回、この Term の下に Category (購買部が作成した「Hard Disk」、「Memory」などの Item Category) を設定します。

補足 : 実は、「Windows 8 store apps と SharePoint 2013 の連携アプリケーション開発」では、Navigation Root で Category を扱いましたが、今回は、このあとの説明のために、上述の通り、「Product」という Term の下で Category を扱います。(このため、実行結果が少し異なってきますので、ご注意ください。)

発行サイト (http://kkdeveva11/sites/productcenter) の [Site settings] 画面を表示します。
サイトの発行機能 (SharePoint Server Publishing) がアクティブになっているサイトでは、下図のように [Manage catalog connections] のリンクが表示されるので、これをクリックします。

表示される画面で [Connect to a catalog] をクリックすると、下図の通り、接続可能な Catalog の一覧として、購買部のサイト (http://kkdeveva11/sites/purchase) の Products リストが表示されます。この [Connect] リンクをクリックします。

つぎに表示される画面で、接続方法の設定をおこないます。この画面で、下図の通り、[Navigation Hierarchy] として「PC Asset」 (Term set) を選択します。

さらに、[Navigation Position] として、今回は、上記で作成した「Product」の下に Category を作成します。

さらに、[Catalog Item URL Format] で、この発行サイトでアイテム (Product) を表示する際の URL の形式を指定します。
今回は、SEO を考慮し、下図の通り、「Title」をアイテムの URL として使用します。例えば、「Memory」のカテゴリーの「Matsucom」というアイテムの場合には、URL は http://kkdeveva11/sites/productcenter/memory/Matsucom となります。(このため、Title が重複などしないよう注意してください。もちろん、ItemId などを URI に指定することも可能です。)

補足 : 「Windows 8 store apps と SharePoint 2013 の連携アプリケーション開発」では、Title ではなく、ItemId を使用しています。(このため、REST で検索した際の結果にも、この URL が反映されています。)

完了したら、[OK] ボタンを押します。

 

Search-driven Site の確認

発行サイト (http://kkdeveva11/sites/productcenter) にアクセスすると、「Windows 8 store apps と SharePoint 2013 の連携アプリケーション開発」で紹介したような商品検索サイトが表示されます。(「Hard Disk」、「Memory」などは、このサイトの Managed Navigation として自動設定されます。)

補足 : 前述の通り、今回は、このあとの説明のために、「Product」の下に Category を作成したので、「Windows 8 store apps と SharePoint 2013 の連携アプリケーション開発」と異なる表示結果になっています。(「Windows 8 store apps と SharePoint 2013 の連携アプリケーション開発」では、[Navigation Position] として、Navigation Root に Category を作成しています。)

当然ですが、次回、クロールがおこなわれて検索結果が更新されると、ちゃんとこの発行サイトの情報も更新されます。

今回は、購買部による Product データのみをユーザーに公開しましたが、Catalog への接続は複数可能であり、サービス部門、ソフトウェア部門など、さまざまな領域の商品情報 (サービス) を、このエンドユーザー (顧客) 向けの発行サイトに集約して、下図のようにメニュー化できます。

 

さらなる応用

SharePoint Server 2013 では、この他にも、さらに進んだカスタマイズが可能です。
例えば、FAST と完全に統合されているため、結果出力の Page Template を編集して Refinement WebPart を挿入することで、上記のカテゴライズに加え、多角的な絞り込み (filtering) を組み合わせることができます。(この Page Template は、Connect された Category ごとにわけることも、共有することも可能です。)
下図では、製造元や製造年のサイト列 (Site columns) を追加して、これらを Refiner として使用しています。「Hard Disk」の Category の商品のうち、「Contoso Electric」が製造していて、かつ 2013 年製のもの、といった商品検索が可能です。

補足 : Search エンジンが収集した Property を Refiner として使用するため、あらかじめ、[Central Administration] (全体管理) から Search Service Application の管理画面を表示して [Search Schema] を選択し、対象の Managed Property を検索して、Refinable 属性を [Yes -active] に変更してください。(その後、再度、クロールを実行してください。)

また、今回は、SharePoint が提供している既定のページを使用していますが、もちろん、検索ページの UI (look & feel) も自由にカスタマイズできます。実際の商品検索のサイトでは、こうしたカスタマイズは必要不可欠となるでしょう。

きりがないのでこの辺にしますが、この他にも、いろいろな応用が設定ベースで (Non-programming で) 可能です。

 

さいごに

ちなみに、SharePoint Server 2013 では、上記の購買部のサイトと同様の設定がおこなわれたサイト テンプレートがサンプルとして提供されています。サイト テンプレートの [Publishing] – [Product Category] です。(上記のサンプルは、このサイト テンプレートを参考に紹介しました。なお、このサイト テンプレートは、Office 365 には入っていないようです。SharePoint Server のみで使用可能です。)

例えば、Windows Azure Virtual Machines (Azure VM) を使用して SharePoint Server を立てることで、VPN 接続を使って、企業内のサイトと、クラウドを通して顧客に公開する発行サイト (インターネット サイト) を上記の通り柔軟に接続できます。また、いくつか機能は制限されますが、Catalog への connect など基本的な機能は Office 365 でも利用可能であり、Office 365 でも、組織内 (企業内) への検索サイトの提供など、限定された用途でこうした検索体験が活用できます。

 

では、また来年 ! (良いお年を)

 

Categories: Uncategorized

Tagged as: , , ,

1 reply»

Leave a Reply