はじめに
オープンソースの全文検索サービスFESSの使い方について。
環境
- Ubuntu 22.04 LTS
- OpenJDK 21
- FESS 15.1.0
- OpenSearch 3.1.0
OpenSearchはセットアップ済みとする。
セットアップ
セットアップは ここ
に従う。
OpenJDK 21 のインストール
$ sudo apt install openjdk-21-jre
$ java --version
openjdk 21.0.8 2025-07-15
OpenJDK Runtime Environment (build 21.0.8+9-Ubuntu-0ubuntu122.04.1)
OpenJDK 64-Bit Server VM (build 21.0.8+9-Ubuntu-0ubuntu122.04.1, mixed mode, sharing)
OpenSearch のプラグインのインストール
$ cd /usr/share/opensearch/bin
$ sudo ./opensearch-plugin install org.codelibs.opensearch:opensearch-analysis-fess:3.1.0
$ sudo ./opensearch-plugin install org.codelibs.opensearch:opensearch-analysis-extension:3.1.0
$ sudo ./opensearch-plugin install org.codelibs.opensearch:opensearch-minhash:3.1.0
$ sudo ./opensearch-plugin install org.codelibs.opensearch:opensearch-configsync:3.1.0
設定ファイルを編集する。
$ sudo vi /etc/opensearch/opensearch.yml
以下の設定を追加する。
configsync.config_path: /var/lib/opensearch/data/config/
plugins.security.disabled: true
サービスの再起動
$ sudo systemctl restart opensearch
$ sudo systemctl status opensearch
FESS のインストール
パッケージは ここ
からダウンロードする。
インストール
$ sudo dpkg -i fess-15.1.0.deb
設定ファイルを編集する。
$ sudo vi /etc/default/fess
以下のように設定する。
FESS_DICTIONARY_PATH=/var/lib/opensearch/data/config/
サービスの起動
$ sudo systemctl enable fess
$ sudo systemctl start fess
$ sudo systemctl status fess
● fess.service - Fess
Loaded: loaded (/lib/systemd/system/fess.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2025-08-01 10:17:23 JST; 7s ago
Docs: http://fess.codelibs.org/
Main PID: 5152 (java)
Tasks: 50 (limit: 38096)
Memory: 693.3M
CPU: 6.025s
CGroup: /system.slice/fess.service
└─5152 /bin/java -Xms512m -Xmx512m -XX:MaxMetaspaceSize=256m -XX:CompressedC
Error: LinkageError occurred while loading main class org.codelibs.fess.FessBootなどと出る場合は、Java
のバージョンが足りていない。
デフォルトではブラウザでhttp://localhost:8080にアクセスする。ポート番号の変更は以下のように行う。
$ sudo vi /etc/default/fess
FESS_PORT=8081
その他の設定ファイルは/etc/fess/fess_config.propertiesにある。
使い方
ブラウザでhttp://localhost:8080を開き、右上でadmin/adminでログインする。パスワードを設定する。
クローラの設定
文書を検索するには、まず文書の情報を集める(クロールする)必要がある。それを行うのがクローラである。注意点としては、FESSサービスはユーザーfess/グループfessになっているので、クローラがアクセスする場所へのアクセス権を適切に設定する必要がある。たとえば、ユーザーpenguin/グループpenguinのホームディレクトリにアクセスさせたければ、次のようにfessをpenguinグループに入れるなどである。
$ sudo usermod -aG penguin fess
クローラの設定
- 右上のログイン名を選択して[管理]
- [クローラー]-[ファイルシステム]
- [新規作成]
- 名前を適当につけて、パスに file:/ 形式でパスを書く。
- たとえば
file:/home/penguin/doc/OpenFOAM/など
- [作成]
右上に [クローラーの実行] ボタンがあるので、そこで [今すぐ開始]。
クロールの情報は [システム情報]-[クロール情報]
で確認できる。インデックスのサイズが 0 でなければうまくいっている。
クローラのログは
/var/log/fess/fess-crawler.logにある。デバッグ情報を出したい場合、以下のようにする。
- [システム]-[スケジューラ] Default Crawler
- [編集] でスクリプト
return container.getComponent("crawlJob").logLevel("info").gcLogging().execute(executor);
これを以下のように修正
return container.getComponent("crawlJob").logLevel("debug").gcLogging().execute(executor);
サムネイル表示
検索結果でサムネイル表示ができる。サムネイル生成スクリプトは/usr/share/fess/bin/generate-thumbnailである。convert
や pdftoppm が使えるのを確認する。imagemagick や poppler-utils
が必要。インストールは以下。
$ sudo apt install imagemagick
$ sudo apt install poppler-utils
- [システム]-[全般] で サムネイル表示
を有効にする。
- [システム]-[スケジューラ] の [Thumbnail Generator] で
[今すぐ開始]
/var/log/fess/fess-thumbnail.log を確認する。
Web
Webサイトをクロールすることもできるが、robots.txtでクロールを拒否されることがある。robots.txtを無視してよい状況であれば、設定で無視させることができる。
$ sudo vi /etc/fess/fess_config.properties
以下を設定
crawler.ignore.robots.txt=true
インデックスの削除
クローラは文書をインデックス化する。余計なものが入った場合は、管理画面の検索で検索をかけて個別に消せる。すべてまっさらにしたい場合は、管理画面の検索で
“:” を入れて、[このクエリですべてを削除] で消せる。
全般の設定で [以前のドキュメントを削除] を -1
にしておかないと、クロールしたものが自動的に消える。クロールが1度切りでいいなら、注意する。
|