株式会社PFU 石本泰章
SharePointのサイトや検索センターで用意されている検索は、Googleやbingのような検索となっています。
そのため、検索したはいいけど検索結果がたくさんありすぎて、ほしい情報が簡単には手に入らない・・・、と感じられている方も多いかと思います。
この課題を解決してくれるのが、検索サービスアプリケーション(Search Service Application)の "管理プロパティ" を使用した絞り込み検索です。
オフィスアイ株式会社 山崎愛さんのブログでも管理プロパティでの絞り込み検索が紹介されていますが、管理プロパティを使うことでライブラリやリストに登録されたアイテムのタイトルやファイル名、新しく作成したサイト列といったプロパティで絞り込み検索ができます。
今回は、開発&検索で管理プロパティを使用するための管理プロパティの作成方法と作成の際に気をつけるポイントを説明したいと思います。
管理プロパティの作成
管理プロパティは、ライブラリやリストに追加されているサイト列がクロールされると自動で作成されますが、その管理プロパティを使用して検索するためには、「クロールされたプロパティ」が正しくマッピングされている必要があります。
ライブラリやリストの設定画面にて作成した列では、クロールされるとクロールされたプロパティは自動で作成されますが、管理プロパティは自動で作成されません。また、そのクロールされたプロパティはどの管理プロパティにもマッピングされていないため、ライブラリやリストの設定画面にて作成した列に対して管理プロパティを使用した検索を行うためには、管理プロパティを新規作成しクロールされたプロパティをマッピングする、または、既存の管理プロパティにクロールされたプロパティをマッピングする必要があるので、ご注意ください。
※管理プロパティとクロールされたプロパティの概要については、MicrosoftのTechNetに記載されていますので、ご参照ください。
今回は、以下の1行テキスト型、数値型、日付と時刻型、はい/いいえ型のサイト列と、それらのサイト列を追加したドキュメントライブラリ(DocLib)を使用して管理プロパティを作成してみます。
サイト列を作成する際に注意したいのは、列名は最初に『アルファベット(英語)』で作成するということです。
最初にサイト列名を日本語で作成してしまうと、SharePointが内部で管理する名称(内部列名)が16進数に変換されてしまい、あとで利用する際のサイト列の指定が複雑になってしまいます。また、SharePoint 2010環境では、サイト列を日本語で作成すると、「クロールされたプロパティ」と「管理プロパティ」の両方が16進数に変換されて作成されてしまい、どの管理プロパティなのか見分けがつかなくなります。
従って日本語の列名を作成する場合は、一旦列名をアルファベット(英語)で作成し、クロール処理後に列名を日本語に修正することを強く推奨します。
リストまたはライブラリに作成したサイト列を追加してから、そのサイト列に値を入れてアイテムがクロールされると、そのサイト列に紐付いた「クロールされたプロパティ」と「管理プロパティ」が作成されます。クロールの実行時に、対象のサイト列に値が登録されていないとクロール対象とならないため、何らかの値を登録しておく必要があるのでご注意ください。
「クロールされたプロパティ」と「管理プロパティ」は、サーバーの全体管理のSearch Service Application管理画面にアクセスし、サイドメニューの[検索スキーマ]から確認できます。
まずは、クロールされたプロパティを確認してみましょう。
各サイト列のクロールされたプロパティが自動で作成されていますが、「ows_q_XXX_プロパティ名」と「ows_プロパティ名」の2種類作成されており、既定では「ows_q_XXX_プロパティ名」の方が管理プロパティにマッピングされています。
次に、管理プロパティを確認します。
管理プロパティも自動で作成されており、マッピングされているクロールされたプロパティも「ows_q_XXX_プロパティ名」となっています。
「クロールされたプロパティ」と「管理プロパティ」の両方ともが作成されており、管理プロパティにはクロールされたプロパティもマッピングされているため、めでたし、めでたし~、と言いたいところですが、このままの設定では管理プロパティを使って正確な検索をすることはできません。
よく見ると、自動で作成された管理プロパティの種類がすべてテキストになっています。
NumBox、DateBoxは、管理プロパティの種類がテキストだと検索時に比較演算子(">"など)を使用することがきません。
(例)比較演算子を使用した検索結果
また、マッピングされたクロールされたプロパティが「ows_q_XXX_プロパティ名」だと検索結果が表示されないなどの問題が生じることがあります。
(例)ows_q_XXX_プロパティ名がマップされていると数値型での検索ができない
そのため、自動で作成された管理プロパティは使用せず(または削除して)、「ows_プロパティ名」のクロールされたプロパティをマッピングした管理プロパティを新たに作成します。
新たに作成する管理プロパティの名前には日本語を使用することも可能ですし、プロパティ名の後ろにOWSTEXTなどと付ける必要性は必ずしもありませんので、わかりやすい名前をつけることをお勧めします。
では、管理プロパティを新たに作成し、クロールされたプロパティをマッピングしてみましょう。
★事前準備★
新たに管理プロパティを作成する前に、それぞれの管理プロパティの設定をメモしておいてください。
管理プロパティの設定は、管理プロパティ確認画面のプロパティ名をクリックすることで確認できます。
-
サーバーの全体管理のSearch Service Application管理画面にアクセスし、サイドメニューの[検索スキーマ]をクリックします。
-
設定が終了したら、画面下の[OK]ボタンをクリックして、設定を保存します。
-
すべての管理プロパティの作成が終了したら、フルクロールを実行します。
フルクロールが終わったら管理プロパティの作成は完了です。
今回は、以下の管理プロパティを新たに作成しました。
管理プロパティを使用した検索
では、作成した管理プロパティで検索してみましょう。DocLibライブラリのデータを使用して検索を行います。
※検索で使用する構文については、Microsoftのデベロッパーセンターのサイトに詳しく記載されていますので、参考にしてみてください
まずは、TextBoxですが、期待通り、管理プロパティを使用して検索することができました!
次に、NumBoxですが、こちらも管理プロパティを使用して検索することができました!
比較演算子">"を使用しても検索することができます。
次に、YesNoBoxですが、こちらも管理プロパティを使用して検索することができました!
検索時には、Yesが"1"、Noが"0"であることに注意してください。
最後に、DateBoxはというと、日付型を扱う際には注意が必要です。
データとして登録されている日付はUTCから換算して-9時間されており、それをそのまま検索しているようなので、キーワードに指定した日付より1日後のアイテムが検索結果として表示されてしまいます。
(参考)DateBoxに以下のような日付と時刻を登録した検索結果
“2015/6/10”をキーワードにした検索では、DateBoxが”2015/6/10 9:00”のもののみ検索結果として表示され、“2015/6/9”をキーワードにした検索では、DateBoxが”2015/6/10 8:59”のもののみ検索結果として表示されました。
まとめ
今回は、開発&検索で使える管理プロパティの作成方法と、以下の4つの気を付けるポイントについて記載しました。
・サイト列は英語で作成し、クロールされたプロパティが作成された後に日本語に変更する。
・自動で作成される管理プロパティの種類はテキストになってしまうので、それぞれの種類にあわせた管理プロパティを新たに作成する。
・管理プロパティには、"ows_プロパティ名"の「クロールされたプロパティ」をマッピングする。
・日付型の管理プロパティでの検索ではUTC換算されるので、正しい結果が表示されない。
SharePointはライブラリやリストといったデータを格納する箱としては充実していますが、検索となると使いづらいこともあります。
今回のように管理プロパティを活用し、ライブラリやリストのデータに対し、ピンポイントで検索できると、検索時間の短縮やデータの利活用にもつながるのではないでしょうか。
このTipsがみなさまの課題解決につながれば幸いです。
今回は以上です。
-----
弊社(株式会社PFU)では、自社で培ったSharePoint&文書管理のノウハウと、SharePoint向けアドオンソリューション「ドキュメントソリューション for SharePoint」で、紙文書・電子データの積極的活用を実現するお手伝いをしています。ご興味のある方は、こちらからお問い合わせ下さい。
株式会社PFU)石本泰章
© PFU LIMITED 2015
Microsoft、Windows、SharePoint、Excel、Word、PowerPoint、Outlookは、米国Microsoft Corporationの、米国、日本およびその他の国における登録商標または商標です。
記載された会社名および製品名は各社の商標または登録商標です。