【docker】OSSの全文検索サーバーfessをローカルに構築
概要
OSSの全文検索サーバ
Fess (フェス) は「5 分で簡単に構築可能な全文検索サーバー」です。
Java 実行環境があればどの OS でも実行可能です。
Fess は Apache ライセンスで提供され、無料 (フリーソフト) でご利用いただけます。
機能
基本
ユーザにはGUIを提供する。各操作は基本的にはGUIから行う。
既存WEBシステムにも検索機能を組み込み利用することは可能
公開ソースは以下
サイト内検索
指定したサイト(自社サイト)をクロールすることでサイト内検索を実現する。
ファイルサーバ検索
ファイルサーバのドキュメントを検索する。
対応形式
以下の形式に対応
検索対象ストレージ
ローカル(win/mac/linux等のサーバOS)
fessを起動する環境のローカルディスクを指定できる。
例外的にminioを利用することでS3を検索対象にすることが可能。
miniio
OSSのAmazon S3と互換性のあるオブジェクト・ストレージ・サーバ
※有償版もある
windowsファイルサーバ
windowsのファイルサーバを指定できる。
windowsファイルサーバの認証機能(ユーザとパスワード)にも対応。
技術背景
全文検索エンジンにはelasticsearchを利用する。
elasticsearchのAPIをfess経由で発行して、結果をhtml整形してユーザに見せる
参考比較記事
ローカル構築
elasticsearchを利用した全文検索サーバであるfessを
ローカル環境で構築する手順をまとめる。
手順
前提
環境:macであること
アプリ:docker desktopがインストール済みであること
①docker desktopの設定変更
elasticsearchを利用するためには利用可能メモリを拡張する必要がある。
以下のdocker desktopの「Resouces」設定よりメモリを「3G」以上に設定する。
②fessのインストール
githubは以下
ターミナルから以下のコマンドを実行
$ git clone https://github.com/codelibs/docker-fess.git
$ cd docker-fess/compose
ダウンロードできたら、fessでローカルファイルに対するクロール/検索が行えるように
dockerコンテナにmacのディスクをマウントする必要があるため
docker-compose.ymlを編集する。
以下はdockerコンテナの「/var/www」をmacの「書類」フォルダにマウントしている。
version: "3"
services:
fess01:
image: ghcr.io/codelibs/fess:13.12.2
container_name: fess01
environment:
- "ES_HTTP_URL=http://es01:9200"
- "FESS_DICTIONARY_PATH=/usr/share/elasticsearch/config/dictionary/"
ports:
- "8080:8080"
networks:
- esnet
depends_on:
- es01
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "5"
volumes: ★★★ ココ ★★★
- ~/Documents:/var/www ★★★ ココ ★★★
networks:
esnet:
driver: bridge
③dockerで起動する
$ docker-compose -f docker-compose.yml -f docker-compose.standalone.yml up -d
起動したら以下でアクセス可能
http://localhost:8080
画面右上のログインから管理画面にアクセスする。
アカウント | パスワード |
---|---|
admin | admin |
※パスワードは初回ログイン時に変更を求められる
④ファイルのクロール設定
ローカルファイルをelasticsearchの検索対象にするために
まず被検索対象をクロールする必要がある。
左メニューの「クローラー」→「ファイルシステム」から新規作成を行う。
パスを先程マウントした「file:///var/www/」にする。
⑤クロール実行
左メニューの「システム」→「スケジューラ」から
「Default Crawler」の画面を開き、「今すぐ開始」を押下する。
これでクロールジョブが起動するので終われば検索画面から検索できるようになる。
ジョブの確認
実行中のジョブ
左メニューの「システム情報」→「ジョブログ」から確認できる。
ステータスが「実行中」→「OK」になれば完了。
完了したジョブ
左メニューの「システム情報」→「クロール情報」から結果を確認できる。
インデックスのサイズ (ウェブ/ファイル)が0でなければ何かしらクロールできている。
⑥検索
クロール後は以下のような感じで検索できる。
Discussion