Follow Us.RSS

2013年6月20日(木)全文検索サーバー Fess を試す

  • Fess は Apache ライセンスで配布されている全文検索サーバーです。CMONOS.JP で構築したサイトを検索できるかどうか試してみました。

  • (2013年6月20日(木) 午前11時37分36秒 更新)
  • このエントリーをはてなブックマークに追加Tweet

インストールは拍子抜けするほど簡単!

「5 分で簡単に構築可能な全文検索サーバー」のうたい文句通り、Fess のインストールはおそろしく簡単でした。それだけでなく Fess には日本語のわかりやすい管理画面までついてきます。ブラウザから簡単に設定を変更できるのはすばらしいですね!

ヘルプも充実。公式サイトのインストール解説を見れば、たとえコマンドが苦手でも、あっという間にインストールできるのではないかと思います。ざっくり説明すると、だいたいこんなかんじです。

  1. Fess 最新版をダウンロードします。
  2. zipファイルを解凍してできたフォルダを適当なフォルダに置きます。
  3. Unix環境では fess-server/bin の中にあるすべてのシェルスクリプトファイルに実行権を付加します。
    $ chmod +x bin/*.sh
  4. Unix環境の場合はstartup.shを実行します。
    $ ./bin/startup.sh

あとはスクリプトが全部やってくれるという超親切設計! インストール自体は一瞬で完了しました。

(テストではなくインターネットに公開する場合は、公式サイトのインストール解説にしたがって管理者パスワードの変更をお忘れなく。)

わかりやすい管理画面。HTTP経由でウェブページを巡回するウェブクロールのほか、namazu 同様、指定されたフォルダ配下のファイルをインデックスに追加するファイルシステムクロールなどが行えます。BASIC 認証でアクセス制限されたページも、ウェブ認証にユーザー名とパスワードを登録しておけば検索対象に含めることができます。

検索に関連した統計情報を表示することも可能です。

カスタイマイズ例

今回 Fess を試すにあたって設定したことをメモがわりにご紹介します。もしおかしなことを書いていたり、こうした方がいいよということがありましたら、ぜひコメント欄でご指摘くださいm(_ _)m。

※注意:カスタマイズ作業を行う場合は、作業の前に必ず Fess を終了させてください。

<script> タグの中身を検索対象としない

Fess のデフォルトの状態では <script> タグの中身が検索対象となっており、検索結果に JavaScript がそのまま表示されることがあります。サイトによってはその方が都合がいいこともあるとは思いますが、多くの場合 JavaScript をあまり見せたくないと思いますので、<script> タグの中身を無視するよう設定しました。

設定箇所は「fess-server/webapps/fess/WEB-INF/classes/s2robot_transformer.dicon」の34行めあたりです。コメントアウトされている部分のコメントタグ(<!-- -->)を外して有効化します。

<initMethod name="addPrunedTag">
<arg>"script"</arg>
</initMethod>

他にも、HTML5 で構築しているサイトなら、<aside> や <footer> を無視させると、よりよい検索結果が得られるかもしれませんね(最新記事一覧のタイトルがすべてのページでヒットしてしまうのを防ぎたい場合など)。

参考)Re: 表示されない文字の検索 (fess-user 57) - Fess: 全文検索システム (フェス) - SourceForge.JP

フォルダ名を変える

Fess にアクセスするにはデフォルトの状態では、「http://localhost:8080/fess/」にアクセスします。たとえば、これを「http://localhost:8080/search/」にしたい場合は次を変更します。

「fess-server/webapps/fess」フォルダ名を変更します。
「search」に変更します(fess-server/webapps/search)。
web.xml の管理画面関連パスを変更します。
「fess-server/webapps/search/WEB-INF/web.xml」60-67行めあたり。「/fess/」となっているところを「/search/」に書き換えます。
 <init-param>
<param-name>urlPatterns</param-name>
<param-value>/search/admin.*</param-value>
</init-param>
<init-param>
<param-name>loginPath</param-name>
<param-value>/search/login/</param-value>
</init-param>
「setenv.sh (Windows の場合は setenv.bat)」を書き換えます。
「fess-server/bin」にある起動用シェルスクリプトのうち「setenv.sh (setenv.bat)」を開き、「/fess/」となっているところを「/search/」に書き換えます。
$CATALINA_HOME/webapps/search/WEB-INF/logs/fess.out

以上でフォルダ名の変更は完了です。

参考)フォーラム: サポート - FESSのURLについて - Fess: 全文検索システム (フェス) - SourceForge.JP

Apache 経由で Fess にアクセスする

ここまでの作業によって「http://localhost:8080/search/」で Fess にアクセスできるようになりました。ただこのままでは、ポート番号を入力するのが手間ですし、たとえば「http://localhost:8080/」にアクセスすると真っ白な画面が表示され、ちょっと美しくないです。そこで Apache 経由で Fess にアクセスできるようにしましょう。

httpd.conf を書き換えます。
httpd.conf は「/etc/httpd/conf/httpd.conf」などにあります。MacOS X では「/private/etc/Apache2/httpd.conf」です。 httpd.conf に次の記述があるか確認します。記述がない場合は追記します。(モジュールがインストールされていない場合は、これらモジュールを含むよう指定した上で Apache を再インストールする必要があります。)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
ついでに後で作成する設定ファイル「httpd-proxy.conf」を読み込ませるため、ファイル末尾に次のように追記します。パスはそれぞれの環境にあわせて読み替えてください。
Include /etc/httpd/conf/extra/httpd-proxy.conf
Apache 経由で Fess にアクセスする設定を作成します。
先ほど httpd.conf に書き込んだパス(/etc/httpd/conf/extra/httpd-proxy.conf)に設定ファイルを作成します。
$ sudo vi /etc/httpd/conf/extra/httpd-proxy.conf
Password:
作成したファイルに次のように記述します。ディレクトリは Fess のパスにあわせます。
<Location /search/>
ProxyPass ajp://localhost:8009/search/
</Location>
もし Fess のフォルダ名を変えていない場合は、「search」ではなく「fess」になります。Fess とディレクトリ名をあわせないと表示が崩れますので注意してください。
Apache を再起動します。
$ sudo apachectl restart

これで「http://localhost/search/」にアクセスすると Fess が表示されるようになりました。

CMONOS.JP で構築したサイトを Fess で検索する

Fess にはウェブクロール機能がついているので、CGI や PHP で動的に生成されるページもインデックスしてくれるのが便利です。ただ、ウェブクロールを効率よく実行するには、使用しているツールにあわせてクロール対象を絞り込む必要があります。

たとえば CMONOS.JP の場合、「カレンダー」のリンクをたどり出すと、過去そして未来へ、際限なくページが生成されます。また「テーブルメーカー」には、表示オプションのバリエーションがたくさんある上に、項目ごとにソートするリンクもあります。何も設定していないと、Fess のウェブクローラーは、それらバリエーションのひとつひとつを、ソートできる項目の数だけ、何度も何度もぐるぐる巡回します。その組み合わせは膨大で、レコード数が少なくても、生成されるページはすぐに万単位になってしまいます。

動的に生成されるページをクロールするには、ツールにあわせた設定が必要不可欠と言えるでしょう。

CMONOS.JP にあわせたウェブクロール設定

CMONOS.JP の場合、だいたいこんなかんじにすると効率よくクロールしてくれるようでした。


設定名
localhost

URL
http://localhost/

クロール対象とするURL
http://localhost(?=/).*(/|\.(s?html?|cgi|cgi\?.+|cgi/.*|pdf|txt|docx?|xlsx?|pptx?|csv))$

クロール対象から除外するURL
http://localhost/error/.*
http://localhost/search/.*
http://localhost/robots.txt
.*/(lib|image|imageLib|history)/.*
.*\.pending/.*
.*m=(Editor|Input|Tools|TreeView|UserGeneratedFieldEditor|Ics).*
.*&c=[^&]+&c=[^&]+.*
.*&c=\d+(,|%2C).*
.*listtree.*
.*event_category=.*
.*&(date|ct|f|s)=.*
.*/start\.cgi\?(c=\w+&|)n=\d+&v=(?!listarticle)\w+$
.*/start\.cgi\?.*m=(TableViewer|TileViewer|Gate|DetailGate).*&n=.*
.*/m\.cgi.*
.*/counter\.cgi.*
.*/stat\.cgi.*
.*/taketori\.cgi.*

