FessでDropboxを高速に横断検索する


この記事では、全文検索サーバー Fessを利用してDropbox内のファイルを横断検索する方法を紹介します。

これはFess上で実際に検索を行っている画面のスクリーンショットです。

導入手順

FessでDropboxを横断検索するための手順を説明します。

導入の流れは次のようになります。

  1. プラグイン追加
  2. Fessの起動
  3. 認証設定
  4. 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の所有者