DockerでWebやローカルPC内の全文検索サーバーを導入する(fess)
はじめに
Dockerを使って、ローカルPC内やWebの全文検索ができるサーバーを構築します。
fessというサービスを使用します。
Docker Desktopがインストールされていることを前提とします。
下のリンクでDocker Desktopのインストール方法を記載しています。
また、以下の環境でインストールしました。
以下の環境で実行しました。
CPU | intel 第12世代 Core i5 |
OS | Windows 11 Home |
メモリ | 16GB |
インストール方法
yamlファイルの準備
fessをインストールするための場所(ディレクトリ)を作成します。
ここではd:\fessフォルダを作成します。
d:\fessフォルダ内に、以下の2つのファイル「compose.yaml」 と「compose-opensearch2.yaml」を作成します。
services:
fess01:
image: ghcr.io/codelibs/fess:14.11.1
# build: ./playwright # use Playwright
container_name: fess01
environment:
- "SEARCH_ENGINE_HTTP_URL=http://es01:9200"
- "FESS_DICTIONARY_PATH=${FESS_DICTIONARY_PATH:-/usr/share/opensearch/config/dictionary/}"
# - "FESS_PLUGINS=fess-webapp-semantic-search:14.11.0 fess-ds-wikipedia:14.11.0"
ports:
- "8080:8080"
networks:
- esnet
depends_on:
- es01
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "5"
restart: unless-stopped
networks:
esnet:
driver: bridge
services:
es01:
image: ghcr.io/codelibs/fess-opensearch:2.11.1
container_name: es01
environment:
- node.name=es01
- discovery.seed_hosts=es01
- cluster.initial_cluster_manager_nodes=es01
- cluster.name=fess-es
- bootstrap.memory_lock=true
- node.roles=cluster_manager,data,ingest,ml
- plugins.security.disabled=true
- "OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g"
- "FESS_DICTIONARY_PATH=/usr/share/opensearch/config/dictionary"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65535
hard: 65535
volumes:
- esdata01:/usr/share/opensearch/data
- esdictionary01:/usr/share/opensearch/config/dictionary
ports:
- 9200:9200
networks:
- esnet
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "5"
restart: unless-stopped
volumes:
esdata01:
driver: local
esdictionary01:
driver: local
.wslconfig ファイルの設定変更
メモリを大量に使用するコンテナを動かす場合はメモリの割当を増やす必要があり、wslのコンフィグファイルに直接記載する必要があります。
「C:\Users\【ユーザ名】\.wslconfig」ファイルを新しく作成し、
[wsl2]
kernelCommandLine = sysctl.vm.max_map_count=262144
の記述を追加します。(すでに.wslconfigファイルがある場合はkernelCommandLine~の行を追記します。)
.wslconfig ファイルを変更したら一度PCを再起動します。
Fessの起動
Fessをdocker composeコマンドで起動します。
コマンドプロンプトを開き、compose.yamlファイルがあるフォルダー(ここではd:\fess)に移動して、以下のコマンドを実行します。
docker compose -f compose.yaml -f compose-opensearch2.yaml up -d
動作確認
http://localhost:8080/ にアクセスすることで、起動を確認できます。
管理用のUIは、 http://localhost:8080/admin/ です。 デフォルトの管理者アカウントのユーザー名とパスワードは、「admin/admin」になります。
Fessの終了
Fessの終了は、Fessを起動したフォルダーで、以下のコマンドを実行します。
docker compose -f compose.yaml -f compose-opensearch2.yaml down
fessの設定例
ここでは設定例として、Webサイトのクロール(ウェブ上の文書や画像などを周期的に取得し、自動的にデータベース化するプログラムのこと)設定を行います。
Webサイトのクローリング設定
左のメニューからクローラー→ウェブと移動します。
新規作成を選択し、名前、検索したいwebサイト名を入力し、作成ボタンを選択します。今回はyahooのサイト内を検索します。
入力が終わったら、画面下の「作成」をクリックします。
インデックスの作成
次に、検索用のインデックスを作成します。
左のメニューから、システム→スケジューラと移動します。
ここでは、クローラーのタイミングや指定などの設定を行うことができます。今回はDefault Crawlerを利用します。Default Crawlerは、全てのクローラを起動させることができます。
Default Crawlerを選択し、「今すぐ開始」を選択します。
クローリングが始まると、左メニューのシステム情報→クロール情報内に新しい項目ができています。
新しくできた項目を選択し、以下のような情報が表示されていればクロール成功です。
検索
画面左上の検索画面ボタンを選択すると、検索フォーム画面が表示されます。単語を入れて検索すると、検索結果が表示されます。
※検索結果がうまく出なかった場合は、クロール情報のインデックスのサイズを確認してください。ここが0件の場合、クローラの設定で失敗しています。設定の見直しが必要です。
Discussion