◆
wwwsearch
とは…
- とほほのWWW入門で配付しているホームページの全文検索CGIです(改造、再配布は自由)
- インデックス型ではなくホームページを全文検索するタイプです。(設置は簡単ですがサーバーの負荷が大きいです)
- 検索キーワードは、AND又はOR条件で複数指定できます。検索結果にページ名とページの記述を一部表示します。
- 検索対象ファイルは、同じサーバー内にあるHTMLファイルやTEXTファイルのみです。
- その他機能面の詳しい解説は、オリジナルの解説ページをご覧下さい。
- こちらの再配付バージョンでは、ニフティ用に検索結果のURL置替設定及び検索対象外ディレクトリ設定を追加してます。
■動作サンプルはこちら
◆スクリプトの入手方法
オリジナル版はとほほのCGIソフト集
の「WwwSearch Ver3.09 - 検索フォーム」からダウンロード出来ます。
ここではニフティ用にアレンジしたスクリプトを用意してますので下のリンクからダウンロードして下さい。
■wwwsrch309_nif.lzh(ニフティ用改造版)
ダウンロードした圧縮ファイルの中には、以下の4個のファイルが入ってます。
| wwwsrch.cgi |
…CGIスクリプト本体 |
| wwwsrch.log |
…検索結果のログファイル |
| wwwsrch.htm |
…検索フォーム設置サンプル |
| jcode.pl |
…日本語コードライブラリ |
◆@nifty対応のディレクトリ構造
@niftyには、cgi-binにおけるファイルに制限があります。(共通事項)
まず、Wwwsearchを設置する為に以下の様なディレクトリを作成して
作業を進めます。
Root/ ←あなたのルートパス
|
+--cgi-bin/ ←http://hpcgi▲.nifty.com/■■■■■■
| |
| +--search/(cgi本体を設置する場所)
|
|
+--homepage/ ←http://homepage▲.nifty.com/■■■■■■
※青いディレクトリは新しく作成したモノ
|
◆スクリプトの変更箇所
テキストファイルの扱えるエディタ等でwwwsrch.cgiを開きます。
以下の説明を読んであなたの環境に合わせて各種の設定を変更して下さい。
以下の設定例は、スクリプト本文内の記載順で設定項目を説明しています。
尚、設定例の文字の色の意味は以下の通りです。
●黒い文字…「スクリプトの本文」です。
●青い文字…「通常は変更する必要がない」設定です。
●赤い文字…「ユーザーが任意に変更できる」設定です。
●緑の文字…「設定項目の説明文章」です。
●紫の文字…「設定項目の注意事項」です。
1行目 … perlのパスを@nifty用にする(変更の必要はありません!)
#!/usr/local/bin/perl
#
=================================================================
# 名前: wwwsrch.cgi Ver3.09
# 機能: ホームページの内容を検索するCGIスクリプト。
#
種別:フリーソフト(私用・商用問わず、利用・改造・流用・再配布可)
# 作者: 杜甫々
# 参照: http://tohoho.wakusei.ne.jp/
#-------------------------------------------------------------------
# nifty用アレンジ by Season(我楽多cgi@nifty)
# 2001/07/07 検索結果のアドレス置替用変数($target_url)の追加
# 2001/07/07
検索対象外フォルダの指定機能を追加
#
=================================================================
# 初期化パラメータ
#
=================================================================
# ★ Perlのパス名
# 1行目の #!/usr/local/bin/perl
の行を、使用しているプロバイダやサーバー
# の環境にあわせて変更してください。
# ★
検索対象フォルダ
#
検索対象のフォルダ名を指定してください。http://〜
のようなURLを指定す
# ることはできません。ドットドット(..)は「ひとつ上のフォルダ」を意味し
# ます。
$target_dir = '/homepage';
$target_url = 'http://homepage▲.nifty.com/■■■■■'; #nifty用(2001/07/07 by Season)
※$target_dirには、全文検索の対象となる最上位フォルダのパスを指定します(最後の
/ は必要ありません)
ニフティの場合は、/homepageが最上位フォルダのパスになります。
サブフォルダを検索対象としたい場合は/homepage/subdir(subdirは任意のフォルダ名)の様に設定してください。
※$target_urlには、全文検索の対象となる最上位フォルダのURLを指定します(最後の
/ は必要ありません)
例1:対象フォルダが/homepageの場合は、http://homepage▲.nifty.com/■■■■■(最上位のURL)と指定します。
例2:対象フォルダが/homepage/subdirの場合は、http://homepage▲.nifty.com/■■■■■/subdirと指定します。
URLの▲と■■■■■の部分は、あなたのホームページアドレスに合わせて変更します。
ニフティではCGIとHTMLの設置場所が別々なので検索結果のページURLを正しいアドレスに置きかえる為に必要な
設定です
# ★
検索対象外フォルダの設定(2001/07/07 by
Season)
#
検索対象外のフォルダ名を絶対パスで指定して下さい。
@outdir = (
'/homepage/test',
'/homepage/bkup',
'',
''
);
※検索対象から除外したいフォルダのパスを必要な数だけ指定します。(最後の
/ は必要ありません)
検索対象フォルダを最上位(/homepage)にした場合、試験中や作成中のHTMLまで検索でヒットする事があります。
予期せぬ検索結果を回避する為に検索して欲しくないフォルダのパスをココに連続して記述します。
(例)以下の様なディレクトリ構造の場合、上記の設定では/homepageとサブフォルダの/Profile、/Diary、/Linkを
検索対象としますが/testと/bkupは検索範囲の対象外となります。
/Root
|
+---/cgi-bin
|
|
+---/homepage ←
検索対象フォルダ(最上位)
|
+---/Profile
|
+---/Diary
|
+---/Link
|
+---/test ←
検索対象外
|
+---/bkup ←
検索対象外
# ★
検索対象ファイル
#
検索対象とするファイルの拡張子を指定します。.htm
や .txt などのテキスト
# ファイルのみ指定できます。.doc や .xls
などの専用アプリケーションが必要
# なものは指定できません。
$suffix = ".htm .html";
※普通はこのままでもOKですが、テキストファイルも検索したい場合は.txtを追加します。
# ★
下位フォルダ検索フラグ
#
下位のフォルダを回帰的に検索する場合は1を指定してください。
$recursive_flag = 1;
※特に変更の必要無し。サブフォルダも検索の範囲とする場合は1を設定します。
# ★ [戻る]ボタン
# [戻る]のリンクをクリックされた時にジャンプする先のページを指定して
# ください。http://〜 ではじまるURLも指定可能です。
$return_url = 'http://homepage▲.nifty.com/■■■■■/index.html';
# ★
検索対象ファイルの漢字コード
#
検索対象のファイルの漢字コードを指定してください。シフトJISの場合は
"sjis"、
# EUCの場合は "euc"、JISコードや不明な場合は
"unknown" を指定してください。
# sjis や euc の場合は検索が早くなります。
$kcode_file = "
sjis
";
※この設定は特に変更の必要がありません。
# ★
検索結果ヒントの表示行数
#
検索結果に、ファイルの内容のヒントとして表示する行数を指定します。
$how_many_lines =
2
; # マッチした行の前後何行を表示するか
※この設定の行数指定はファイル内の「改行コードの数」のことです。
掲示板の過去ログの様に1行がとても長いファイルの場合は、検索結果には設定行以上表示されます。
Seasonも試しましたが、掲示板の過去ログディレクトリは「検索対象外」に指定した方が検索結果が綺麗です。
# ★
デバッグモード
# デバッグを行う場合は1を指定してください。
$debug_mode =
0;
※この設定は特に変更の必要がありません。
この設定を1にすると検索結果の画面に検索中:{フォルダ名}...と表示されます。
# ★
ロギングフラグ
# wwwsrch.log
ファイルにロギングを行う場合は 1
を指定してください。
$do_logging = 0;
※この設定は特に変更の必要がありません。
この設定を1にすると検索した日時とキーワードとホストアドレスがログファイルに記録されます。
ログを覗くと訪問者がどんなキーワードで検索したか分かるので見ていて面白いですが…
このログはドンドン溜まる一方なのでFTPで時々削除する必要があります。
# ★
ファイル名表示
#
検索結果のタイトルの横にファイル名を表示する場合は1を、表示しない場合は0を
# 指定してください。
$print_filename = 1;
※この設定を1にするとページタイトル(<title>〜</title>で指定した名前)の横にページのURLが表示されます。
# ★
検索結果画面の配色デザイン
$bgcolor = "
#ECECEC";
# 画面の背景色
$text_color = "
#000000
";
# 文字の色
$link_color = "
#0000EE
";
# 未リンクの色
$alink_color = "
#FF0000
";
# リンク中の色
$vlink_color = "
#800000
";
# リンク済の色
※検索結果の画面配色のデザイン設定です。
お好みの色を16進数で設定して下さい。
|
◆
検索フォームの設定
Wwwsearchは、検索フォームから呼び出して使用します。
ダウンロードした圧縮ファイルに検索フォームのサンプル(wwwsrch.htm)が入ってます。
これをテキストエディタで開いて、貴方の設置環境に合わせて以下の設定部分を変更して下さい。
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-type"
CONTENT="text/html; charset=Shift_JIS">
<TITLE>検索フォームサンプル</TITLE>
</HEAD>
<BODY>
<H2>検索フォームサンプル</H2>
<FORM
METHOD="POST" ACTION="
http://hpcgi▲.nifty.com/■■■■■/search/wwwsrch.cgi
">
<INPUT TYPE="text" NAME="WORD">
<INPUT TYPE="radio" NAME="ANDOR"
VALUE="and" CHECKED>AND
<INPUT TYPE="radio" NAME="ANDOR"
VALUE="or">OR
<INPUT TYPE="submit" VALUE="検索">
</FORM>
</BODY>
</HTML>
※赤字部分
のwwwsrch.cgiのURLを貴方が設置したURLに書き替えて下さい。
自分のホームページに検索フォームを取りつける場合は
青字の<FORM>〜</FORM>
の間を全てコピーして使用してください。
|
◆
ファイルのアップロード
変更が完了したら、以下のディレクトリにFTPでアップロードして各ファイルのパーミッションを下記の通り変更します。
Root/ ←あなたのルートパス
|
+--cgi-bin/
| |
| +--search/(任意のディレクトリ名)
| wwwsrch.cgi パーミッション[755]
| wwwsrch.log パーミッション[666]
| jcode.pl パーミッション[644]
|
+--homepage/
wwwsrch.htm ※検索フォームのサンプル
※青いディレクトリは新しく作成したモノ
|
◆
wwwsearchの動作試験
上記の通り設置が完了したら、動作試験を行います。
ブラウザから、wwwsrch.cgiを以下の様にオプションをつけて呼び出します。
↓
呼出方法>http://hpcgi
▲.nifty.com/
■■■■■■
/search/wwwsrch.cgi
?test
※URLアドレスの
▲と
■■■■■■
の部分は、自分の
@nifty
のURLに読み替えて下さい。
↓
以下の様なメッセージが画面に表示されたら動作試験はOKです。
「CGI Script OK. 」
↓
※エラーが出る場合は「CGI設置初級講座」のエラーが出たら?を参考にして原因を調べて下さい。
◆
wwwsearchを使ってみる
動作試験が完了したら検索フォームサンプルを呼び出して検索してみましょう。
呼出方法>http://homepage
▲
.nifty.com/
■■■■■■
/wwwsrch.html
※URLアドレスの
▲と
■■■■■■
の部分は、自分の
@nifty
のURLに読み替えて下さい。
以下の様な画面がでますので、適当なキーワードを入力して「検索」ボタンを押して下さい。
※サンプルフォームでホームページ全文検索が動作することが確認できたら、検索フォームの設定で
説明した検索フォームのタグを自分のホームページに取り付けましょう。
以上でwwwsearchの設置事例の説明は終了です
◆
応用編:他のサーバーにあるホームページを検索の対象にする方法
wwwsearchの様な全文検索では、同じサーバー上にあるファイルしか検索の対象にする事が出来ません。
サイト運営者の中には、以下の様に複数のホームページエリアをリンクしてサイトを構成している例もあると思います。
この様な場合は、下記の図の様に他のサーバーにあるページのコピーをメインHP領域に作成します。
サーバーの容量を節約したい時は、コピーの内容を検索でヒットしたいキーワードだけのテキストファイルにします。
■メインHP領域: □サブHP領域:
http://homepage▲.nifty.com/■■■■■■/ http://www.hogehoge.ne.jp/~xxx
| |
+--/homepage
+--/Public_html
| index.html |
| Profile.html +--/Contents
| menu.html --->
サブ領域のpage1.htmlにリンク
page1.html
| --->
サブ領域のpage2.htmlにリンク
page2.html
|
+--/www.hogehoge
page1.htmlのコピー
page2.htmlのコピー
|
次にwwwsrch.cgiの338行目の下(339行目)に以下の様な命令を追加します。
337行目:# URL置換を行う
338行目:$target =~ s|$target_dir|$target_url|;
339行目:$target
=~ s|/homepage/www.hogehoge|http://www.hogehoge.ne.jp/~xxx/contents|;
↑
この命令は、検索で/homepage/www.hogehogeの中にあるページをヒットしたときにページのパスを
http://www.hogehoge.ne.jp/~xxx/contentsに置き替えるという意味になります。