はじめに
前回は既存の Web サイトに Fess の検索機能を組み込む方法を紹介しました。 しかし実際の企業環境では、情報は Web サイトだけでなく、ファイルサーバーやクラウドストレージなど様々な場所に散在しています。
本記事では、複数のデータソースを Fess に統合し、利用者が一つの検索窓からすべてのドキュメントを横断検索できる環境を構築します。
対象読者
社内のドキュメントが複数の場所に分散している方
ファイルサーバーやクラウドストレージの検索に不満がある方
第2回の手順で Fess が起動済みであること
シナリオ
ある中規模企業を想定します。この企業では、以下の場所にドキュメントが散在しています。
社内 Web サイト: 社内ポータル、社内ブログ
ファイルサーバー: 部門ごとの共有フォルダ(SMB/CIFS)
ローカルファイル: サーバー上の特定ディレクトリ
社員は「あの資料どこだっけ?」と思ったとき、それぞれのツールを個別に検索しなければなりません。 これを Fess で一元化し、一つの検索窓から横断検索できるようにします。
データソースの設計
横断検索を構築する際、最初に重要なのは「何をどのように検索対象にするか」の設計です。
検索対象の整理
まず、検索対象にするデータソースを整理します。
| データソース | 種類 | 規模の目安 | 更新頻度 |
|---|---|---|---|
| 社内ポータル | ウェブクロール | 数百ページ | 週次 |
| 技術ブログ | ウェブクロール | 数十〜数百ページ | 不定期 |
| 共有フォルダ | ファイルクロール | 数万ファイル | 日次 |
| アーカイブ | ファイルクロール | 数千ファイル | 月次 |
ラベルによる分類設計
Fess の「ラベル」機能を使うと、検索対象をカテゴリ分けできます。 利用者は検索時にラベルを選択して、特定のカテゴリに絞り込んで検索できます。
今回のシナリオでは、以下のラベルを設定します。
ポータル: 社内ポータル・ブログの情報
共有ファイル: ファイルサーバーのドキュメント
アーカイブ: 過去の資料
ラベルの設定
管理画面の [クローラー] > [ラベル] を選択
[新規作成] でラベルを作成
各ラベルに「名前」と「値」を設定します。 値は英数字で設定し、クロール設定と紐づけるために使用します。
クロール設定の構築
Web クロールの設定
社内ポータルのクロール設定です。
[クローラー] > [ウェブ] > [新規作成]
以下を設定
URL:
https://portal.example.com/クロール対象とする URL:
https://portal.example.com/.*クロール対象から除外するURL:
https://portal.example.com/admin/.*最大アクセス数:
500スレッド数:
3間隔:
5000ラベル: ポータル
[作成] をクリック
除外 URL を設定することで、管理画面など検索対象にしたくないページを除外できます。
ファイルクロールの設定
共有フォルダのクロール設定です。
[クローラー] > [ファイルシステム] > [新規作成]
以下を設定
パス:
smb://fileserver.example.com/shared/クロール対象とするパス:
smb://fileserver.example.com/shared/.*クロール対象から除外するパス:
.*\\.tmp$最大アクセス数:
10000スレッド数:
5間隔:
1000ラベル: 共有ファイル
[作成] をクリック
SMB 認証の設定
認証が必要なファイルサーバーの場合、ファイル認証の設定が必要です。
[クローラー] > [ファイル認証] > [新規作成]
以下を設定
ホスト名:
fileserver.example.comスキーム:
Sambaユーザー名: サービスアカウントのユーザー名
パスワード: サービスアカウントのパスワード
[作成] をクリック
ローカルファイルのクロール
サーバー上の特定ディレクトリをクロールする場合は、ファイルパスを直接指定します。
[クローラー] > [ファイルシステム] > [新規作成]
以下を設定
パス:
file:///data/archive/クロール対象とするパス:
file:///data/archive/.*クロール対象から除外するパス:
.*\\.(log|bak)$最大アクセス数:
5000ラベル: アーカイブ
[作成] をクリック
クロールスケジュールの設計
複数のデータソースをクロールする場合、スケジュール設計が重要になります。 すべてのクロールを同時に実行すると、サーバーリソースに負荷がかかり、対象サーバーへの負荷も大きくなります。
スケジュールの分散
データソースの更新頻度に応じて、クロールスケジュールを分散させます。
| データソース | 実行タイミング | 理由 |
|---|---|---|
| 社内ポータル | 毎日 2:00 | ページ数が少ないため短時間で完了 |
| 共有フォルダ | 毎日 3:00 | ファイル数が多いため夜間に実行 |
| アーカイブ | 毎週日曜 4:00 | 更新頻度が低いため週次で十分 |
スケジューラの設定
管理画面の [システム] > [スケジューラ] から、クロールジョブの実行タイミングを設定できます。 デフォルトの「Default Crawler」ジョブは、すべてのクロール設定を一括で実行します。
パスマッピングで検索結果を使いやすく
クロールした URL やファイルパスが、利用者にとって分かりにくい場合があります。 パスマッピングを使うと、検索結果に表示される URL を変換できます。
設定例
ファイルサーバーのパスを、利用者がブラウザでアクセスできる URL に変換します。
[クローラー] > [パスマッピング] > [新規作成]
以下を設定
正規表現:
smb://fileserver.example.com/shared/(.*)置換:
https://fileserver.example.com/shared/$1
これにより、検索結果のリンクをクリックすると、ブラウザで直接ファイルにアクセスできるようになります。
横断検索の活用
ラベルを使った絞り込み検索
クロールが完了したら、検索画面で横断検索を体験しましょう。
検索画面では、ラベルのタブやプルダウンが表示されます。 利用者は「すべて」を選べば横断検索、特定のラベルを選べばそのカテゴリに限定した検索が可能です。
例えば、「プロジェクト計画」と検索すると、ポータルの記事、共有フォルダの Word ファイル、アーカイブの PDF が混在した検索結果が返されます。 「共有ファイル」ラベルで絞り込めば、ファイルサーバー内のドキュメントだけに限定できます。
検索結果の並び順
デフォルトでは、検索キーワードとの関連度(スコア)順に並びます。 データソースの種類に関係なく、最も関連性の高いドキュメントが上位に表示されます。
まとめ
本記事では、複数のデータソースを Fess で統合し、横断検索環境を構築しました。
ウェブサイト、ファイルサーバー、ローカルファイルの3種類のクロール設定
ラベルによるカテゴリ分類と絞り込み検索
クロールスケジュールの分散設計
パスマッピングによる URL 変換
横断検索の導入により、「どこに保存されているか」を意識することなく、必要な情報を見つけられるようになります。
次回は、部門ごとの権限に応じて検索結果を制御するロールベース検索の設計を扱います。