5分で構築!オープンソースの全文検索サーバーFessを利用してみた

Pocket

Fessとは?

プロジェクトにおいて、ファイル名、内容、メタデータなどを検索する機能はさまざまな局面において利用されています。しかし、一つ一つのファイルや用途に合わせて検索機能を作ると非常に時間と手間がかかります。このような悩みをFessは簡単に解消することができます。

Fessはオープンソース型の全文検索サーバーです。設定は非常に簡単で、Java環境さえあればどのOSでも動作させることができる汎用性の高さが特徴です。また、自サーバー内のみならず、Webサイト、Amazon S3やBoxなどのファイルストレージ、SlackなどのSNSまで幅広い検索が可能です。もちろんAPIを用いてWebアプリと連携することもできます。

今回はFessサーバーをWindowsPC内に立て、PC内ファイルとWeb、そしてAmazon S3を横断的に検索したいと思います。

Fess導入の前提条件

Fessの動作はOSに依存しませんが、Java環境が必須となります。JDKをダウンロードし、Java環境の設定を先に行ってください。Java 14での動作を確認していますが、その他バージョンでは動作しない可能性があります。

Fessの導入

Fessパッケージの最新zipファイルをダウンロードします。ダウンロードしたzipファイルを任意のディレクトリに展開します。今回は”C:\Users\xxx\Documents”ディレクトリに展開しました。

展開先に移動し、”fess-xx.xx.x/bin”を開きます。”fess.bat”ファイルを選択し、以下の画面が出ればサーバーが起動しています。

これだけでFessサーバーの構築は終了です。本当に5分程度でできました。それでは、サーバーにアクセスしてみましょう。

Webブラウザのアドレスバーに”localhost:8080″と入力します。すると、以下のような画面が確認できると思います。ファイルをクローリングすることで、この画面で検索ができるようになります。

クローリングとは、検索したいWebサイトやディレクトリなどを指定し、その内部情報を検索できる形に置き換え、インデックスとして保存する機能のことです。

次に、検索画面右上のログインボタンを選択します。ログイン画面が現れるので、ユーザ名とパスワードを入力しましょう。初期ユーザ名とパスワードはともに”admin”です。ログインすることによってFessの管理画面に移動します。ここで各種設定を行います。

         

次はFessにクローリングに必要な設定を行っていきます。

その1:ファイルのクロール設定

初めに、自PC内のファイルをクローリングする設定を行います。

左のメニューからクローラ→ファイルシステムと移動します。

新規作成を選択し、クローラ名と、どのディレクトリをクローリングするかを選択します。今回は”C:/test”というディレクトリ内をクローリングしたいと思います。以下のように設定し、下部の作成ボタンを選択し、終了です。

注意:ファイルを扱う際はファイルパスの前に”file:/”と入力しましょう。またパスは”\”ではなく”/”で入力する必要があります。

その2:Webサイトのクロール設定

次に、Webサイトのクローリング設定を行います。

左のメニューからクローラ→ウェブと移動します。

ファイルクローラと同じように新規作成を選択します。名前、検索したいwebサイト名を入力し、作成ボタンを選択します。今回は弊社オウンドメディアMISOのサイト内を検索してみます。

注意:もし、社内プロキシを設定している場合、設定パラメータに自身のプロキシサーバ名(e.g. 192.168.1.1)とポート番号(e.g. 8080)を入力してください。

その3:ファイルストレージ(Amazon S3)のクロール設定

次に、Amazon S3のクロール設定に移るのですが、Amazon S3のクローリングを行うためには新たなプラグインが必要です。Fessのバージョンとマッチするものを選択し、jarファイルをダウンロードします。

左のメニューからシステム→プラグインと移動します。

     

インストール→ローカルを選択します。ファイルを選択を押し、ダイアログから先ほどダウンロードしたjarファイルを選択、インストールします。

これでプラグインの設定は完了です。クローラの設定に戻りましょう。

クローラ→データストアと移動し、新規作成を選択します。これまでと同じように、パラメータ、スクリプトを以下のように設定します。パラメータに関しては個々のAWSアカウントの設定を参照してください。

全ての設定が完了したので、次の章では実際に検索用のインデックスを作成したいと思います。

インデックスを作成する

左のメニューから、システム→スケジューラと移動します。

こちらでは、クロールのタイミングやクローラの指定などの設定を行うことができます。今回はDefault Crawlerを利用します。Default Crawlerは、全てのクローラを起動させることができます。

Default Crawlerを選択し、今すぐ開始を選択します。

クローリングが始まっていた場合、左メニューのシステム情報→クロール情報内に新しい項目ができていると思います。この項目を選択し、以下のような情報が表示されていればクロール成功です。

では、クローリングが成功しているかをチェックしてみましょう。

画面左上の検索画面ボタンを選択すると、最初の検索フォーム画面が表示されます。単語を入れて検索すると、検索結果が表示されていることがわかると思います。以下の画像では、Web検索と同時に.gzファイルが検索出来ていることが確認できます。

ポイント:検索結果がうまく出なかった場合は、クロール情報のインデックスのサイズという部分を確認してください。ここが0件の場合、クローラの設定で失敗している可能性が高いです。クローラの設定を見直してみましょう。

おわりに

今回はFessを用いて全文検索サーバーを作成しました。Fessは簡単に構築、設定が可能であることが確認できました。UIだけでほぼすべての設定ができる点も魅力的でした。

検索システムが必要になった際には、ぜひFessの導入を検討してみてください。

お問い合わせ先

執筆者プロフィール

Taniguchi Natsuki
Taniguchi Natsukitdi AI&データマネジメント推進部
AIアセットのプリセールス活動やAI-OCRを用いた技術検証などに携わっています。近年はデータ分析業務に従事し、BIツールやデータエンジニアリングに取り組んでいます。
Pocket

関連記事