[トップページ][Namazu(Perl版)設置ノウハウ][Namazu正規版インストール覚え書き]

全文検索ソフト(Perl版)徹底比較

日本語全文検索エンジンソフトウエアにはさまざまな種類が公開されています。サーバーに負荷をかけず、大規模なサイトの検索に向くのはC言語で書かれたプログラムですが、コンパイルの必要がありますし、多くのプロバイダでtelnetを禁止している現状では個人のサイトに設置するのは難しいようです。
 ここでは設置が比較的簡単なPerl版のスクリプトを取り上げます。個人の小規模サイトならこれで十分でしょう。ホームページに全文検索エンジンを設置したいと考えている人の参考になれば幸いです。
 (いちいち読んでいる暇がない方は、結論をどうぞ)。

比較するのは下記の18のスクリプトです(かっこ内は作者のホームページ)。

【grep】
1.WASearch鷲崎弘宜のページ
2.WwwSearchとほほのWWW入門
3.簡易サーチエンジンWeb裏技
4.検索君Web新撰組
5.Simple Search日本語版ハ−トコンピュ−タ
6.Web SearchKENT WEB 註:これはフリーソフトではありません。エーアイ出版「KENTとつくろう! PerlでCGI」に収録されたスクリプトです)
7.PerlSearchホームページの飾り職人
8.ファイルシークTRY THE HOMEPAGEのterraさんの本「パワーアップCGI インタラクティブWebページを作ろう」=エーアイ出版=に収録されたスクリプトです)
9.FindWebTRY THE HOMEPAGE
10.Site_Search(すえぽんさいと)
11.Mamas(P.ink)
12.サイト内検索(未夢ちゃん.jp)
13.MyWebSearch(Final β Laboratory)
14.guruguruGOiGOi PROJECT
【インデックス作成型】
15.Splendid Searchアフリソフトウェア)
16.msearchきてーや.ねっと
17.検索BoyYpNS
18.Namazu全文検索システム Namazu
 ・結論
 ・他のPerl版全文検索スクリプト

15〜18はインデックス作成型、1〜14はいわゆるgrepで、インデックスを作成せず、検索のたびに全文検索を行いますから、サーバーへの負荷が大きく、検索速度も遅くなると言われています。しかし、自分の経験から言うと、検索対象ファイル数が少ない場合、速度的には問題ありません。NamazuはPerl版を使う場合、ローカルでインデックスを作成しなければなりません。

なお下記の設置例は「映画とネットの日々」(まったく更新していません。今やここに紹介した検索スクリプトのテストページと化しています。16ファイルあり、1ファイル当たりのサイズは30KB前後です)の検索用にアレンジしたものです。
 また、評価は5段階で行っていますが、個人的に設置の際に受けた印象で、すべての人に当てはまるわけではありません。検索速度は特にgrepの場合、サーバーの能力や混雑具合、検索対象ファイルのサイズと数に大きく影響されます。


WASearch

1.ファイル構成 wasearch2.cgi(検索スクリプト)waserch2.html(サンプルページ)jcode.pl(日本語変換ライブラリ)readme.html(説明書) SJISで書かれています。検索対象ファイルもSJISのみです。

2.設置例

