SharePoint 2013 コンテンツ エンリッチメント Webサービス機能の利用方法


FAST Search Server 2010 for SharePoint (FS4SP) ではパイプライン拡張機能と呼んでいましたが、検索対象のアイテムをインデックス化する際に、カスタムコード、3rd パーティーソフトウェアや外部 Web サービスを呼び出して、コンテンツに対する「コンテンツの分類」「ジオタグ」「機械翻訳」「評判分析」などの結果を取得し、検索インデックス内の管理プロパティに投入することで、絞り込みなどに利用するための機能をコンテンツ エンリッチメント Webサービスと呼びます。本投稿では、このコンテンツ エンリッチメント Webサービス機能の利用方法に関して記載します。

あなたが利用している、あるいは利用しようとしている検索エンジンは、それに重要とされている (有名な著書「Search Patterns」の一部の 6 スライド目で定義されています) 「Content」と呼ばれる場所で、どれだけ多くの一般的なロジックが実行され、加えて任意のロジックを追加することが出来るようになっているでしょうか。
これが弱かったり、出来ないということは、検索対象のデータが置かれている場所やデータの種類に応じた対応が出来ない、つまり、利用する企業、部門やユーザーに応じた処理が行えないことを意味しており、その点からは「サーチではあるがエンタープライズサーチではない」と言えます。SharePoint 2013 はといえば、PowerPoint 文書の各スライドのスライド タイトルを抽出したり、検索ベースの推奨機能といった多くのロジックが標準で実行され、カスタム エンティティ抽出機能やコンテンツ エンリッチメント Webサービス機能で任意のロジックを追加することが可能です。

1. 必要に応じて IIS のサイトを作成

SharePoint 2013 から呼び出される処理を Web サービスとして実装する必要がありますので、まずはそれを配置する場所を作成します。

ここでは、検証用ということで、SharePoint 2013 サーバー上で動作している IIS に [CEWS] という名称のサイトを作成しました。この際には、アプリケーションプールに .NET Framework バージョン 4.0 のものを利用するように作成してください。

image

2. Visual Studio 2012 で Web サービスを作成

詳細な内容は、TechNet ライブラリの記載を参照していただくとして、簡単に書くと以下の手順で Web サービスを作成し、上記 1 で作成したサイトに配置します。

  1. Visual Studio 2012 で、[WCF サービス アプリケーション] テンプレートを利用したプロジェクトを作成します。今回は C# で構築する例ということで、新しいプロジェクトを [Visual C#] – [WCF] – [WCF サービス アプリケーション] テンプレートを選択します
  2. <SharePoint 2013 のインストール パス>\Microsoft Office Servers\15.0\Search\Applications\External フォルダの Microsoft.Office.Server.Search.ContentProcessingEnrichment アセンブリへの参照を追加します
  3. IContentProcessingEnrichmentService インターフェースを持つクラスを実装し、その中にロジックを記載します
  4. プロジェクト用に生成された Web.config ファイルの system.serviceModel タグ配下に大きなサイズのデータのやり取りが行えるように記述を追加します
  5. プロジェクトを発行し、サイトに Web サービスを配置します

今回は、サンプルとしてクロール対象のアイテムの body 管理プロパティに含まれている文章の内容と判定用の文字列の比較を実施し、「好評」「中立」「不評」と判定し、この文字列を Sentiment 管理プロパティに投入する簡易評判分析 Web サービスを作成しました。作成済みのプロジェクト ファイルはこちらからダウンロードして利用していただけます。

3. 入出力用の管理プロパティを作成

今回は入力用の管理プロパティは不要ですので、評判情報を出力するための管理プロパティを作成します。SharePoint 2013 管理シェルを管理者として起動し、以下のコマンドを実行します。

$ssa = Get-SPEnterpriseSearchServiceApplication
$mp = New-SPEnterpriseSearchMetadataManagedProperty -SearchApplication $ssa –Name “Sentiment” –Type 1 –Queryable $True
$mp.Refinable = $True
$mp.Update()

4. コンテンツ エンリッチメント Web サービスを構成

SharePoint 2013 管理シェルを管理者として起動し、以下のコマンドを実行し、検索インデックス作成時にこの Web サービスが呼ばれるように設定します。

$ssa = Get-SPEnterpriseSearchServiceApplication
$config = New-SPEnterpriseSearchContentEnrichmentConfiguration
$config.Endpoint = “http://&lt;SERVER>:<PORT>/ContentProcessingEnrichmentService.svc”
$config.InputProperties = “body”
$config.OutputProperties = “Sentiment”
Set-SPEnterpriseSearchContentEnrichmentConfiguration -SearchApplication $ssa -ContentEnrichmentConfiguration $config

5. 検索結果画面を変更

Sentiment 管理プロパティを「評判分析」絞り込みとして表示した場合には、検索結果画面の編集から、絞り込み Web パーツの [絞り込み条件を選択] ボタンをクリックし、[使用できる絞り込み条件] から適切なもの (今回の場合は、「Sentiment」) を選択することで、以下のような検索結果画面になります。
ちなみに、ちなみに、表示テンプレートに [絞り込みアイテム (件数表示)] が選択されていますが、これは以前のエントリで作成したものです。

image

方法: SharePoint Server でコンテンツ エンリッチメント Web サービス呼び出しを使用する
http://msdn.microsoft.com/ja-jp/library/jj163982.aspx

広告