この記事では、全文検索サーバー Fessを利用してBOX内のファイルを横断検索する方法を紹介します。
これはFess上で実際に検索を行っている画面のスクリーンショットです。

導入手順
FessでBOXを横断検索するための手順を説明します。
導入の流れは次のようになります。
- プラグイン追加
 - Fessの起動
 - 認証設定
 - Fessの設定・クローラ実行
 
1. プラグイン追加
Fessの現バージョン(13.1.0)には、デフォルトでは含まれていない機能であるため、自分で追加する必要があります。
ここからfess-ds-box-xx.x.x.jarをダウンロードします。
ダウンロードしたjarファイルは$FESS_HOME/app/WEB-INF/lib/に配置します。
2. Fessの起動
このページを参考にFessを起動します。
3. 認証設定
データを取得するためには、認証情報をパラメータとして与える必要があるので、そのための設定をします。
JWTアプリケーションの設定を参考にアプリケーションの作成と承認を行います。
入手したconfig.jsonは後で利用します。
4. Fessの設定・クローラ実行
Boxをクロールするための設定をします。
公式ドキュメントのデータストアクロールも参考にしてください。
4-1. クローラの設定
Fessの管理画面を開き、[クローラ] > [データストア]と移動し、新規作成をします。
新規作成画面では、
- 名前
 - ハンドラ
 - パラメータ
 - スクリプト
 
の4項目を設定して、作成を完了します。
「名前」には好きな文字列を入力してください。
「ハンドラ」はBoxを選択してください。
「パラメータ」は次のようなフォーマットで入力してください。
client_id=hdf*****************************
client_secret=kMN**************************
public_key_id=4t******
private_key=-----BEGIN ENCRYPTED PRIVATE KEY-----\nMIIFDj...=\n-----END ENCRYPTED PRIVATE KEY-----\n
passphrase=7ba*****************************
enterprise_id=19*******
キーと値は3. で入手したconfig.jsonのものと対応しています。
「スクリプト」は次のようなフォーマットで入力してください。
url=file.url
title=file.name
content=file.contents
mimetype=file.mimetype
filetype=file.filetype
filename=file.name
content_length=file.size
created=file.created_at
last_modified=file.modified_at
取得出来る値のキーと値の説明は次のようになります。
ここで言う「File」はBoxの1ファイルを指しています。
| キー | 値 | 
|---|---|
| file.url | Fileを閲覧するリンク | 
| file.contents | Fileの中身(テキスト) | 
| file.mimetype | FileのMIMEタイプ | 
| file.filetype | Fileの種類 | 
| file.name | Fileの名前 | 
| file.description | Fileの説明 | 
| file.size | Fileのサイズ | 
| file.created_at | Fileの作成日時 | 
| file.last_modified_at | Fileの最終編集日時 | 
| file.download_url | Fileのダウンロード可能なリンク | 
他にも、ファイルオブジェクトのフィールドに対応しています。
4-2. ジョブスケジューラの作成
4-1. で作成したクロールをクリックすると、クロール設定が開き、そこから「新しいジョブの作成」をします。
後からでも変更はできるので、とりあえず試す場合はそのままの設定で大丈夫です。
詳しい設定については、スケジューラを参考にしてください。
4-3. クローラの実行
[システム] > [スケジューラ]と移動し、4-3で作成したジョブを開きます。
その画面から、「今すぐ開始」をします。
状態が「実行中」から「有効」になるまで待ちます。
4-4. 検索のテスト
検索フォームから適当に検索してみます。

