鍋綿ブログ

C#・SharePoint・SharePoint Framework・Office365を中心に扱うブログです。

SharePointの検索機能が使いづらい?精度が悪い?その理由と解決策を考えてみた

SharePoint Onlineの検索機能についてお困りの方が多いようです。
「精度が悪い」「ヒットしない」「使えない」などあまり良く言われていない場面が目立ちます。
その理由について、今まで聞いた事例を総合して考えてみました。
また、自分が検索機能を構築する時に気を付けていることをまとめました。

一見使いづらく見えるSharePointの検索機能も、気を付けて構築すればちゃんと使えるということをアピールできれば幸いです。

 

なぜ悪く言われてしまうのか

今回は、サンプルとしてこのようなサイトを用意しました。
ちなみにこのサイトはSharePointとExcelの連携という記事で紹介した仕組みを使って構築しています。興味があればどうぞ。

f:id:micknabewata:20181020094059j:plain

サンプルとして用意した申請サイト

画像に映っている「標準検索」リンクは、「エンタープライズ検索センター」のテンプレートを使って作成した初期状態の検索サイトです。

f:id:micknabewata:20181020094312j:plain

初期状態のエンタープライズ検索センターサイト

あー。。うん。これは酷い。

初期状態では検索範囲がテナント全体の全ファイル・ページである

今回の例では、「申請サイト」の検索を行うために検索サイトを構築しています。
テナント全体を検索したいニーズよりも、
あるサイトだけ検索したいニーズのほうが多いのではないでしょうか。
もっと言えば「申請書」だけ検索したいのにサイトのホームページとかが検索にヒットしてもしょうがないというケースが多いはずです。
そういったケースでは、初期状態を見ても待てコラ。としか思わないでしょうね。

この問題は「検索対象をクエリで絞る」の項で解決策を提示します。

用途が分かりづらいボタンやリンクがある

「すべて」「ひと」「会話」「ビデオ」ってなんやねん。
言語の切り替え要るんかい。
など突っ込みどころの多いUIも使いづらく感じることの一因かと。

この問題は「Webパーツのプロパティを変更して余計なボタンを消す」の項で解決策を提示します。

期待した結果が得られない

検索キーワードから期待した結果が得られないことも一因です。
例えば初期状態の検索サイトで、「経費」を検索するとしっかり結果が得られます。
ここまではOK。

f:id:micknabewata:20181020100308j:plain

「経費」なら期待通りヒットした

では「経」なら?

f:id:micknabewata:20181020100453j:plain

単語単位で検索しないとヒットしない

ふぁっきんな結果だと思いますか?
SharePointの検索機能では、テナント上のコンテンツに直接アクセスして検索したりはしていません。
コンテンツを一定間隔でクロールし、検索インデックスを作り上げてそれを参照しています。
一般的な業務システムの検索ではなくGoogle検索に近い。
これも使いづらいと感じる方が多いようです。

この問題に関しては慣れろとしか言えません。
意味のある単語で検索するようにしましょう。

どう解決するか

ディスりはこのくらいにして、私が普段実施している対策を紹介します。

検索対象をクエリで絞る

検索結果ページで、右上歯車 > ページの編集 をクリックします。

f:id:micknabewata:20181020101646j:plain

まずはページの編集をしよう

検索結果Webパーツを編集します。

f:id:micknabewata:20181020101810j:plain

検索結果Webパーツの編集

クエリの変更をクリックします。

f:id:micknabewata:20181020101940j:plain

クエリの変更

これが初期状態のクエリです。
テナント全体を無条件で検索しています。

f:id:micknabewata:20181020102114j:plain

検索クエリの設定画面

ここから目的のものだけを検索するようにクエリを書き換えていきます。
キーワードフィルターで「アイテムのみを返す」を追加してみたり、
プロパティフィルターの追加で結果を絞り込んだりといった具合です。
クエリを書いたら「テストクエリ」ボタンで結果をテストします。
今回のサンプルではこのようなクエリにしました。

f:id:micknabewata:20181020102527j:plain

コンテンツタイプで結果を絞る例

初期状態では、ファイルだけでなくホームページやらリストやらライブラリやらといった全部の階層が表示されてしまっていたのですが、シンプルなクエリで余計なものを取り除くことができました。

この例で使ったコンテンツタイプは、申請書ライブラリ専用に追加したカスタムのコンテンツタイプです。
検索しやすくなるので、リストやライブラリを追加する際にはコンテンツタイプも専用の物を作成しておくようにしています。

Webパーツのプロパティを変更して余計なボタンを消す

同様にページに配置されているWebパーツを編集して、
使わない機能を消していきます。お勧めの設定は以下です。

 ・検索ナビゲーションWebパーツ

   - レイアウト

     - 非表示:オン

 ・検索結果Webパーツ

   - 検索結果のプロパティ

     - 設定

       高度な検索を表示する:オフ

       言語ドロップダウンを表示する:オフ

       ユーザー設定リンクを表示する:オフ

絞り込みを活用する

絞り込みWebパーツを編集して、検索結果を絞り込むための機能を付けていきます。
「絞り込み条件の選択」ボタンをクリックします。

f:id:micknabewata:20181020103835j:plain

絞り込み条件の選択

余計なものを消して必要なものを追加します。
今回のサンプルではこうしました。

f:id:micknabewata:20181020104025j:plain

RefinableString00だけにした

各設定値は触ってみれば理解できると思いますが、絞り込み条件として何を選択すれば良いのかについてはやや難易度が高いです。

ここで利用できる条件は、SharePointがクロールして作り上げる「管理プロパティ」のうち「絞り込み可能」であるものです。

「管理プロパティ」やリストやライブラリの列に対応するもので、クロールによって自動作成されます。
但し自動作成される管理プロパティは「絞り込み不可能」な状態で作成されますので、予め用意されている「絞り込み可能」な管理プロパティへのマッピングが必要です。

解決策を実行した結果

ここまでに紹介した解決策をすべて実行すると以下のようなサイトが構築できます。

f:id:micknabewata:20181020105158j:plain

頑張って設定した検索サイトなら使える!

・全検索しても申請書しか当たらない。(余計なものが出ない)
・申請の種別で絞り込める。
・ファイル内の全文検索ももちろん出来る

という「ちゃんと使える検索サイト」が構築できました。

[まとめ]検索サイト構築のベストプラクティス

  • 使わない機能はWebパーツの設定で消す
  • 検索クエリを設定して必要なものだけ検索されるようにする
  • 絞り込みを活用する
  • 検索対象となるリストやライブラリに専用のコンテンツタイプを適用する

このあたりが普段から私が気を付けていることになります。

[番外編]表示テンプレートの開発

SharePointの検索サイトに独自の機能を追加したりレイアウトを変えたい場合には、
「表示テンプレート」を開発するという方法があります。
HTML / CSS / JavaScriptのスキルに加えて、
SharePointの「管理プロパティ」と「クロールされたプロパティ」を
使いこなす必要がありますが、自由度は高いです。

ちなみに私自身は実装の経験もありますが最近はお勧めしていません。
理由はこの先モダン表示の仕組みに駆逐されそうだからです。
(特に根拠があるわけではないですがなんとなくね。)

f:id:micknabewata:20181020110740j:plain

カスタマイズできる箇所

表示テンプレートでカスタマイズできる個所は上記画像の1~3です。
ここでは詳説しませんが興味あれば「SharePoint 表示テンプレート」でググってみてください。

 1:絞り込みパネルの表示

 2:検索結果の表示

 3:プレビューの表示

 

以上、参考になれば幸いです。