ひとの検索で期待する検索結果が得られない

みなさんこんにちは。
SharePoint サポートチームの荒川です。

前回に引き続き、検索に関する情報を共有します。

[現象]
SharePoint 2010 において、ひとの検索で期待する検索結果が得られない。例えば、「本店営業部」を検索してもヒットしない。「業」で検索すると何故かヒットするが、「営業」ではヒットしない。

[原因]
この現象は、SharePoint 2010 で新たに実装されたクロール時のワード ブレーカーの自動検出機能の影響により発生します。

[解説]
MOSS 2007 以前のバージョンでは、コンテンツに含まれるデータや、インデックス サーバーの OS のシステム ロケールに従ってコンテンツのクロール時に使用されるワード ブレーカーを選択していました。

(※検索におけるワードブ レーカーの自動選択の動作については以前にこちらの記事で詳しく解説していますので、興味がある方はご参照ください。) 

SharePoint 2010 では、新たにコンテンツの内容から自動的に適切なワード  ブレーカーを検出する機能が備わっており、多言語環境でも精度が高い検索結果が得られるよう工夫されています。

しかし、日本語などの2バイト文字圏の言語において、人名や部署名など、情報源となる文字情報が少ない状況では、コンピュータによる自動判別が難しい状況があります。このような状況で、誤ったワード ブレーカーが選択されることがあり、結果として正しい検索結果が得られない状況が発生します。

たとえば、今回の例 (本店営業部) に示す状況において、検索コンポーネントのデバッグ用ツール (残念ながら外部公開していません。) を用いて内部動作をトレースすると、「本店営業部」というキーワードに対する自動検出機能の結果として、LCID 1028 中国語 (台湾) のワード ブレーカーが誤って検出されていることが確認できます。この場合「本店営業部」という文字列は、「本」,「店」,「営」,「業」,「部」という形でワード ブレークされます。
 

 
これに対し、検索時に使用されるブラウザの優先する言語設定が日本語であった場合、検索クエリに使用されるワード ブレーカーは LCID 1041 日本語ワードブレーカーとなり、日本語ワード ブレーカーでは「本店営業部」という文字列は、「本店」,「営業」,「部」という形でワード ブレークされます。
 

 
この結果、検索インデックスには「本店」や「営業」といった形でトークン化されたデータが存在しませんので、日本語環境のユーザーが実行した「本店営業部」に対する検索クエリは結果を返さないことになります。この場合、ブラウザの優先される言語設定を「中国語 (台湾)」に変更すれば「本店営業部」に対する検索クエリが成功します。

[対処方法]
SharePoint 2010 のワード ブレーカの自動検出機能は、以下の方法により無効にすることが可能です。

本対処によりクロール時のワード ブレーカの選択動作は、MOSS 2007 の時と同様になりますが、最初から特定の言語圏での利用を想定していて、多言語環境で利用する状況が少なく、特定のコンテンツに複数の言語が混在することが少ない環境であれば、運用への大きな悪影響はないと考えられますので、検証で様子を見て採用を判断するとよいでしょう。特に旧バージョンからの移行を行われる場合、検索結果が以前のバージョンと変わってしまう影響をできる限り排除する点でも効果的な設定となります。

1) クロール コンポーネントを実行する検索サーバーに管理者権限でログオンして、レジストリ エディタを起動します。
2) 以下の 2 つのレジストリ キーの値をそれぞれ変更します。

   パス:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\14.0\Search\Global\Gathering Manager

   キー:EnableLanguageDetection14
   変更前の値:1
   変更後の値:0

   キー:EnableLanguageDetectionPerChunk14
   変更前の値:1
   変更後の値:0

3) 対象のサーバーで OS のサービスコンソールを開き、[SharePoint Server Search 14] サービスを再起動します。
4) コンテンツのフル クロールを行いインデックスを更新します。

タイトル:SharePoint 2010: People search does not return expected results in Japanese version
URL      :https://support.microsoft.com/kb/2723923

 
 
[まとめ]
SharePoint 2010 のワード ブレーカの自動検出機能は多言語環境では効果的な機能となりますが、日本語などの2バイト文字圏では条件によっては誤って検出されることがありますので、必要に応じてオフにしていただくことをお勧めします。