第2回 5分でわかる検索体験 -- Docker Composeで始めるFessファーストコンタクト

はじめに

前回は企業における検索基盤の必要性と Fess の概要を紹介しました。 本記事では、実際に Fess を起動して検索を体験するまでの最短手順を紹介します。

目的は「Fess でどのような検索体験が得られるのか」を素早く理解することです。 Docker Compose を使って、コマンド数行で Fess 環境を立ち上げ、Web サイトをクロールし、検索するところまでを体験します。

対象読者

  • Fess を初めて試す方

  • 導入検討のための PoC(概念実証)を素早く行いたい方

  • Docker の基本的な操作ができる方

必要な環境

  • Docker および Docker Compose が利用可能な環境

  • メモリ 4GB 以上(推奨 8GB 以上)

  • インターネット接続

事前準備(Linux / WSL2 の場合)

Fess が利用する OpenSearch は、起動時に多くのメモリマップ領域を必要とします。 Linux や WSL2 環境では、以下のコマンドで vm.max_map_count を引き上げてください。

$ sudo sysctl -w vm.max_map_count=262144

この設定は OS を再起動すると元に戻ります。永続化するには /etc/sysctl.conf に追記します。

$ echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.conf

注釈

macOS の Docker Desktop を利用している場合、この設定は不要です。

Fess を起動する

Docker Compose ファイルの取得

Fess の Docker Compose ファイルは GitHub リポジトリで公開されています。 以下のコマンドで取得します。

$ git clone https://github.com/codelibs/docker-fess.git
$ cd docker-fess/compose

compose ディレクトリには、いくつかの構成ファイルが用意されています。 まずはシンプルな構成で起動しましょう。

起動

以下のコマンドで Fess と OpenSearch を起動します。

$ docker compose up -d

初回起動時は Docker イメージのダウンロードが行われるため、数分かかる場合があります。 起動状況は以下のコマンドで確認できます。

$ docker compose ps

すべてのコンテナが「running」になれば、起動完了です。

検索画面にアクセス

ブラウザで http://localhost:8080/ にアクセスします。 Fess の検索トップ画面が表示されれば、正常に起動しています。

この時点ではまだインデックスが空のため、検索しても結果は返りません。 次のステップでクロール対象を登録し、検索可能な状態にしていきます。

管理画面を確認する

管理画面へのログイン

http://localhost:8080/admin/ にアクセスし、管理画面にログインします。 デフォルトの認証情報は以下の通りです。

  • ユーザー名: admin

  • パスワード: admin

管理画面のダッシュボードでは、システムの状態を一覧できます。

管理画面の構成

管理画面の左側メニューには、Fess の主要な管理機能が並んでいます。 ここでは概要だけ確認しておきましょう。

クローラー

検索対象を登録する領域です。ウェブ、ファイルシステム、データストアの3種類のクロール設定を管理します。

システム

スケジューラ、デザイン、辞書など、システム全体の管理機能です。辞書では同義語やストップワードなど、検索品質に関わる設定を管理します。

システム情報

検索ログ、ジョブログ、クロール情報、バックアップなど、各種ログやメンテナンス機能を提供します。

Web サイトをクロールしてみる

クロール対象の登録

実際に Web サイトをクロールして、検索できるようにしましょう。 ここでは Fess の公式サイトを対象にします。

  1. 管理画面の左メニューから [クローラー] > [ウェブ] を選択

  2. [新規作成] をクリック

  3. 以下の内容を入力します

    • URL: https://fess.codelibs.org/ja/

    • クロール対象とする URL: https://fess.codelibs.org/ja/.*

    • 最大アクセス数: 50

    • スレッド数: 2

    • 間隔: 10000

  4. [作成] をクリックして保存

これで Fess の公式サイト(日本語ページ)を最大50ページ、10秒間隔でクロールする設定が完了しました。

クロールの実行

設定を保存しただけでは、クロールは始まりません。 クロールを開始するには、スケジューラからジョブを実行します。

  1. [システム] > [スケジューラ] を選択

  2. 「Default Crawler」を選択

  3. [今すぐ開始] をクリック

クロールが開始されます。 進捗は [システム情報] > [クロール情報] から確認できます。 50ページ程度であれば、数分でクロールが完了します。

検索を体験する

検索してみる

クロール完了後、検索画面 http://localhost:8080/ に戻って検索してみましょう。

例えば「インストール」と入力して検索すると、Fess サイトのインストールに関するページが検索結果として表示されます。

検索結果画面の要素

検索結果画面には、以下の要素が表示されます。

検索結果リスト

各結果には、タイトル、URL、本文の抜粋(スニペット)が表示されます。 検索キーワードに一致する部分はハイライト表示されます。

検索件数と所要時間

検索結果の上部に、ヒット件数と検索にかかった時間が表示されます。

ページネーション

結果が複数ページにわたる場合、ページ送りのナビゲーションが表示されます。

さらに便利な検索機能

Fess は単純なキーワード検索以外にも、様々な検索機能を備えています。

AND/OR 検索

複数のキーワードをスペースで区切ると AND 検索になります。 OR を使うと OR 検索も可能です。

インストール Docker       # AND 検索(両方を含む)
インストール OR Docker    # OR 検索(いずれかを含む)

フレーズ検索

ダブルクォートで囲むと、その語順で一致するドキュメントを検索します。

"全文検索サーバー"

除外検索

特定のキーワードを含まない結果を検索するには、マイナス記号を使います。

インストール -Windows    # 「Windows」を含まない結果

環境の停止と再開

停止

検索体験が終わったら、以下のコマンドで環境を停止します。

$ docker compose down

データ(インデックス)を保持したまま停止するので、再起動すれば同じ状態で利用を再開できます。

データも含めて完全にクリーンアップしたい場合

ボリュームも含めて削除する場合は、以下のコマンドを実行します。

$ docker compose down -v

この場合、クロールで作成したインデックスも削除されます。

検索体験から見えてくるもの

ここまでの体験で、Fess の基本的な動作を確認できました。 ここで、実際の業務での活用を想定して、いくつかの疑問が浮かぶかもしれません。

  • 「社内のファイルサーバーも検索対象にできるか?」 → 第4回 で扱います

  • 「既存の社内サイトに検索窓を埋め込めるか?」 → 第3回 で扱います

  • 「部門ごとに見える情報を制御できるか?」 → 第5回 で扱います

  • 「Slack や Confluence も検索したい」 → 第6回 で扱います

  • 「AI で質問に答えてくれるようにしたい」 → 第19回 で扱います

Fess はこれらすべてのシナリオに対応できます。 本シリーズを通じて、段階的にこれらの実現方法を紹介していきます。

まとめ

本記事では、Docker Compose を使って Fess を起動し、Web サイトのクロールから検索までを体験しました。

  • Docker Compose で Fess + OpenSearch をコマンド一つで起動

  • 管理画面からクロール対象を登録し、スケジューラで実行

  • 検索画面でキーワード検索、AND/OR 検索、フレーズ検索を体験

  • 環境の停止・再開も簡単

次回は、既存の Web サイトやポータルに Fess の検索機能を埋め込む方法を紹介します。

参考資料