👓

【docker】OSSの全文検索サーバーfessをローカルに構築

2022/04/14に公開

概要

OSSの全文検索サーバ
https://fess.codelibs.org/ja/

Fess (フェス) は「5 分で簡単に構築可能な全文検索サーバー」です。
Java 実行環境があればどの OS でも実行可能です。
Fess は Apache ライセンスで提供され、無料 (フリーソフト) でご利用いただけます。

機能

基本

ユーザにはGUIを提供する。各操作は基本的にはGUIから行う。
既存WEBシステムにも検索機能を組み込み利用することは可能
https://fess.codelibs.org/ja/articles/article-3.html

公開ソースは以下
https://github.com/codelibs/fess

サイト内検索

指定したサイト(自社サイト)をクロールすることでサイト内検索を実現する。

ファイルサーバ検索

ファイルサーバのドキュメントを検索する。

対応形式

以下の形式に対応

検索対象ストレージ

ローカル(win/mac/linux等のサーバOS)

fessを起動する環境のローカルディスクを指定できる。
例外的にminioを利用することでS3を検索対象にすることが可能。

miniio

OSSのAmazon S3と互換性のあるオブジェクト・ストレージ・サーバ
※有償版もある
https://min.io/

windowsファイルサーバ

windowsのファイルサーバを指定できる。
windowsファイルサーバの認証機能(ユーザとパスワード)にも対応。

技術背景

全文検索エンジンにはelasticsearchを利用する。
elasticsearchのAPIをfess経由で発行して、結果をhtml整形してユーザに見せる

参考比較記事

https://www.ossnews.jp/compare/Elasticsearch/Fess

ローカル構築

elasticsearchを利用した全文検索サーバであるfessを
ローカル環境で構築する手順をまとめる。

手順

前提

環境:macであること
アプリ:docker desktopがインストール済みであること

①docker desktopの設定変更

elasticsearchを利用するためには利用可能メモリを拡張する必要がある。
以下のdocker desktopの「Resouces」設定よりメモリを「3G」以上に設定する。

②fessのインストール

githubは以下

https://github.com/codelibs/docker-fess

ターミナルから以下のコマンドを実行

$ 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