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

導入手順
FessでDropboxを横断検索するための手順を説明します。
導入の流れは次のようになります。
- プラグイン追加
 - Fessの起動
 - 認証設定
 - Fessの設定・クローラ実行
 
1. プラグイン追加
Fessの現バージョン(13.1.0)には、デフォルトでは含まれていない機能であるため、自分で追加する必要があります。
ここからfess-ds-dropbox-xx.x.x.jarをダウンロードします。
ダウンロードしたjarファイルは$FESS_HOME/app/WEB-INF/lib/に配置します。
2. Fessの起動
このページを参考にFessを起動します。
3. 認証設定
データを取得するためには、認証情報をパラメータとして与える必要があるので、そのための設定をします。
App Consoleでアプリケーションの作成を行います。
そして、アクセストークン(access_token)をGenerateしておきます。
4. Fessの設定・クローラ実行
Dropboxをクロールするための設定をします。
公式ドキュメントのデータストアクロールも参考にしてください。
4-1. クローラの設定
Fessの管理画面を開き、[クローラ] > [データストア]と移動し、新規作成をします。
新規作成画面では、
- 名前
 - ハンドラ
 - パラメータ
 - スクリプト
 
の4項目を設定して、作成を完了します。
「名前」には好きな文字列を入力してください。
「ハンドラ」はDropboxを選択してください。
「パラメータ」は次のようなフォーマットで入力してください。
access_token=**********
access_tokenは、3.で取得したものです。
「スクリプト」は次のようなフォーマットで入力してください。
url=file.url
title=file.name
content=file.contents
mimetype=file.mimetype
filetype=file.filetype
filename=file.name
content_length=file.size
last_modified=file.client_modified
取得出来る値のキーと値の説明は次のようになります。
ここで言う「File」はDropboxの1ファイルを指しています。
| キー | 値 | 
|---|---|
| file.url | Fileを閲覧するリンク | 
| file.contents | Fileの中身(テキスト) | 
| file.mimetype | FileのMIMEタイプ | 
| file.filetype | Fileの種類 | 
| file.name | Fileの名前 | 
| file.size | Fileのサイズ | 
| file.client_modified | Fileの最終編集日時(ローカル) | 
| file.server_modified | Fileの最終編集日時(Dropbox上) | 
4-2. ジョブスケジューラの作成
4-1. で作成したクロールをクリックすると、クロール設定が開き、そこから「新しいジョブの作成」をします。
後からでも変更はできるので、とりあえず試す場合はそのままの設定で大丈夫です。
詳しい設定については、スケジューラを参考にしてください。
4-3. クローラの実行
[システム] > [スケジューラ]と移動し、4-3で作成したジョブを開きます。
その画面から、「今すぐ開始」をします。
状態が「実行中」から「有効」になるまで待ちます。
4-4. 検索のテスト
アクセス権限の設定
「パラメータ」を
default_permissions={role}admin
「スクリプト」を
role=file.roles
のように設定すると、
あるファイルについて、RoleがadminであるFessユーザーもしくはDropbox上でアクセス権限を持つFessユーザーのみ、検索結果に表示させることができます。
「Dropbox上でアクセス権限を持つFessユーザー」とは、ユーザー名がDropbox上でそのファイルにアクセス権限を持つユーザーのメールアドレスと一致しているFessユーザーのことを指しています。
Dropbox Paperの検索
「ハンドラ」でDropboxPaperを選択すると、Dropbox Paperの文書をクロールすることができます。
その際、
「パラメータ」は
access_token=**********
「スクリプト」は
title=paper.title
content=paper.contents
url=paper.url
mimetype=paper.mimetype
filetype=paper.filetype
role=paper.roles
というフォーマットで入力します。
スクリプトで取得出来る値のキーと値の説明は次のようになります。
ここで言う「Paper」はDropboxの1ファイルを指しています。
| キー | 値 | 
|---|---|
| paper.url | Paperを閲覧するリンク | 
| paper.contents | Paperの中身(テキスト) | 
| paper.mimetype | PaperのMIMEタイプ | 
| paper.filetype | Paperの種類 | 
| paper.title | Paperのタイトル | 
| paper.owner | Paperの所有者 | 
