🔎 Docker 版 Fess のインストール

2023/12/20

fess  .txt, .tex, pdf, Officeファイル, Libre Officeファイル, html ファイルなどを対象に インデックス化され、検索できます。 ローカルマシン、ウェブの検索、全インデックス中の限定した部分の検索などが可能。 いわゆる全文検索エンジンです。

docker 版はインストール方法が最も単純です。 まず、docker が使えるようにしておきます(docker desktop の導入参照)。 この方法は環境が変わっても、再度これをやればいいのでたぶん可搬性が最も高いでしょう。

インストールと起動

 2つのファイルを docker というディレクトリにダウンロードします。

 $ mkdir docker
 $ wget https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose.yaml
 $ wget https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose-opensearch2.yaml

 Fess の起動は以下のコマンドだけです。

 $ docker compose -f compose.yaml -f compose-opensearch2.yaml up -d

 http://localhost:8080/ にアクセスすることによって、起動を確認できます。 (ユーザー:admin, パスワード:admin。パスワードは初回変更のこと)

FESS

Fess の停止

 $ docker compose -f compose.yaml -f compose-opensearch2.yaml down

Fess の削除

 $ docker volume rm compose_esdata01 compose_esdictionary01 compose_esdata02 compose_esdictionary02

インデックスの作成

 compose.yaml の volume セクションの restart の下あたりに

    volumes:
      - type: bind
        source: /home/raku
        target: /raku

などと書きます。

 これはローカルマシンの /home/raku を docker 内に /raku という名前でマウントすることを意味します (raku は自分のユーザー名によって変える)。 ※マウントは2つまではうまくいきましたが、3つ以上はエラーになりました。

 /home/raku/DB に test.txt というファイル名で、

 これは fess の動作テストのためのテキストファイルです

などといった文書を作って保存します。

 起動した Fess の管理画面で、 [クローラ]の[ファイルシステム]に新規の設定を作ります(例)。

名前	db
パス	file:/raku/DB
クロール対象とするパス	
クロール対象から除外するパス
.*\.m4v$
.*\.exe$
.*\.tgz$
.*\.wmv$
.*\.zip$
検索対象とするパス	
検索対象から除外するパス	
設定パラメーター	
深さ	
最大アクセス数	
スレッド数	5
間隔	1000 ミリ秒
ブースト値	1.0
パーミッション	{role}guest
仮想ホスト	
状態	有効
説明	
FESS

 続いて、[システム]-[スケジューラー]-[Default-Crawler]と進み、 [開始]ボタンを押します。 進行状況は[システム情報]-[ジョブログ]で確認できます。 エラーは[システム情報]-[障害URL]で確認できるかもしれません。 数分たつと終わるので、管理画面の[検索]領域に * を入れ、🔍ボタンを押します。 インデックス化ができていれば、検索結果 1件中 1件目で、 test.txt が表示されるはずです。

ラベル

 場所を明確にするラベルをつけてみましょう。

 [クローラ]-[ラベル]とし、db というラベルを新規作成します。

名前	db
値	db
対象とするパス	file\:/raku/DB/.*
除外するパス	
パーミッション	{role}guest
仮想ホスト	
表示順序	0

 こんどは先刻同様[スケジューラ]の[Label Updater]を動かします。 管理画面から抜けて、トップページで 「テスト」などといった語句を詳細検索してみます。 このとき、ラベルが指定できるので、db をクリックして、選択しておきましょう。

ウェブページの検索

 [クローラ]-[ウェブ]とし、localhost という名の設定を新規作成します。

名前	localhost
URL	http://192.168.1.254/
クロール対象とするURL	
クロール対象から除外するURL	
検索対象とするURL	
検索対象から除外するURL	
設定パラメーター	
深さ	1
最大アクセス数	
ユーザーエージェント	Mozilla/5.0 (compatible; Fess/14.11; +http://fess.codelibs.org/bot.html)
スレッド数	1
間隔	10000 ミリ秒
ブースト値	1.0
パーミッション	{role}guest
仮想ホスト	
状態	有効
説明	

 深さを 1 としたのはテストのためで、そうでないとページにあるリンクを次々と たどって検索してしまうからです(1なら、リンクを1度しかたどらない)。

 保存したら、先程と同じように、スケジューラから Default-Crawler を動かし、 ページがインデックス化されたかを確認しましょう。

BASIC認証がかかったページの検索

 もし、http://192.168.1.254/cgi-bin/data/ が BASIC 認証のかかったディレクトリだとします。 このとき、まず、localhost とは別の [ウェブ]クロール設定を作ったほうがいいでしょう。

名前	localhostBASIC
URL	http://192.168.21.254/cgi-bin/data/
クロール対象とするURL	http://192.168.21.254/cgi-bin/data/.*
クロール対象から除外するURL	(?i).*(css|js|jpeg|jpg|gif|png|bmp|wmv|xml|ico|exe)
検索対象とするURL	
検索対象から除外するURL	
設定パラメーター	
深さ	
最大アクセス数	
ユーザーエージェント	Mozilla/5.0 (compatible; Fess/14.11; +http://fess.codelibs.org/bot.html)
スレッド数	3
間隔	10000 ミリ秒
ブースト値	1.0
パーミッション	{role}guest
仮想ホスト	
状態	有効
説明	

 「クロール対象から除外するURL」は最初から上のようなものが入ってくるはずです。 このサイトの全ページをインデックス化したいので深さには何も書きません。 スレッド数はデフォルトが 1で、遅く感じたら 3 にするといいでしょう。

 今度は[クローラ]-[ウェブ認証]とし、以下のような新しい設定をつくります。

ホスト名	192.168.1.254
ポート	80
レルム	
スキーム	Basic
ユーザー名	raku
パスワード	******
パラメーター	
ウェブ設定	localhostBasic

 ユーザー名とパスワードは実際に BASIC 認証で使っているものです。 ウェブ設定は、上で作った localohostBASIC が入る必要があります。 ここまできたら、スケジューラから Default-Crawler を動かし、確認しましょう。

 うまく行かない場合は、誤字脱字の類をチェックします。

その他

FESS

 私のインデックス化にかかった時間は、

ファイルシステム 7700ファイル 25分(5スレッド)
ファイルシステム 130850ファイル 7時間25分(〃)
ウェブ(local BASIC) 1035ページ 65分(3スレッド)

でした。 ファイルサイズは 2MB を超えるあたりが上限で、 それを超えるものはインデックス化されないようです (障害URLに表示される)。

参考: Fess 公式ドキュメント

Facebookシェア

🕍 同ジャンル最新記事(-5件)

PHP8.1 上の PukiWiki(2023/12/20)

PHP 7.4 上で稼働していた PukiWiki をそのまま PHP 8.1 上へ持ってくると、attach プラグインのせいか添付ファイルが正常に表示されない...

Fess のインストール(2023/12/14)

.txt, .tex, pdf, Officeファイル, Libre Officeファイル, html ファイルなどを対象にインデックス化され、検索できる...

Docker Desktop(Ubuntu22)(2023/12/13)

Docker Desktop を Ubuntu 22.04 に導入する方法です...

TeXで絵文字を使う(2022/07/28)

絵文字の最新事情もわかり、組版ソフト TeX が Unicode に対応してから時間も経ったことでもあり、TeX で絵文字をと考えるのは自然な流れでしょう...

NTT光でVPN(2022/07/27)

NTT光接続でつないでいる場合、デフォルトのゲートウェイ機で VPN できちゃいます。その具体的なプロセスです...