5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-12-12

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

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

なお、この機能の利用には一般法人向けのOffice365が必要となります。

導入手順

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

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

  1. プラグイン追加
  2. Fessの起動
  3. 認証設定
  4. Fessの設定・クローラ実行

1. プラグイン追加

Fessの現バージョン(12.4.0)には、デフォルトでは含まれていない機能であるため、自分で追加する必要があります。

ここからfess-ds-office365-12.2.0.jarをダウンロードします。
ダウンロードしたjarファイルは$FESS_HOME/app/WEB-INF/lib/に配置します。

2. Fessの起動

このページを参考にFessを起動します。

3. 認証設定

データを取得するためには、認証情報をパラメータとして与える必要があります。

3-1. Azure Active Directory 利用

Office 365 で無料の Azure Active Directory サブスクリプションを使用する
を参考にAzure ADの利用を開始します。

この際、ディレクトリID(tenant)を記録しておきます。

3-2. アプリケーション作成

My Applicationを開き、アプリの追加をします。

アプリケーション名は分かれば何でも大丈夫です。

作成後、アプリケーションID(client_id)を記録しておきます。
次に、アプリケーション シークレットから新しいパスワードを生成し、それ(client_secret)を記録しておきます。

プラットフォームの追加でネイティブアプリケーションを追加します。

次に、アプリケーションのアクセス許可を変更します。
今回は「Directory.Read.All」「Files.Read.All」「Group.Read.All」「Notes.Read.All」「Sites.Read.All」「User.Read.All」を追加します。

ここまで終わったらアプリケーションを保存します。

次に、
https://login.microsoftonline.com/${tenant}/adminconsent?client_id=${client_id}&redirect_uri=https://login.microsoftonline.com/common/oauth2/nativeclient
を管理者権限のあるアカウントで開きます。
URLが、https://login.microsoftonline.com/common/oauth2/nativeclient?admin_consent=True&tenant=${tenant}に変わったら大丈夫です。

3-3. LDAP認証の設定

Office365にはユーザーやグループごとにドライブがあり、ユーザーによってアクセス可能なリソースが異なります。
検索結果にアクセス不可能なりソースを表示させないために、LDAP認証の設定を行います。

Azure AD Domain Services のマネージド ドメインに対するセキュリティで保護された LDAP (LDAPS) の構成を参考にAzure ADのLDAPSを有効にします。

LDAPSが有効になったら、Secure LDAP外部IPアドレス または バインドされているカスタムドメイン (server_name)を記録しておきます。

また、Office365にはディレクトリ全体で共有されるドライブがありますが、「ディレクトリ全体」を示すグループはデフォルトでは無いため、そこにアクセス可能なグループを作る必要があります。

Azure AD Premium ライセンスがある場合、
Azure Portal[Azure Active Directory] > [グループ] > [全般]を開き、ディレクトリ内の"すべてのユーザー"グループを有効にすると、All Usersというグループが作成されます。

ライセンスがない場合、
[Azure Active Directory] > [グループ] > [新しいグループ]を開き、検索を許可したいユーザーを含むセキュリティグループを作成します。
この場合、ディレクトリに新しくユーザーが追加された時に、自動的に追加は出来ないので注意が必要です。

ライセンスの有無に関わらず作成したグループ名を記録しておきます。

4. Fessの設定・クローラ実行

OneDriveをクロールするための設定をします。
公式ドキュメントの全般#LDAPデータストアクロールも参考にしてください。

4-1. LDAP設定

LDAPを利用する場合、設定が必要です。
Fessの管理画面を開き、[システム] > [全般]と移動します。

LDAP URLは3-3で記録したアドレスをserver_nameとして、ldaps://${server_name}:636/といった形式で入力します。
Base DNはexample.comの場合OU=AADDC Users,DC=example,DC=comのような形式で入力します。
Bind DNとパスワードはAzure ADで管理者権限があるアカウントを指定します。
User DNは%s
アカウントフィルタは(&(objectClass=user)(userPrincipalName=%s))
グループフィルタは空欄、
memberOf属性はmemberOfという感じで入力します。

この設定後、Azure ADのアカウントでログイン出来れば設定完了です。

4-2. クローラの設定

Fessの管理画面を開き、[クローラ] > [データストア]と移動し、新規作成をします。
新規作成画面では、

  • 名前
  • ハンドラ
  • パラメータ
  • スクリプト

の4項目を設定して、作成を完了します。

「名前」には好きな文字列を入力してください。
「ハンドラ」はOneDriveを選択してください。
「パラメータ」は次のようなフォーマットで入力してください。

tenant=********-****-****-****-************
client_id=********-****-****-****-************
client_secret=***********************

キーと値は3. で記録したものと対応しています。

「スクリプト」は次のようなフォーマットで入力してください。

title=files.name
content=files.description + "\n" + files.contents
mimetype=files.mimetype
created=files.created
last_modified=files.last_modified
url=files.web_url
role=files.roles

「パーミッション」はディレクトリ全体で共有されているドライブにアクセス可能なユーザー、グループを指定します。
3-3. で作成したグループAll Usersの場合、{group}All Usersという感じで入力します。

取得出来る値のキーと値の説明は次のようになります。
ここで言う「File」はOneDriveの1ファイルを指しています。

キー
files.name Fileの名前
files.description Fileの説明
files.contents Fileの中身(テキスト)
files.mimetype FileのMIMEタイプ
files.created Fileの作成日時
files.last_modified Fileの最終編集日時
files.web_url FileをWeb上で閲覧するリンク
files.roles Fileにアクセス可能なrole

設定画面はこんな感じになります。

OneNoteのクロール

Office365にはOneNoteが含まれていて、それもクロールすることが可能になっています。
OneNoteのクロールをする場合、
「バンドラ」はOneNote

「スクリプト」は次のようなフォーマットで入力します。

title=notebooks.name
content=notebooks.contents
created=notebooks.created
last_modified=notebooks.last_modified
url=notebooks.web_url
role=notebooks.roles

取得出来る値のキーと値の説明は次のようになります。
ここで言う「Notebook」はOneNoteの1ノートブックを指しています。

キー
notebooks.name Notebookの名前
notebooks.contents Notebookの中身(テキスト)
notebooks.created Notebookの作成日時
notebooks.last_modified Notebookの最終編集日時
notebooks.web_url NotebookをWeb上で閲覧するリンク
notebooks.roles Notebookにアクセス可能なrole

4-3. ジョブスケジューラの作成

4-2で作成したクロールをクリックすると、クロール設定が開き、そこから「新しいジョブの作成」をします。

後からでも変更はできるので、とりあえず試す場合はそのままの設定で大丈夫です。
詳しいジョブスケジューラの設定については、このページを参考にしてください。

4-4. クローラの実行

[システム] > [スケジューラ]と移動し、4-3で作成したジョブを開きます。
その画面から、「今すぐ開始」をします。

状態が「実行中」から「有効」になるまで待ちます。

4-5. 検索のテスト

検索フォームから適当に検索してみます。
この時、他の人のドライブのファイルが検索結果に表示されないことを確認します。

5
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?