はじめに
前回は企業における検索基盤の必要性と 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 の公式サイトを対象にします。
管理画面の左メニューから [クローラー] > [ウェブ] を選択
[新規作成] をクリック
以下の内容を入力します
URL:
https://fess.codelibs.org/ja/クロール対象とする URL:
https://fess.codelibs.org/ja/.*最大アクセス数:
50スレッド数:
2間隔:
10000
[作成] をクリックして保存
これで Fess の公式サイト(日本語ページ)を最大50ページ、10秒間隔でクロールする設定が完了しました。
クロールの実行
設定を保存しただけでは、クロールは始まりません。 クロールを開始するには、スケジューラからジョブを実行します。
[システム] > [スケジューラ] を選択
「Default Crawler」を選択
[今すぐ開始] をクリック
クロールが開始されます。 進捗は [システム情報] > [クロール情報] から確認できます。 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 の検索機能を埋め込む方法を紹介します。