TOP業務システム> 「Googleアプライアンス」による全文検索
社内SNS構築事例
Know HowからKnow Whoへ 〜社内SNS構築指南

第3回:Ajax、Googleアプライアンス、アジャイル、Ruby on Railsを採用した理由

著者:TIS  倉貫 義人   2007/4/24
前のページ  1  2  3  次のページ
「Googleアプライアンス」による全文検索

   TISの社内SNSでは全文検索エンジンとして、Googleが販売しているアプライアンス製品「Google Mini」を採用しています。社内SNSでは、社員同士のコミュニケーションに含まれるナレッジを蓄積し、取り出すことを目的としており、その実現には全文検索による情報の取得が必須なのです。

   通常の検索ではなく、全文検索が必須と考えた理由として下記の2つがあります。
  • 利用者の負担を軽減
  • 社内のほかのシステムとの連携

表2:全文検索が必須である理由


利用者の負担を軽減

   全文検索では、調べたいキーワードを検索すると人気のコンテンツ順に表示されるため、利用者の負担を軽減できます。これが1つ目の理由です。利用者の負担を少なくすることは、社内SNSを活性化させるための重要な要素となります。

   特にTISの社内SNSの場合、ユーザのプロフィールやブログ以外に、共有ファイルやソーシャルブックマーク、グループなどといった様々な種類のデータを取り扱うことになります。

   通常の検索機能の場合、データベース内のテーブルに保存してるので、様々なデータを検索するにはそれぞれについて個別に検索機能が必要です。例えば、ブログであればブログだけ、ユーザであればユーザだけを対象とするような検索機能になります。

   そのようなターゲットをしぼった検索であれば問題はないのですが、ある特定のキーワードに関連する情報をすべて抜き出そうとした場合、それぞれのカテゴリごとに検索をする必要があり、非常に手間のかかる作業となります。また通常の検索機能であれば、表示順も検索者自身で選ばなければいけません。


社内のほかのシステムとの連携

   「第1回:SNSによる社内情報共有の可能性」でも解説したように、TISの社内SNSはポータル機能を持っています。そのため、社内SNSだけでなくほかのシステムと連携して検索できる機能が必要だと考えたのが2つ目の理由です。

   社内SNS以外の社内システムを含めた横断的な検索をするための手段としては、キーワードによって情報を引き出すことが可能な全文検索が向いています。

   いくら社内システムであるとはいえ、ブログ機能を提供していれば、情報が玉石混淆の状態になることは免れません。また「誰にとってどんな情報が重要であるか」という点は、探している本人にしかわからないものです。情報を求めている本人が、キーワードだけで検索できるということはとても重要なのです。


Google Miniの実力

   全文検索の実現のために採用した「Google Mini」は、インターネットのGoogleと同じ品質の検索エンジンを企業内のイントラネットで使える検索アプライアンスです。アプライアンスとは、ハードウェアとソフトウェアをセットにした専用機のことです。

   「Google Mini」は、その基本的な動作原理としてGoogleと同じものを使っています。一定タイミングごとに指定されたサイトに対して、クロールという処理を行い、自身の中にインデックス情報を構築します。そして、検索のリクエストがあった時点で、インデックスをもとに検索を行い結果を返します(図5)。

Google Miniの検索の仕組み
図5:Google Miniの検索の仕組み

   アプライアンスであるため、OSのインストールなどが不要で、設定も容易で簡単に導入することが可能です。この点が採用の決め手となりました。しかし、社内SNSで活用するためにはいくつか工夫が必要です。


社内SNSで使うための工夫

   まず社内SNSで全文検索の機能を提供する際に忘れてはならない点は、社内の情報には閲覧者に応じて、見ることができる情報とできない情報があるということです。例えば、プロジェクト外秘という資料が全文検索で見つかっても、閲覧者によっては見えてはいけないのです。

   そこで、全文検索の機能を提供するとともに、閲覧権限に応じた情報のフィルタを提供する必要があります。

   TISでは、全文検索の機能を利用する際に必ず社内SNSのWebのインタフェースを介して利用するという方式を採用しました。利用者は直接「Google Mini」のサーバにアクセスすることはなく、社内SNSのWebサーバから、WebAPIを通じて全文検索を呼び出すようにしました。そして社内SNSの処理の中で閲覧権限に応じたフィルタをかけて検索結果を表示しています。

Google Miniを使ったシステム構成
図6:Google Miniを使ったシステム構成

   また社内SNSは、コンテンツ管理システムの一種であるため、ユーザからのリクエストに応じて動的にページが生成されます。しかも、その利用者に応じてページ内容が変化します。そのため「Google Mini」のクロールの仕組みをそのまま使うことができません。

   そこで、社内SNSのWebとは別の領域に、Googleのクロール用の静的なHTMLをプログラムで出力しておき、「Google Mini」にはそのキャッシュの情報をクロールさせるようにしました。またキャッシュに出力する際に、HTMLに対してメタデータとして公開範囲を持たせるようにしておきます。この仕組みによって「Google Mini」はキャッシュ情報をあたかも社内SNSと認識したかのようにクローリングし、メタデータを含む形でインデックス化してくれます。

   出力する段階では、キャッシュのHTMLに含まれるメタデータの情報を基に閲覧権限のフィルタをかけ、キャッシュ用に変換していたHTML間のリンクを正しいURLにマッピングし直します。このような流れにすることで利用者に対して全文検索を行ったように見せることができるのです。

Google Miniを活用した検索の流れ
図7:Google Miniを活用した検索の流れ
(画像をクリックすると別ウィンドウに拡大図を表示します)

前のページ  1  2  3  次のページ


TIS株式会社 倉貫 義人
著者プロフィール
TIS株式会社  倉貫 義人
基盤技術センター所属。社内の技術支援をするかたわら、社内SNS構築のプロジェクトマネージャ兼メインプログラマとして従事している。一方で、eXtreme Programmingというアジャイル開発の研究・実践を行い、XP日本ユーザグループの代表もつとめている。

情報共有ソーシャルウェア/社内SNS「SKIP」
http://www.skipaas.jp/
XP日本ユーザグループ
http://www.xpjug.org/


INDEX
第3回:Ajax、Googleアプライアンス、アジャイル、Ruby on Railsを採用した理由
  社内SNS構築で活用した技術要素
「Googleアプライアンス」による全文検索
  「アジャイル」と「Ruby on Rails」による高い保守性