検索対象とするURL

検索対象から除外するURL
.*\?date=.*

設定パラメータ

深さ

最大アクセス数

ユーザーエージェント
Mozilla/5.0 (compatible; Fess/8.1; +http://fess.codelibs.org/bot.html)

スレッド数
5

間隔
1000ミリ秒

ブースト値
1

ブラウザ
PC
DoCoMo
au
Softbank

ロール

ラベル

状態
有効

「クロール対象とするURL」は最低限「http://localhost/.*」としないと、リンクをたどってインターネット上のウェブページも巡回してしまいます。

上表の「クロール対象とするURL」設定では、クロール対象をディレクトリ、HTML、 CGI、PDF、オフィス書類に限定しています。Fess は画像からもテキストを抽出するようなんですが、実際には画像などから有用なテキストを取り出せることはまれですし、画像ファイルまで巡回させるとその分無駄に時間がかかります。

またデフォルトの設定では 30秒に3ドキュメント巡回する設定となっており、このまま運用するとクロールに長い時間がかかります。インターネット上のサイトをクロール対象とする場合は、アクセス先に迷惑をかけないようクロール間隔を長めに取るべきですが、社内サーバなどアクセスが限られた環境で使用する場合は、間隔を短めに設定して問題ないと思います。

なお「設定ウィザード」もしくは「クロール全般の設定」の「スケジュール」で自動定期クロールのタイミングを設定できるので、深夜などアクセスの少ない時間を設定しておくとよいでしょう。

パスマッピング設定

インデックスされたページはそのままでは URL が「http://localhost/...」となるので、パスマッピングを設定します。下記例では表示時に「http://localhost/」を「/」に変換させています。Apache 経由で Fess にアクセスしていれば、これでだいじょうぶです。途中でサーバのドメイン名が変わっても設定変更の必要がない利点もあります。

【注意】Fess から見た Apache も Apache から見た Fess も「localhost」にあることに注意してください。Apache と Fess で内部的に「localhost」と設定してあっても、そのサーバに割り当てられたホスト名でアクセス可能です。ホスト名で設定する必要はありません。


[正規表現] http://localhost/
[置換文字] /
[処理方法] 表示時

[正規表現] ^(.*)&mod=[^&]+(.*)$
[置換文字] $1$2
[処理方法] クロール時/表示時

パスマッピング設定では正規表現と後方参照が使えるので、URL から必要のない文字列を削除することが可能です。上記二つめの設定のように、同じ内容を表示する URL が複数あって、それらをひとつの URL に統一したいときなどにも使えますね。

ブラウザから設定を確認・変更できるのは本当に便利です!

デフォルトのままで十分に美しく機能的な検索画面

Fess の検索画面は Bootstrap を使って今風にデザインされています。ロゴを変える程度で、ほとんど何もいじらずにそのまま使えそうです。

シンプルなメインページ。過去に検索されたキーワードに基づくオートコンプリート・サジェスト機能が用意されています。

機能的な検索結果画面。更新時期からさらに絞り込むことができます。

検索オプションを表示したところ。ソートと表示件数を変えられます。

いかがでしたか? 全文検索サーバー Fess、なかなかよくできていますよね。検索エンジンのベースとなっている Solr は海外では Digg など大規模なサイトでも使われているそうです。

実は今回、CMONOS.JP で構築したサイトを Fess で全文検索できるようにしたくて、先日公開した最新版では、動的にページを生成するツールのクエリをできるかぎりシンプルにしました。デフォルトの設定と同じ場合は表示オプションをクエリに含まないようにするなどしています。Fess で CMONOS.JP で構築したサイトのサイト検索を実現する際には、CMONOS.JP のアップデートもぜひご検討ください!

コメント

トラックバック

関連記事

[画像]

CMONOS.JP | 開発者ブログ | 地図で物件検索!「不動産サイト」

2010年3月15日 ... CMONOS.JP 専用サイトテンプレート「不動産サイト」は、不動産サイトのために作成 されました。Google マップを利用した物件検索や会社概要ページがあらかじめ 組み込まれています。
https://cmonos.jp/blog/2010031502/1.shtml
[画像]

CMONOS.JP | 開発者ブログ | Google カスタム検索で関連ページを表示

2014年1月22日 ... ちなみに、「ナビメーカー」の「ナビゲーションレイアウト」で設定する「Google によるサイト検索」も「Google カスタム検索」を利用するようになりました。「ナビゲーションレイアウト」 で設定を確認後、「ナビゲーション作成」で「ナビゲーション書き出し」 ...
https://cmonos.jp/blog/2014012200/1.shtml
[画像]

CMONOS.JP | 開発者ブログ | XREA で簡単 Namazu インストール

2008年9月2日 ... 格安で有名なレンタルサーバ XREA.COM には Namazu があらかじめ用意されてい ます。これを利用して、サイト検索を作ってみましょう!
https://cmonos.jp/blog/2008090200/1.shtml
[画像]

CMONOS.JP | 開発者ブログ | さくらで Namazu!

2009年7月17日 ... このサイトをさくらのレンタルサーバ・スタンダードに移転するにあたって、SSH で Namazu をインストールしました。さくらへのインストールを詳しく ... 検索ページの デザインを変更する場合はテンプレートを変更します。 さくらのレンタルサーバの ...
https://cmonos.jp/blog/2009071701/1.shtml
[画像]

CMONOS.JP | 開発者ブログ | ウェブデータベースを地図で検索!

2008年12月18日 ... テーブルメーカーに新しく追加された「GoogleMaps 表示」は、地図の表示範囲内に 関連するレコードを表示してくれるので、不動産物件や店舗・支店などのリストを表示 したいときとても便利です。レコード数が少ない場合、移動の度に再検索せ ...
https://cmonos.jp/blog/2008121800/1.shtml
[画像]

CMONOS.JP | 開発者ブログ | Google AJAX Search でサイト検索!

2008年7月22日 ... Google AJAX Search API を利用してサイト検索をするためのスクリプトを公開しました 。
https://cmonos.jp/blog/2008072200/1.shtml
[画像]

CMONOS.JP | 開発者ブログ | さくらで、快適 CMONOS.JP!

2009年7月17日 ... これまでと同じサイトを再現するには、Namazu のインストールが必要でしたので、SSH 経由で Namazu をインストールできる「さくらのレンタルサーバ スタンダード」を利用し ています。 同じサーバにサンプルサイト cmonos.com も収容しました ...
https://cmonos.jp/blog/2009071700/1.shtml
[画像]

CMONOS.JP | 開発者ブログ | 自動スクロール Safari 機能拡張「手ぶら ...

2013年9月4日 ... さっそく各種検索結果ページやツイッターを見るときに重宝しています。マウスを動かさず 眺めているだけでいいのでらくちんです☆. » 今すぐSafari 専用「手ぶら Safari」機能 拡張をダウンロード: ダウンロードした「HandsfreeSafari.safariextz」 ...
https://cmonos.jp/blog/2013090400/1.shtml
[画像]

CMONOS.JP | 開発者ブログ | もっと、Googleマップ!

2010年4月20日 ... テーブルメーカー」では、詳細表示の地図から地図を使った再検索が可能に (「KML ファイル」が指定されている場合は、「KMLファイル」が優先されます)。 ... こちらは「 不動産サイト」のサンプルに含まれる「物件検索」の詳細表示画面。これまで ...
https://cmonos.jp/blog/2010042000/1.shtml
[画像]

CMONOS.JP | 開発者ブログ

2015年1月13日 ... 2013年9月2日(月). 全文検索サーバー Fess を試す. Fess は Apache ライセンスで 配布されている全文検索サーバーです。CMONOS.JP で構築したサイトを検索できるか どうか試してみました。 インストールは拍子抜けするほど簡単!
https://cmonos.jp/blog/

更新情報

最近の記事

RSS

カレンダー



[日]
[月]
[火]
[水]
[木]
[金]
[土] 1

[日] 2
[月] 3
[火] 4
[水] 5
[木] 6
[金] 7
[土] 8

[日] 9
[月] 10
[火] 11
[水] 12
[木] 13
[金] 14
[土] 15

[日] 16
[月] 17
[火] 18
[水] 19
[木] 20
[金] 21
[土] 22

[日] 23
[月] 24
[火] 25
[水] 26
[木] 27
[金] 28
[土] 29

[日] 30
[月]
[火]
[水]
[木]
[金]
[土]

最近のコメント

RSS

最近のトラックバック

RSS

このページのトップへ

© CMONOS Co. Ltd.


PC 向けページに移動する