3.概要 検索対象ファイルはワイルドカードのファイル名で指定します。例えば、”..readme/*.html”という風になります。作者は説明書に「各ページのスコアによるランク付け、ソーティング、カテゴリー(分野)の指定、該当ページの先頭からの指定量出力、といった機能を持つ点が強みです。」と書いています。特にバージョン2.2.2にアップして検索ヒット率が大変高くなりました。それまでは検索能力に少し疑問があったのですが、実用的なソフトに変わったといって良いと思います。惜しいのは検索結果の表示がファイルの冒頭だけの点。スタイルシートなどの記述も表示されてしまいます。キーワードの前後数行を表示するように改善できれば、と思います。

4.評価 設置難易度★★ 検索速度★★ デザイン★★★


WwwSearch(検索フォーム)

1.ファイル構成 wwwsrch.cgi(検索スクリプト)wwwsrch.html(サンプルページ)他にjcode.plが必要です。文字コードはSJIS。最新バージョンは3.14です。

2.設置例(「映画とネットの日々」を検索)
  設置例その2(「映画チラシコレクション」を検索)

3.概要 「とほほのWWW入門」にある検索ソフトです。普通のCGIプログラムにはほとんどコピーライト表示の設定がありますが、これにはありません。改造、再配布も自由となっています。ホームページの説明にはフォームからの呼び出し方法も記述してありますから、好きなページからCGIを呼び出せます。検索対象はディレクトリで指定します。デフォルトの設定でスクリプトを置いたフォルダから一つ上の階層にあるフォルダまでを検索するようになっていますが、特定の複数のフォルダを指定する場合、スクリプトの書き換えが必要です。また、cgi-binにしかCGIスクリプトを置けないサーバーでも(スクリプトに手を加えることによって)表示されるURIを単純置換することで対応しています。grepにしては高速ですし、検索ヒット率も高いようです。優秀さを感じさせるソフトです。

4.評価 設置難易度★★ 検索速度★★★ デザイン★★★★


簡易サーチエンジン

1.ファイル構成 jsearch.cgi(検索スクリプト)jcode.pl ファイルはSJISで書かれています。検索対象もSJISのみです。

2.設置例(「これはサーバーへの負荷が大きいのでリンクしていません」。と、長い間書いていましたが、nkfを使うバージョンを設置してみました)

3.概要 CGIの老舗「Web裏技」にあるスクリプトです。検索結果にはファイルのタイトル名だけを表示。and検索、or検索に対応しています。検索速度は標準的。nkfを使うバージョンとjcode.plを使うバージョンの2種類が用意されています。個人的な経験ですが、検索対象ファイルを多く指定すると、途中でタイムアウトになる場合がありました。20ファイル足らずの検索でタイムアウトになり、coreファイルができてしまいました。「Web裏技」にもサンプルは置いてありません。
 またホームページの説明には「この検索処理は時間がかかる日本語変換処理を伴っています。従って、対象とするファイル群が多いと検索に時間がかかり、CGIが実行を待機している時間を超えた場合、プログラムの実行エラーではなく、CGIタイムアウトによるサーバエラーになることがあります。データベース検索のような使い方ではなく、ちょっとした個人のホームページの文字列検索の範囲でご利用ください」とあります。利用はごくごく小規模のファイル検索に限られるようです。

4.評価 設置難易度★ 検索速度★★ デザイン★★


検索君

1.ファイル構成 hsearch.cgi(検索スクリプト)jcode.pl ファイルはEUCで書かれています。

2.設置例

3.概要 EUCのためか、検索速度は速い方です。難点は検索結果にファイルのタグが表示されること。これさえ改善されれば、設置も簡単ですし、初心者向けには打ってつけのソフトになると思います。ホームページには「消極的に公開中」とありますが、実用には十分耐えます。検索対象はディレクトリとファイルの種類を指定します。

4.評価 設置難易度★ 検索速度★★★ デザイン★


Simple Search(日本語版)

1.ファイル構成 README_J(説明書)search_j.pl(検索スクリプト)search_j.html(サンプルHTMLサーチページ)jcode.pl ファイルはSJISで書かれています。

2.設置例なし(サーバー負荷が大きいようなのでリンクをやめました)

3.概要 Matt Wright氏が制作した「Simple Search」を日本語でも検索できるように改造したもの。設置は難しくありません。久しぶりに試してみて、検索速度の遅さを痛感しました。検索ボタンを押した後、延々と待たされるので不安になって途中でやめてしまいたくなります。これでは実用的とは言えないでしょう。検索スクリプトが検索フォームを出力しないので、追加検索できず、検索のたびにHTMLに戻らなければならないのも難点。検索結果の表示がファイル名だけなのも残念です。しかし、最大の欠点は検索スクリプトが“search_j.pl”という名前であることです。プロバイダのサーバーによってはCGIスクリプトが実行できる拡張子を*.cgiに限っているところもあり(「さくらインターネット」など)、そういうサーバーでは使えません。製作から時間がたっており(バージョン1.0のコピーライトは1996年)、今これを使う理由は見あたりません。

4.評価 設置難易度★ 検索速度★ デザイン★★


Web Search

1.ファイル構成 search.cgi(jcode.plが必要です)。文字コードはSJIS、検索対象もSJISのみです。

2.設置例

3.概要 CGI配布サイトとしては最もアクセスが多いと思われる「KENT WEB」のKENTさんが書かれた「KENTとつくろう! PerlでCGI」(エーアイ出版、2600円)に収録されています。
 KENTさんは「CGIでこれ(hiro註:サイト内全文検索のこと)を実現するものとして有名なものは、Namazuがあります。とても高級なプログラムであり、操作性もすぐれているので、お勧めの一品です。(中略)今回の全文検索はあくまでも簡易的なものにとどまらざるをえません。本格的な検索エンジンを作成したい場合はやはり、先に紹介したNamazuの導入をお勧めします」と但し書きをしていますが、このスクリプトもセンスの良さを感じさせます。
 スクリプトそのものは初歩的なgrepですが、機能を絞り、単純化してあるので、grepの中では高速の部類に入ると思います。and検索のみで、or検索には対応していません。検索結果にはヒットしたファイル数とキーワードの前後を表示します。設置は極めて簡単。デザインがやや味気ないのが難でしょうか。これを手に入れるためだけに2600円払うのは高いのですが、同書にはこのほか掲示板、アクセスカウンター、データベース、検索エンジン、チャットのスクリプトが収録されており、CGIの設置やカスタマイズ法も詳しく説明されています。(2000年5月19日追加)

4.評価 設置難易度★ 検索速度★★★ デザイン★★ 


PerlSearch

1.ファイル構成 perlsearch.cgi(検索スクリプト) jcode.pl 文字コードSJIS。

2.設置例

3.概要 ホームページの素材やテクニックを提供するサイトとして有名な「ホームページの飾り職人」にあるスクリプトです。特徴は作者によると、「POSTとGETの両方のMETHOD属性に対応」「検索対象にするページの設定は、拡張子で指定する」「SJIS、JIS、EUCのいずれの文字コードで書かれたページでも正しく検索することができる(表示はSJIS)」「and検索やor検索に対応」などです。上のWeb Searchに比べると、検索速度では劣るようです。その代わりJIS、EUCコードのファイル検索とor検索に対応しているメリットがあります。検索結果はヒットしたファイル数とページタイトルを表示します。
 バージョン2.0から検索対象ファイルはSJISのみになりました。検索速度の向上のためのようですが、それならば検索キーワードの前後を表示するWebsearchの方が良いような気がします。作者のホームページからはバージョン1.0と2.0のどちらもダウンロードできます。(2000年10月19日修正)

4.評価 設置難易度★ 検索速度★★★ デザイン★★


ファイルシーク

1.ファイル構成 fileseek.cgi(検索スクリプト)search.htm(検索ページ)各種gif画像

2.設置例

3.概要 TRY THE HOMEPAGEのterraさんが書かれた「パワーアップCGI インタラクティブWebページを作ろう」(エーアイ出版)に収録されたスクリプトです。全文検索のほか、サイトのディレクトリ構造を表示できます。ファイル名を覚えていて、どのディレクトリに入れたか分からなくなった場合に便利でしょう。ですからこれは公開せずにサイト管理者の検索用途としても使えます。検索速度は速い方ですが、やはりサーバーが混雑している場合には遅くなります。検索結果の表示が変わっていて、面白いスクリプトと思います。

4.評価 設置難易度 ★ 検索速度★★★ デザイン ★★★


FindWeb

1.ファイル構成 findweb.cgi(スクリプト本体) perl-lib.pl(ライブラリ) jcode.pl find.gif(画像) 文字コードSJIS

2.設置例

3.概要 普通のgrepですが、検索速度は速い方です。検索結果にはキーワードの前後を表示します。設置も簡単で、初心者向けでしょう。ただ、デフォルトでは検索結果のページタイトル(タイトルタグで表示される部分)がURLになってしまっていたので、findweb.cgiの変数をちょっと書き換えました。

4.評価 設置難易度★ 検索速度★★★ デザイン★★


Site_Serach

1.ファイル構成 site_search.cgi(jcode.pl必要)文字コードSJIS。

2.設置例

3.概要 一般的なgrepで速度はやや遅く感じますが、スクリプトが一つだけなので設置は簡単です。and、or検索に対応。検索範囲は特定のディレクトリ以下で、検索させたくないファイルを列記することで、検索範囲から外せます(デフォルトではスクリプトを設置したディレクトリ以下をすべて検索します)。検索結果はページタイトルとキーワード(赤い文字で表示)の前後を表示します。手軽に設置できる初心者向けのスクリプトと思います。

4.評価 設置難易度★ 検索速度★★ デザイン★★


Mamas

1.ファイル構成 jcode.pl mamas.cgi(スクリプト本体) OMAKEsample(デザイン違いのサンプル) 文字コードSJIS

2.設置例

3.概要 これも普通のgrepで、検索対象はSJISのみ。and、or検索可能。検索結果の1ページあたりの表示数を変更できます。デザインが良く、その変更も容易です。検索非対象ディレクトリの指定もできます。

4.評価 設置難易度★ 検索速度 ★★ デザイン★★★


サイト内検索

1.ファイル構成 jcode.pl websearch.cgi(本体) 文字コードEUC

2.設置例

3.概要 ヒット件数(キーワードの出現回数)と詳細な表示ができるgrep。スコアリングによって並べ替える機能も欲しいところです。検索非対象ディレクトリの指定が可能。検索キーワードのログも残せます。

4.評価 設置難易度★ 検索速度★★ デザイン★★


MyWebSearch

1.ファイル構成 mwsearch.cgi(本体) config.pl(設定ファイル) テンプレート(header.html list.html footer.html error.html) jcode.pl sample.html(検索ページのサンプル) test.cgi(設定調査用スクリプト) 文字コードEUC

2.設置例

3.概要 and、or、完全一致、正規表現での検索ができるgrep。検索キーワードの出現回数で並べ替えるスコアリング機能あり。検索結果のページはテンプレートファイルで容易にデザインでき、独自のマクロ文字列の使用が可能です。SJIS、EUC、JISのページを検索できるなど、grepの中ではかなり作りにこだわったスクリプトと思います。Perlの標準モジュールを多用しているため、@niftyなどモジュールのないプロバイダではスクリプトを書き換える必要があります。設置対象は100〜200ファイル程度を想定しているそうです。

評価 設置難易度★★ 検索速度★★ デザイン★★★


guruguru

1.ファイル構成
guruguru.cgi(スクリプト本体)g_settei.cgi(全体設定ファイル)LOC_guruguru(ロック用ファイル)Log_guru.txt(ログ保存ファイル)KLog_guru.txt(経過ログ保存ファイル=自動生成)jcode.pl guruguru.gif(ロゴ画像)banner.gif(バナー画像)index.html(ダミー)検索スクリプトはEUCで書かれています。

2.設置例

3.概要 AND、OR検索のほか、キーワードの前に!を付けることでNOT検索が可能。検索するファイルの拡張子も指定できます。ファイル中にある検索キーワードの出現回数もカウント。検索ログも残します。速度は少し遅いかなというぐらいのレベルですが、実用上は問題ありません。一番の特徴は検索結果で、キーワードのある部分を複数表示します。また、Highlightというリンクをクリックすると、検索キーワードをハイライト表示したファイルが出てきます。名前通り、Googleのキャッシュをクリックした場合と同じ効果を狙っているのでしょう。Perl版のスクリプトは検索に関しては、どれも同じような構造なので、こういう遊び心のある部分で差別化を図るのは面白いと思います。
 個人使用は無料ですが、商用・法人使用の場合は15,000円のシェアウェアとなっています。

4.評価 設置難易度★★ 検索速度★★ デザイン★★★


Splendid Search

1.ファイル構成
(1)sysman.cgi(管理ユーティリティ)makeidx.cgi(索引作成ユーティリティ)smplsrch.cgi(検索スクリプトサンプル)srchidx.pl(索引検索ライブラリ)asscomm.pl(共通ライブラリ)jcode.pl(日本語変換ライブラリ)ass.cfg(初期設定ファイル)default.dir(検索対象フォルダ定義ファイル)default.htm(検索画面背景テンプレート)default.qr(クエリーフォームテンプレート)default.rt(検索結果テンプレート)

2.設置例(R1.7Beta3

3.概要 2001年1月31日から新バージョンR1.6の配布が始まりました。個人利用は無料、商用利用は2000円のシェアウェアです(個人も1カ月以上続けて使う場合はユーザー登録が必要)。
 旧バージョンと同様、インデックスは検索対象の絞り込みに使っています。検索対象ファイルはフォルダ名での指定が可能になりました。検索速度は標準的。ファイル数が少ないうちはインデックス作成の効果はあまり感じられません。
 マニュアルによると、R1.6の改善部分は次の通り。
 「大きな索引の作成時に Webサーバーとの接続がタイムアウトになってしまうのを防ぐ為に、索引の作成を分割して行う仕様に変更」
 「索引検索機能をライブラリ化し、検索スクリプトを独自に開発できるようにした」
 「管理者パスワードの設定を、管理ユーティリティの初回起動時に行うようにした」
 インデックス作成時にCGIのタイムアウトにならないような仕様となったのは歓迎ですが、UNIX系OS専用となりWindowsでは動作保証していません。またプロバイダによっては設置できないところもあるようです。私の場合、「さくらインターネット」ではダメでした。設定が悪かったのかもしれませんが、初期設定を読み込めないエラーとなりました。パーミッションを指定の666ではなく、755にしてみると、パスワード生成まではうまくいきましたが、インデックス作成の最後でサーバーエラー。さくらインターネットの特殊な事情かもしれません。(註:ホームページのサポート掲示板にはass.cfgのIDXMAX="5"を1に変えるとうまくいくとの投稿があります。試したところ、これでOKでした。ただし、インデックス作成に少し時間がかかります。キーワードによってはなぜかサーバーエラーが出る場合がありました)
 別のプロバイダ(WAKWAK、@nifty=旧Infoweb)でも666ではエラー。777で動作しました。ただし、これはセキュリティー上の問題があるので、インデックスを作成し終わったら、755などにしておいた方がいいでしょう。

5月8日に新バージョンR1.7Beta1が公開されました。現在、Beta3(2002年2月4日)までリリースされています。ベータバージョンをダウンロードするにはR1.6でユーザー登録する必要があります。作者によると、Beta3の改良点は

・カスタマイズ可能な「絞り込み検索フォーム」
・改ページ表示とボタン表示とリンク表示から選択可能
・より使いやすくなった管理ユーティリティ
・その他のバグフィックス
とのことです。

ホームページによると、バージョンアップの内容は、設置が(Perlのパスを変える以外は)インデックス作成まですべてブラウザ上から可能になったことと、検索結果のソート順の指定が可能になったこと。加えてR1.6に比べて、検索速度、ヒット率とも向上した感じを受けます(もっとも映画チラシコレクションはファイル数が100ファイル以下ですし、文書サイズも小さいので他のスクリプトと単純比較はできません)。

検索結果にさまざまな表示ができることはメリットでしょう。Namazuよりもフレキシブルではあります。ただし、「索引検索のみ」を選ぶと、検索キーワードは赤の太字にはなりません。
 まだマニュアルが不十分なため、パス設定など設置で戸惑う場合もあると思います。同じインデックス作成型の検索エンジンでもNamazuやmsearchに比べて利点と言えるのはインデックスのサイズが小さいことでしょう。ホームページ容量に余裕のない方は選択肢に入ると思います。

4.評価 設置難易度★★★ 検索速度★★★★ デザイン★★★


msearch

1.ファイル構成 genindex.cgi(インデックス作成CGI)genindex.pl(ローカルインデックス作成プログラム)msearch.cgi(検索CGI)fold.pl(日本語文字列折り返しライブラリ)default.cfg(設定ファイルの例)jcode.pl indexing.pl(インデックス作成ライブラリ ) 文字コードEUC

2.設置例バージョン1.52

3.概要 インデックス作成型の検索エンジンです。検索結果にはページタイトルとURI、ページの先頭の一部を表示します。インデックスはローカルでもサーバーでも作成できます。私が加入している「さくらインターネット」ではサーバー上でCGIからの作成はできませんでしたが(サーバーのスペックが低かったためでしょう。現在のサーバーでは可能です)、同梱のgenindex.plをtelnetから(つまりシェルから)実行すれば、インデックスは作成できます。ローカルでのインデックス作成もgenindex.plを使います。作成したインデックスファイル(mindex.dat)をFTPからアスキーモードで転送すれば、使用できます。
 ローカルでNamazuと同じファイル数(350ファイル)でインデックスを作ってみたところ、ファイルサイズは約1.7MB(Namazuは2.4MB)。にもかかわらず検索は速いです。ローカルではNamazuと比べても遜色がありません。サーバーではやや遅くなりますが、十分に実用的です。インデックスだけを検索するのはNamazuと同じ方式。Splendid Searchとは異なり実際のファイルは検索しませんから、ホームページとは別サーバーに置いて負荷を分散することができます。
 このインデックスはエディタで開いてみると分かりますが、検索対象ファイルからタグを取り除いて全文を1つのファイルにまとめています。検索が速いのはこの1つのファイルのみ検索対象にしている(grep対象の単純化)ことも要因なのでしょうか。インデックスのサイズが数MBまで大きくなると、検索時間も多少影響を受けてくると思われますが、今のところ体感上はあまり差がありません。
 and検索のほか、not検索にも対応しているのは大きなメリット。インデックス作成に要する時間はSplendid SearchやNamazuに比べて随分速く、設置自体も簡単。少し気になるのは英語がすべて大文字で表示されることでしたが、これはバージョン1.3から解消されています(その分、速度が若干落ちたようです)。バージョン1.3では検索結果で、キーワードが太字表示されるようになっています。
 cronでのインデックス自動更新にも対応しており、初心者から中級者までお勧めの全文検索エンジンと言えます。なおバージョン1.41以降からCross-Site Scriptingのセキュリティーホールに対応したそうです。

telnetからのインデックス作成は以下のようになります。

% perl genindex.pl
genindex.pl -- index generator for msearch
Copyright (c) 2000-2002 Katsushi Matsuda. All Right Reserved.
Display kanji code is EUC

インデックス対象ディレクトリは?(必須)
> ../../column/
インデックス対象ディレクトリのURLは?(必須)
> http://cinema1987.org/column/column/
インデックス対象ファイルの拡張子は?(必須)
> .htm,.html
非インデックス対象ディレクトリは?
>
非インデックス対象ファイルは?
>
非インデックス対象キーワードは?
>
ランキング方法は?
[1] 最終更新日時-降順
[2] 最終更新日時-昇順
[3] タイトル-降順
[4] タイトル-昇順
[5] URL-降順
[6] URL-昇順
[0] なし
どれにしますか?[0〜6] > 1
インデックス作成を開始します
■■■既存のインデックスを読み込みます
■■■完了(0ファイル)
■■■インデックス化するファイルを収集しています
■■■完了(16ファイル)
■■■インデックスから削除(0ファイル)
■■■インデックスの更新(0ファイル)
■■■インデックスに追加(16ファイル)
■■■インデックスを保存しています
■■■完了(16ファイル)
インデックス作成は完了しました

4.評価 設置難易度 ★ 検索速度★★★★★ デザイン★★★★

※Unicodeの文書を検索可能にしたUnicode版msearchを毛流麦花(モールバッカ)さんが公開されています。これを使用すると、XML文書なども検索可能になります。

HP内全文検索エンジン - Unicode版msearch

※msearchバージョン1.50と1.51には「ディレクトリトラバーサルの脆弱性」があるそうです。


検索Boy

1.ファイル構成  KB_file_list, KB_haita, KB_index(以上ディレクトリ)。KB_template_b.html(表形式出力用雛型ファイル)KB_template_e.html(テキスト形式出力用雛型ファイル)KB_template_i.html(リスト形式出力用雛型ファイル)KB_template_r.html(行形式出力用雛型ファイル)readme_docs(説明書、被検索用サンプルファイルを入れたディレクトリ)jcode.pl,K_Boy101.cgi(『検索Boy』本体プログラム)KB_cnf.cgi(設定ファイル)KB_tbl.cgi(検索Boy』の補助ファイル)readme.txt,sample.html(検索用サンプルHTMLファイル)

2.設置例(フリー版)

3.概要 インデックス作成型の検索エンジンで、フリー版と商用版(2,857円)があります。フリー版はand検索のみ可能などの制限があります。ファイル数は多いですが、書き換えるファイルは本体CGIのPerlのパスと設定ファイルのパスワード、検索対象ファイルだけです。
 ただ、CGI初心者が動作させることは難しいかもしれません。インデックス作成時に負荷が大きいためか、CGIエラーが起きます。さくらインターネットではサンプルのインデックス作成はできましたが、ファイル数を増やすとエラー。WAKWAKでは動作できましたが、いろいろと手を加えました。
 WAKWAKには@niftyと同じようにcgi-binディレクトリにHTMLファイルは置けませんので、サンプルファイルをpublic_html以下に置いてパスを書き換える必要があります。設定ファイル(KB_cnf.cgi)の 「検索対象ディレクトリとURLの整合」の部分は以下のように書き換えました。

==================================
検索対象ディレクトリとURLの整合
==================================
■被置き換え文字列の指定
<12>
../../public_html/
<END>

■置き換え文字列の指定
<13>
http://www.aa.wakwak.com/~hoge/
<END>

ただし、これでインデックス作成を実行すると、エラーになります。「被置き換え文字列の指定」を空白にしてインデックスを作成すると、検索結果にhttp://www.aa.wakwak.com/~hoge/public_html/という風にpublic_htmlがURLに入ってしまい、ファイルにジャンプできません。仕方がないので、インデックスファイルをダウンロードした後、エディタの置換でpublic_htmlを削除しました。これで動きましたが、あまり良い方法とは言えないでしょう。
 そこでK_Boy101.cgiの置換部分を少し書き換えて実行したら、インデックス作成はうまくいきました。今後、作者の方で改良が行われるかもしれません。いずれにしてもSplendid Searchやmsearchが行っているようにインデックス作成時の負荷を小さくする工夫を取り入れると、より実用的な検索ソフトになると思います。
 なお作者のホームページにはFreeBSD上での動作確認しか書いてありませんが、WindowsXP、Apache、Active Perlの組み合わせでも動作しました。設置例はローカルでインデックスを作り、バイナリモードでアップロードしたものです。

4.評価 設置難易度 ★★★ 検索速度★★★ デザイン★★★


Namazu

1.ファイル構成 ファイルはSJIS、EUCコード、C言語で書かれています。以下、Namazu for win32のREADME.txtからの引用です。

  自己解凍ファイル nmz2012.exe を実行すると以下のファイルが得られます。

[ Namazu に関するドキュメント ]
  namazu\README.txt         : このドキュメント (簡単な説明書)
  namazu\ERROR.txt          : 自動設定が失敗したときに表示されるファイル
  namazu\NEWS.txt           : ニュース、最近の更新履歴
  namazu\man\               : roff形式のマニュアルが入っている
  namazu\share\namazu\doc\ja: manual.html   - 全文検索システム Namazu 説明書
  namazu\share\namazu\doc\ja: nmz.html      - NMZ.* ファイルの仕様
  namazu\share\namazu\doc\ja: tips.html     - Namazuの豆知識
  namazu\share\namazu\doc\ja: tutorial.html - Namazu 2.0 入門

[ Namazu の実行に最低限必要なファイル ]
  namazu\NMZSETUP.BAT       : 自動設定を行うバッチファイル
  namazu\bin\namazu.exe     : namazu の実行ファイル
  namazu\bin\mknmz          : namazu のインデックスを作る Perl スクリプト
  namazu\bin\mknmz.bat      : mknmz を ActivePerl の pl2bat で変換したもの
  namazu\etc\namazu\        : 設定ファイルを入れておく所
  namazu\share\locale\      : 国際化に対応したメッセージデータが入っている
  namazu\share\namazu\      : namazuの実行に必要なファイルが入っている
  namazu\libexec\namazu.cgi.exe : http server で実行する為のCGIプログラム
  namazu\var\namazu\index\  : デフォルトのインデックスを入れておく所

[ その他便利なコマンド ]
  namazu\bin\bnamazu        : NMZ.f の内容を lynx などで見るツールです
  namazu\bin\gcnmz          : インデックスの無効なエントリのゴミを掃除する
  namazu\bin\kwnmz          : キーワードインデックスを作成する
  namazu\bin\mailutime      : mailの time stamp をmail内のヘッダに合わせる
  namazu\bin\nmzgrep        : namazu の実行結果に egrep をかける
  namazu\bin\rfnmz          : NMZ.field.*.i を再構築するツール
  namazu\bin\vfnmz          : 検索結果の表示を preview するツール
  namazu\bin\bnamazu.bat    : bnamazu  を ActivePerlのpl2batで変換したもの
  namazu\bin\gcnmz.bat      : gcnmz    を ActivePerlのpl2batで変換したもの
  namazu\bin\kwnmz.bat      : kwnmz    を ActivePerlのpl2batで変換したもの
  namazu\bin\mailutime.bat  : mailutimeを ActivePerlのpl2batで変換したもの
  namazu\bin\nmzgrep.bat    : nmzgrep  を ActivePerlのpl2batで変換したもの
  namazu\bin\rfnmz.bat      : rfnmz    を ActivePerlのpl2batで変換したもの
  namazu\bin\vfnmz.bat      : vfnmz    を ActivePerlのpl2batで変換したもの

[ ActivePerl専用モジュール ]
  namazu\ppm\PPM-INSTALL.BAT: Perl モジュールの自動インストーラ
  namazu\ppm\PPM-README*.TXT: Perl モジュールの説明書き
  namazu\ppm\500\*.ppd      : ActivePerl build 5xx 専用バイナリモジュール
  namazu\ppm\600\*.ppd      : ActivePerl build 6xx 専用バイナリモジュール

[ 開発者向けファイル ]
  namazu\HACKING.txt        : コンパイルの方法など技術的な話し
  namazu\HACKKIT.tgz        : コンパイルに必要なパッチやスクリプト等
  namazu\include\namazu\    : インクルードファイルが入っている
  namazu\lib\               : ライブラリが入っている

2.設置例
Namazu perl版
Namazu2.0.16 UNIX版

3.概要 あまりにも有名な最強最速のサーバー内検索ソフト。元々の作者は高林哲さんで、バージョン2.0からNamazuプロジェクトの共同開発体制に移りました。UNIX用に書かれたプログラムのためコンパイルやtelnet環境が必要ですが、Windows用に移植されたバイナリプログラムNamazu for win32があり、これを使用すれば、インストール自体は難しくはありません。これとPerl版(pnamazu.cgi)を組み合わせれば、一般のプロバイダで使用可能です。Namazuはローカルで使うと、その検索の速さに感動します(1秒かかりません。作者によると、0.1秒程度とか)。Perl版は検索速度では劣りますが、それでも最速でしょう。また、アンカータグ単位で検索結果を表示できるので、長いHTMLファイルを書いている場合にも検索が便利です。詳しくはNamazu(Perl版)設置ノウハウを参照してください。

検索には作成したインデックスを利用します。インデックスのサイズが大きくなるのが難点ですが、その信頼性は多数の公的機関で採用されていることからも証明済みです。日本の検索エンジンのスタンダードと言ってよいでしょう。Perl版は「プロバイダにある自分のページに検索エンジンを載せたい」との声に応えるべく作られたもので、CGI として動作させることを主な目的としています。「CGIとして動作」というのはインデックスをCGIで呼び出すという意味。Namazu本体をローカルにインストールした上でインデックスを作成し、サーバーにアップロードする必要があります。

Namazuはインデックスを検索してその結果を表示します。結果表示はインデックスを基に作成されます。インデックスファイルを別のサーバー(プロバイダ)に置いて検索させることが可能で、サーバー容量や負荷の軽減を図ることもできます。インデックスのファイルサイズはバージョン2.0からそれまでの半分程度になりました。自分の場合、約400ファイルで2.8MB余り。バージョン1.3x以前を導入している人はバージョンアップをお勧めします(インデックスの互換性はありません)。インデックスは更新ファイルのみの作成に対応しています。

4.評価 設置難易度★★★ 検索速度★★★★★ デザイン★★★★


結論

設置の容易さやスクリプトの完成度から言えば、grepの中で初心者の方に一番のお勧めはWwwSearchでしょう。検索も高速ですし、検索結果の表示も満点です。ファイルが多くなると、不利でしょうが、個人のページの検索ならこれがベストと思います。最近、Perl版の検索スクリプトも増えてきましたが、結論としてこれは変わりません。他のスクリプトに与えている影響も少なくないようです。

ただ、スコアリング(検索結果の重み付け)機能も欲しいとなると、Wasearch、MyWebSearchなどが選択肢に入ってきます。grep方式の場合、スクリプトを見れば分かるようにそれほど複雑なものではありません。スコアリングの処理を付け加えると、結果の表示がやや遅くなる傾向があります。処理が多くなるわけですので、これはやむを得ないことかもしれません。grepタイプで検索が遅くなったら(検索対象ファイルが増えてきたら)、インデックス作成型に乗り換えた方がいいでしょう。特にNamazuかmsearchをお勧めします。Namazuはかつてはドキュメントが少なく、設置が難しかったのですが、今はWeb上に設置方法を紹介したドキュメントがたくさんあります。

どの程度のファイル数までgrepで対応できるか、その判断は難しいところですし、サーバーの能力にも左右されるのは前述した通りですが、検索ボタンを押して10秒以上も待たされるようになったら、乗り換えの時期と言えます。10秒という検索時間は検索エンジンソフトとしては失格と言って良いですし、サーバーへの負荷もそれだけ大きくなります。

検索エンジンソフトに限らず、CGIを導入する際にはローカルでのテスト環境を整えることがとても重要です。スクリプトの改造などを考ると、これは必須といってもよいでしょう。ANHTTPDやApache for win32はパソコンでCGIやSSIのテストができる大変便利なソフトですから、導入をお勧めします。


他のPerl版全文検索スクリプト

このほかに気づいたPerl版の検索スクリプトを以下に挙げておきます。デザインにそれぞれ工夫がしてありますが、grepなので動作は上のスクリプトとほとんど変わりません。Boo Words Searchは好きなページの好きな部分に検索結果を表示できるのが強みでしょうか。

自ホームページ検索簡略版Shin's Page)=設置は簡単。スクリプトはEUCで書かれています。
Boo Words SearchBoo Boo 倶楽部))=パス指定で設置にちょっと手間取りました。
★自分のサイトを検索するsearch.cgi(CGI/Perlハンドブック)=cgi-lib.pl必要、jcode.pl不要。EUCのファイルは文字化けします。検索能力もちょっと疑問。

MAIL to:hiro 
[TOP][BACK][NEXT]