# Fessで作るApache Solrベースの検索サーバー 〜 モバイル編

Fessは簡単に導入できる、Javaベースのオープンソース全文検索サーバーです。 検索エンジン部分にはApache Solrを採用して、ウェブ上またはファイルシステム上にあるドキュメントを検索することができます。 対応ファイルフォーマットもHTML、MS Office系ファイル、圧縮ファイルなど様々なものに対応しています。 本連載ではFessの携帯端末での利用方法についてご紹介します。

## はじめに

前回の導入編では、Fessによるオープンソース全文検索サーバーの構築方法をご紹介しました。 Fessはdocomo、auおよびSoftbankの携帯端末での検索に対応しているので、今回はその利用方法をご紹介します。

本記事ではFess 2.0を利用して説明します。 Fessの構築方法については導入編を参照してください。

## 対象読者

- 携帯端末用検索システムを構築してみたい方
- 既存の携帯サイトに検索機能を追加してみたい方

## 必要な環境

この記事の内容に関しては次の環境で、動作確認を行っています。

- CentOS 5.4
- JDK 1.6.0_17

## Fessの携帯端末対応

全文検索システムにおいて、携帯端末で利用するためにはシステム的に以下のような対応が必要になってきます。

1. 携帯端末の情報を取得して、端末に適した表示をする
2. クロール作成時に端末用のユーザーエージェントを指定できる
3. 閲覧キャリア情報をインデックス情報に含めることができる
4. 検索結果がPCサイトの場合、コンテンツ変換した内容を表示できる

Fessでは上記すべてに対応しています。 まず、携帯端末の情報を取得して処理するためにmobyletを採用しています。 mobyletは携帯向けWebアプリケーション構築のためのJavaオープンソースフレームワークです。 mobyletを利用することでdocomo、auおよびSoftbank端末を識別して、それぞれの端末ごとに適切な結果を表示することができます。

次にFessでは検索対象をクロールするときに、ユーザーエージェントをウェブクロール設定で設定することができます。 対象キャリアのユーザーエージェントを指定してクロールすることで、その携帯端末向けサイトを取得することができます。 ただし、対象の携帯サイトをIP制限をしている場合はFessサーバーのIPを許可して、携帯端末サイトを表示できるようにする必要があります。 また、ウェブクロール設定で［ブラウザ］はデフォルトですべて選択されていますが、表示したいキャリアを選択することでそのキャリア端末だけで結果を表示することが可能になります。

検索結果がPCサイトである場合、検索結果にPCサイトのリンクが表示されても携帯端末では通常表示することができません（PCサイトビューアなどを利用すれば閲覧可能です）。 Fessでは「Google Wireless Transcoder」を利用することが可能です。 Google Wireless TranscoderはGoogle社により提供されるサービスで、PCサイトを各種携帯端末に合わせて変換してくれます。 Fessでは簡単な設定で、検索結果をGoogle Wireless Transcoderのリンクに変換する機能を持ち、検索結果がPCサイトでもスムーズに利用することが可能です。

## 携帯端末で利用するための手順

Fess 2.0をインストールおよび起動してあるものとします。

### docomo用ウェブクロール設定の登録

docomoの端末で検索した場合だけで検索結果を表示するウェブクロール設定を作成します。

まず、管理ページであるhttp://localhost:8080/fess/adminにアクセスし、ログインしてください。 デフォルトではユーザー名、パスワードともにadminです。 管理ページの左側から［ウェブ］を選択してください。 初期状態では何も登録されていないため、［新規作成］を選択します。

［新規作成］を選択

今回は、携帯端末サイトではない、http://fess.sourceforge.jp/ja/以下のすべてのページをクロール対象とすることにします。 docomo端末で表示可能な携帯サイトがあれば、http://fess.sourceforge.jp/ja/の代わりにそのサイトをURLに指定します。

また、［ブラウザ］にDoCoMoだけを選択し、docomo端末だけで表示されるようにします。 auやSoftbank端末で表示したい場合はここでそれらを選択します。

あとは［ユーザーエージェント］にdocomo端末のユーザーエージェントを指定します。 今回はDoCoMo/2.0 P903iを入力します。

docomo用ウェブクロール設定

その後、確認画面で［作成］をクリックすることで、クロールの対象を登録することができます。 登録内容は、［編集］から変更することが可能です。

### モバイル変換の設定

検索結果がPCサイトである場合はGoogle Wireless Transcoderを利用するように設定します。 検索対象にPCサイトを含まず、携帯サイトだけである場合はこの設定は必要ありません。

管理ページの左側から［クロール全般］を選択してください。 ［モバイル変換］でGoogleを選択します。

モバイル変換の設定

［更新］をクリックして設定を保存します。

### インデックス化

携帯端末用設定の完了後、クロールを開始して検索対象のインデックスを作成します。 管理ページの左側から［システム設定］を選択してください。

システム設定

［開始］をクリックして、検索対象のクロールおよびインデックス化を開始します。 しばらくするとクロールが完了します。

### 検索

まず、Internet Explorer などのPCブラウザで検索してみます。 http://localhost:8080/fessにアクセスして、Fessを検索します。

PCブラウザで検索

ウェブクロール設定で設定したとおり、検索結果がPCブラウザでは表示されないことがわかります。

次にdocomo端末でアクセスします。 今回は実際の端末ではなく、FirefoxでFireMobileSimulatorアドオンを利用して結果を確認します。 FireMobileSimulatorは、主要３キャリアの携帯端末ブラウザをシミュレートするFirefoxアドオンです。 FireMobileSimulatorをFirefoxにインストールして、Firefoxのメニューから［ツール］の［FireMobileSimulator］からdocomo端末のDC P903iなどを選択します。 この設定によりFirefoxはアクセスしたときにP903i端末の環境をシミュレートします。 PCブラウザの場合と同様にhttp://localhost:8080/fessにアクセスして、Fessを検索します。

docomo端末で検索

今度はウェブクロール設定で指定した検索対象が表示されます。 また、検索結果のリンクをクリックするとPCサイトが携帯端末用に変換して表示されるのがわかります。

## まとめ

全文検索システムであるFessの携帯端末への対応方法をご紹介しました。 簡単な設定をすることで3大キャリアの携帯端末に検索機能を提供できることをご紹介できたと思います。 また、携帯電話は定期的に新機種が発売されますが、Fessでは最新の端末情報ファイルを「webapps/fess/WEB-INF/classes/device」に置くことで対応することが可能です。 端末情報ファイルの更新方法についてはそのディレクトリ内のREADMEをご覧ください。

次回は、利用者の認証状況により検索結果を表示結果を切り替える、ロール機能についてご紹介します。

## 参考資料

- Fess
- mobylet
- FireMobileSimulator

著者プロフィール
菅谷 信介 （スガヤ シンスケ）

N2SM, Inc. にソフトウェア・アーキテクトとして勤務。
Apache Portals にて、コミッター兼 PMC として活動。 その他、Seasar Project でコミッターとしても活動。 オープンソース関連の活動をブログに掲載。