Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。14:00JavaポストFessは簡単に導入できる、Javaベースのオープンソース全文検索サーバーです。Solrを採用して、ウェブ上またはファイルシステム上にあるドキュメントを検索することができます。Office系ファイル、圧縮ファイルなど、さまざまなものに対応しています。本連載ではFessの導入方法について紹介します。カスタマイズまとめ参考資料はじめにドキュメントは日々増えて続けています。ドキュメントの数が多くなるほど、目的の情報は見つけにくくなるため、それらのドキュメントを効率よく管理する方法が必要です。その解決策の一つとして、複数のドキュメント(ファイル)をまたいで検索することができる「全文検索サーバー」の導入が挙げられます。Fessは簡単に導入できる、Javaベースのオープンソース全文検索サーバーです。Solrを利用しています。Solrは、2億ドキュメントもインデックス可能と言われる非常に高機能な検索エンジンです。Solrで検索システムを構築しようとする場合、クローラ部分などを自分で実装する必要性があります。Projectから提供されるS2Robotを利用して、ウェブやファイルシステム上の様々な種類のドキュメントを収集して検索対象とすることができます。そこで、本記事ではFessによる検索サーバーの構築方法について紹介します。必要な環境この記事の内容に関しては次の環境で、動作確認を行っています。1.6.0_16Fessの特徴Fessはウェブやファイルシステムを対象とした、オープンソースの全文検索システムです。SourceForge.jpのFessサイトにおいてApacheライセンスで提供されています。Javaベースの検索システムFessは下図の通り、さまざまなオープンソースプロダクトを利用して構築されています。配布物はTomcatにFessとSolrのwarファイルが配備された形になります。Fessのwarファイルは検索画面や管理画面を提供しています。Fessは開発フレームワークとしてSeasar2を利用し、プレゼンテーション層にはSAStrutsを採用しています。そのため、画面などのカスタマイズが必要な場合はJSPを修正することで簡単に対応できます。Databaseを利用し、O/RマッパーのDBFluteを利用してアクセスしています。S2ChronosはSeasarプロジェクトで提供されるスケジューリングフレームワークで、Fessでは指定された時間にクロールするために利用しています。SolrとS2Robotについては後述します。FessはJavaベースのシステムとして構築されているので、どのプラットフォームでも実行可能です。各種設定もウェブブラウザから簡単に行えるUIを備えています。Foundationから提供される、Luceneをベースとしたエンタープライズ向け検索サーバーです。特徴として、ファセット検索、検索結果の強調表示、複数の出力形式などをサポートしていることが挙げられます。検索対象のドキュメント数は、Solrサーバーの構成次第で数億ドキュメントにもなり、大規模サイトへもスケールアウトできる検索サーバーです。利用実績も日本でも数多くあり、注目されている検索エンジンの一つであると言えます。Solrを採用しています。Fessの配布物にはSolrが同梱されていますが、FessのSolrサーバーを別のサーバーへ切り出して利用することも可能です。Fessは複数のSolrサーバーをグループとして管理し、冗長構成を組むことが可能です。このようにFessではSolrのもつ高い拡張性を活かすことができる設計になっています。S2Robotをクロールエンジンとして利用S2RobotはSeasarプロジェクトから提供される、クローラフレームワークです。S2Robotはウェブ上やファイルシステム上にあるドキュメントを巡回して収集することができます。ドキュメント収集もマルチスレッドで、同時に複数のドキュメントを効率よく処理することが可能です。Office系ファイル、zipなどのアーカイブファイル、画像や音声ファイルなど、数多くのフォーマットに対応しています(画像や音声ファイルの場合はメタ情報を取得します)。FessではS2Robotを利用して、ウェブ上およびファイルシステム上のドキュメントを巡回し、テキスト情報を収集します。対応するファイルフォーマットもS2Robotが扱えるものを検索対象とすることができます。S2Robotでクロール実行するためのパラメータなどはFessの管理UIから設定することが可能です。モバイル対応Fessはdocomo、au、ソフトバンクの携帯電話端末での閲覧にも対応しています。ドキュメントをインデックスする際にどの端末で検索結果を閲覧可能にするかを指定できます。本稿ではモバイル端末での閲覧については省略し、次回説明する予定です。Inc.にソフトウェア・アーキテクトとして勤務。Portalsにて、コミッター兼PMCとして活動。Projectなどのオープンソースプロジェクトでコミッターとしても活動。オープンソース関連の活動をブログやTwitterに投稿。