2023年10月02日08時00分 / 提供:マイナビニュース
Fessでファイルシステムクロールを利用して、ローカルファイルシステムをクロールすると、検索結果のURLがファイルスキーム file://〜 になります。検索結果ページにファイルスキームのURLをリンクとして出力しても、今のブラウザではリンクとしては機能しません。
Fessではこの問題に対応するために、ファイルスキームのURLの場合にはFessが検索結果のURLのドキュメントを代わりに取得して、利用者に返す「コンテンツプロキシー機能」を提供しています。今回は、このコンテンツプロキシー機能について説明します。
コンテンツプロキシーについて
ブラウザで file:// で始まるファイルスキームのURLを開こうとすると、ローカルから参照できるファイルシステム上のファイルにアクセスすることができると思います。しかし、Fessの検索結果ページにファイルスキームのURLをリンクとして出力して、そのリンクをクリックしてもアクセスすることはできません。現在の一般的なブラウザでは、セキュリティ対策として、このような状況でのローカルのファイルシステムへのアクセスを制限されています。
Fessでは、コンテンツプロキシー機能により、検索結果のリンクをクリックした際に、ファイルスキームのURLの場合は、ブラウザでなく、Fessが対象ファイルにアクセスします。 Fessが取得したファイルをブラウザに返すことで、利用者は検索結果をクリックしたら、対象ファイルをダウンロードして取得できるというかたちです。
このように、Fessが対象のコンテンツを代わりに取得して返すので、Fessではコンテンツプロキシー機能と呼んでいます。
ローカルのファイルシステム以外に、SMBスキームでアクセスするファイルサーバでも、検索結果のリンクはファイルスキームになるため、コンテンツプロキシー機能が適用されます。
動作確認
実際にファイルサーバをクロールして、検索結果をクリックしてみます。SMBスキームでアクセスできるファイルサーバがなければ、ローカルのファイルシステムをクロールして、確認することもできます。
今回はFess 14.10.0を利用して説明します。
Fessをインストール後、管理画面にログインしてファイルクロール設定を作成します。
ファイルサーバへのアクセスに認証が必要な場合は、管理画面から左メニューの「クローラー」>「ファイル認証」をクリックし、認証に必要な情報を登録してください。
クロールジョブを実行後、検索して検索結果画面を表示します。
緑色のパスの前に表示されているアイコンをクリックすると、URLがクリップボードへコピーされます。クリップボードに保存されたURLをテキストファイルなどにペーストして、対象ファイルのURLを確認することができます。
URLは以下のように file://〜 になっていると思います。
file://fileserver-name/share/fess-testdata/text/test_utf8.txt
次に、検索結果のリンクをクリックします。クリックすると、ファイルのダウンロードが始まり、使用している端末に保存されます。
このファイルは、Fess経由でファイルサーバからダウンロードしたものです。
コンテンツプロキシー機能の無効化
利用している環境がファイルスキームのリンクによるアクセスを許可している場合、コンテンツプロキシー機能を無効にして、ブラウザからのアクセスを利用できます。
コンテンツプロキシー機能を無効にする設定は次のようになります。以下の設定をapp/WEB-INF/conf/system.propertiesに追加してください。
search.file.proxy=false
この設定でコンテンツプロキシー機能を無効にすると、対象ファイルをFess経由でなく、ブラウザから直接アクセスして取得するかたちになります。
この設定変更に再起動は必要ありませんが、設定の反映までには少し時間がかかる場合があります。
ファイル保存先にアクセス
コンテンツプロキシーを利用すると、オリジナルのファイルへのアクセスではなく、コピーされたファイルへのアクセスしている状態になります。オリジナルのファイルを直接編集したい場合、コピーされたファイルの取得は適していません。
そのため、オリジナルのファイルを直接編集したい場合は、タイトルのリンクをクリックするのではなく、パスの前のアイコンをクリックして、クリップボードにURLを保存します。そして、別途、エクスプローラーでリンク先にアクセスする手順を案内しています。
* * *