SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Fessで作るApache Solrベースの全文検索サーバー

Fessで作るApache Solrベースの全文検索サーバー
~ 導入編

検索サーバーを導入してみよう!

インデックスの作成から検索まで

 起動直後の状態では、検索するためのインデックスが作成されていないため、検索しても何も結果が返ってきません。そのため、まずインデックスを作成する必要があります。ここでは、http://fess.sourceforge.jp/ja/以下を対象にインデックスを作成し、検索を行うまでを例として説明します。

管理ページへのログイン

 まず、管理ページであるhttp://localhost:8080/fess/adminにアクセスし、ログインしてください。デフォルトではユーザー名、パスワードともにadminです。

管理ページへのログイン
ログイン

クロール対象の登録

 次に、クロールの対象を登録します。今回は、Webページを対象とするので、管理ページの左側から[ウェブ]を選択してください。初期状態では何も登録されていないため、[新規作成]を選択します。

[新規作成]を選択
新規作成

 ウェブクロールの設定として、今回は、http://fess.sourceforge.jp/ja/以下のすべてのページをクロール対象とすることにします。また、ブラウザタイプはすべての項目を選択し、PCや携帯電話のどちらから検索をしても結果が表示されるようにします。

ウェブクロールの設定
クロール対象の設定

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

ウェブクロールの設定の登録完了
クロール対象の設定の登録完了

クロールのスケジュール設定

 次に、ドキュメントを巡回して収集するクロールスケジュールを設定します。クロールのスケジュールは管理ページの左側のメニューの[クロール全般]から設定します。

 設定の書式は、UNIXのcronに似ています。左から、秒、分、時、日、月、曜日を表します。例えば、毎日12:10amにクロールを行わせたい場合、「0 10 12 * * ?」とします。

クロールのスケジュール設定
クロールのスケジュール設定

 クロールが開始し、インデックスが作成されているかどうかは、左側のメニューの[セッション情報]から確認することができます。クロールが完了している場合、[セッション情報]のWebIndexSizeに検索対象としたドキュメント数が表示されます。

クロール状況の確認
クロール状況の確認
クロールが完了している場合の例
クロールが完了している場合の例

検索実行例

 クロール完了後、検索をすると下の画像のような結果が返されます。

検索例
検索例

検索画面のカスタマイズ

 ここでは、利用者が最も閲覧する、検索トップ画面と検索結果一覧画面をカスタマイズする方法を紹介します。

 今回は、ロゴファイル名を変える方法を示します。デザイン自体を変えたい場合については、シンプルなJSPファイルで記述されているのでHTMLの知識があれば変更することができます。

 まず、検索トップ画面は「webapps/fess/WEB-INF/view/index.jsp」ファイルを編集します。

検索トップ画面のJSPファイル
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="content-script-type" content="text/javascript" />
<title>Fess</title>
<link href="${f:url('/css/style.css')}" rel="stylesheet" type="text/css" />
</head>
<body>
<div id='main'>
<s:form action="search">
  <table>
    <tbody>
      <tr>
        <td><img id="logo" src="${f:url('/images/logo.gif')}" alt="<bean:message key="labels.search_top_logo_alt"/>" /></td>
        <td><div class="input">
          <html:text styleClass="query" property="query" title="Search" size="50" maxlength="1000"/>
          <input class="btn" type="submit" value="<bean:message key="labels.top.search"/>" name="search" />
        </div></td>
      </tr>
    </tbody>
  </table>
</s:form></div>
</body>
</html>

 検索トップ画面に表示される画像を変更する場合は、「logo.gif」の箇所を置き換えたいファイル名に変更します。ファイルは「webapps/fess/images」に配置します。

 <s:form>や<bean:message>などはJSPタグです。例えば、<s:form>は実際のHTML表示時にformタグに変換されます。詳しい説明はSAStrutsのサイトJSPに関するサイトをご覧ください。

 次に、検索結果一覧画面は「webapps/fess/WEB-INF/view/search.jsp」ファイルを編集します。

検索結果一覧画面のJSPファイルの一部
<div id="header">
  <s:form action="search">
    <div class="input">
      <s:link action="index" title="Fess Home">
        <img class="logo" src="${f:url('/images/logo-top.gif')}" alt="<bean:message key="labels.search_header_logo_alt"/>"/>
      </s:link>                                 
      <html:text styleClass="query" property="query" title="Search" size="50" maxlength="1000" />
      <input class="btn" type="submit" value="<bean:message key="labels.search"/>" name="search"/>
    </div>
  </s:form>
</div>

 検索結果一覧画面の上部に表示される画像を変更する場合は、「logo-top.gif」の箇所のファイル名を変更します。「logo.gif」の場合と同様に「webapps/fess/images」に配置します。

 JSPファイルで利用しているCSSファイルを変更したい場合は「webapps/fess/css」に配置されている「style.css」を編集してください。

まとめ

 全文検索システムであるFessについて、インストールから検索までと簡単なカスタマイズ方法について説明をしました。特別な環境構築も必要なく、Javaの実行環境があれば検索システムを簡単に構築できることを紹介できたと思います。既存のシステムにサイト検索機能を追加したいような場合にも導入できるので、ぜひお試しください。

 次回は、Fessがサポートするモバイルサイトの検索機能を紹介したいと思います。

参考資料

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Fessで作るApache Solrベースの全文検索サーバー連載記事一覧

もっと読む

この記事の著者

菅谷 信介(スガヤ シンスケ)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

曽根 孝明(ソネ タカアキ)

    大学院生。N2SM, Inc. でインターン中。   

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4526 2009/11/12 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー