ツリー形式での絞り込みの表示


エンタープライズサーチの導入を考える際に、現実では人 (ユーザー) による検索結果画面からの情報分析時間が長くなるため適切ではないのですが、どうしてもツリー形式でで情報 (特に絞り込み) を表示したいという要望があります。
今回は、FS4SP のクロールされたプロパティ url に含まれている URL 文字列 (xxx://abc/def/…) をベースにツリー形式で絞り込みを表示する手順を示します。

1. クロールされたプロパティおよび管理プロパティを作成します

FS4SP サーバー上の FAST Search Server 2010 for SharePoint shell から以下のコマンドレットを実行します。これで、”pathtree” という名称のプロパティを作成します。

$c = New-FASTSearchMetadataCrawledProperty -Name pathtree -varianttype 31 -Propset 48385c54-cdfc-4e84-8117-c95b3cf8911c
$m = New-FASTSearchMetadataManagedProperty –Name pathtree -type 1
$m.RefinementEnabled = 1
$m.Update()
New-FASTSearchMetadataCrawledPropertyMapping -CrawledProperty $c -ManagedProperty $m

2. パイプライン拡張用のモジュールの作成

ファイルをダウンロードし、Visual Studio 2010 で必要に応じて変更して、コンパイル後に BuildPathtree.exe ファイルを FS4SP サーバー上の %FASTSEARCH%\bin ディレクトリにコピーします。
このモジュールは、url クロールされたプロパティを正規表現で ‘/’ 区切りの文字列 (例:aaa/bbb/ccc) に変換し、出力値 (pathtree クロールされたプロパティ) へコピーします。

3. 設定ファイルの変更

設定ファイル %FASTSEARCH%\etc\pipelineextensibility.xml を以下のように変更します。ファイルをダウンロードし、pipelineextensibility_pathtree.xml を pipelineextensibility.xml に上書きしても構いません。

<PipelineExtensibility>
<Run command=”BuildPathtree.exe %(input)s %(output)s”>
<Input>
<CrawledProperty propertySet=”11280615-f653-448f-8ed8-2915008789f2″ varType=”31″ propertyName=”url”/>
</Input>
<Output>
<CrawledProperty propertySet=”48385C54-CDFC-4E84-8117-C95B3CF8911C” varType=”31″ propertyName=”pathtree”/>
</Output>
</Run>
</PipelineExtensibility>

4. アイテム処理をリセットします

FS4SP サーバー上の FAST Search Server 2010 for SharePoint shell から以下のコマンドレットを実行します。

psctrl reset

5. ドキュメントを再クロールします

6. ツリー形式用 Web パーツをダウンロードし、インストールします

CodePlex から TreeView Refiner をダウンロードし、示された手順に従って SharePoint Server 2010 にインストールします。

Add-SPSolution C:\work\SearchWebParts.wsp
Install-SPSolution –Identity SearchWebParts.wsp –WebApplication http://<Web アプリケーション> -GACDeployment

7. 絞り込みパネルの変更をします

FAST Search センター サイト テンプレートで作成した SharePoint サイトの検索結果画面に配置されている「検索結果の絞り込みパネル」Web パーツの設定を次の通り変更します。

  • [既定の構成を使用する] のチェックを外す
  • [フィルター カテゴリの定義] の「<FilterCategories>」直後に、以下のような記述を追加します

Category    Title=”パス”    Description=”このアイテムののパス”    Type=”Microsoft.Office.Server.Search.WebControls.ManagedPropertyFilterGenerator”    MetadataThreshold=”1″    NumberOfFiltersToDisplay=”4″    MaxNumberOfFilters=”20″    ShowMoreLink=”True”    MappedProperty=”pathtree”    MoreLinkText=”表示数を増やす”    LessLinkText=”表示数を減らす”    ShowCounts=”Count” />

これで、以下のように「キーワード」絞り込みにタグクラウドで利用する情報が表示されるようになります。この形式での表示でもいい場合には、そのまま利用してください。

8. ツリー形式用 Web パーツを追加します

FAST Search センター サイト テンプレートで作成した SharePoint サイトの検索結果画面の適切な場所 (例: 「検索結果の絞り込みパネル」Web パーツの上) に、[Custom] カテゴリの [TreeRefiner] Web パーツを追加し、[その他] カテゴリの [ManagedMetadata] を「pathtree」に、[ManagedMetadataTitle] を「パス」に指定します。検索すると、検索結果にパスの情報がツリー形式で表示されます。

BuildPathtree

広告