検索ページ 2007.1.8

NAMAZU とかを検討したけどめんどくさいし、スケールが小さいので CGI でやることにした。

Unicode版msearch である。

Windows でダウンロードして解凍してアップロードした。MacOSXで落としてデフォルトの解凍ソフトで解凍するなという注意があったからだ。アスキーでアップロードした。

落としたフォルダは ms512u2 という名前でこれを msearch に変更して/Users/Sites/cgi-bin 内に置いた。すでにcgi-bin に置いたファイルがCGIを実行できると設定してあるからである。

 指示にしたがいパーミッションを変更

  /Users/Sites/cgi-bin で

    #chmod -R 644 msearch

  /Users/Sites/cgi-bin/msearch で

    #chmod 755 genindex.cgi

    #chmod 755 msearch.cgi

  genindex.cgi を mi で開き 

    perl の場所を /usr/bin/perl に

    password を設定

  msearch.cgiを mi で開き

    perl の場所を /usr/bin/perl に

  default.cfg と mobile.cfg の   URL 記述部分を 

    http://seigi.accsnet.ne.jp/ に変更

検索のためのインデックスを作成する。

 http://seigi.accsnet.ne.jp/seigi/cgi-bin/msearch/genindex.cgi を開き実行する。

※1 作成するインデックスの名称.指定しない場合はデフォルト値(default) が名称となる.インデックスを切り替えて検索する場合には,それぞれの検索 対象毎にインデックスの名称を付ける.インデックスのファイル名は インデックス名に『.idx』という拡張子(suffix)が自動的に付けられるので, ここでは拡張子を指定してはならない.したがって、空白あるいは default にしておく。cgi-bin/msearch にdefault.idx というファイルが作られる(が、できなかった。オープンファイルエラーだといってくる。msearch directory に書き込む権限がないそうな。指示では644だ。しかたないから/users/seig/sites/cgi-bi で
#chmod 755 msearch
 とした。

※2 インデックス化するHTMLファイルがあるディレクトリ.必ず1ディレクトリのみ指定しなければならない.絶対パスではなく,このプログラム (genindex.cgi)のあるディレクトリからの相対パスもしくは,絶対パスで指定 する.このプログラムは,この指定されたディレクトリ以下のすべてのHTML ファイルをインデックス化する.したがってたとえば姫様のdirectoryは検索できない。 複数指定できない。

※3 上の対象ディレクトリがURLでは表されるかを指定する.例えば,対象 ディレクトリが,"../public_html"であり,そのURLが "http://www.foo.co.jp/~user/"の様に指定する.検索されたファイルのURLの行頭に付く文字列だから間違えると、検索結果から該当ページにいけない。

※4 インデックス化するHTMLファイルの拡張子を指定する.何も指定しない 場合は,".html"と".htm".指定する場合は,このデフォルト値を上書きするの で,注意が必要.".html,.shtml"の様に半角のカンマを使い,複数指定できる (実際にはダブルクォーテーションはいらない).pdf はできない。タイトルだけでもと...

※5 上の対象ディレクトリの中でインデックス化しないディレクトリを指定 する.例えば,"../public_html/cgi-bin"以下をインデックス化しない場合は, "cgi-bin"の様に対象ディレクトリからの相対パスで指定する.半角カンマを 使い,複数指定できる.

また,非対象ディレクトリにしたいディレクトリ 名を正規表現を使って指定することができる.ただし,この場合,対象ディレ クトリからの相対パスではなく,ディレクトリ名のみを正規表現で指定する. 例えば,対象ディレクトリ以下にある全ての"_vti_cnf"というディレクトリを インデックス化したくない場合は"(_vti_cnf)"とする."("と")"は,この中は 正規表現だと指定するために必要です."(_vti_cnf)"の代わりに"(^_.*)"の ように記述しても構いません. ../ とは、この場合 /users/seigi/sites/cgi-bin のことである。

※6 上の対象ディレクトリの中で,且つ非対象ディレクトリ以外でインデッ クス化しないファイルを指定する.例えば,"../public_html/secret.html" ファイルをインデックス化したくない場合は,"secret.html"の様に対象ディレ クトリからの相対パスで指定する.半角カンマを使い,複数指定できる.

また,非対象ディレクトリと同様に非対象ファイルとしたいファイル名を正規 表現を使って指定することができる.正規表現は"("と")"で囲って指定する.

※7 検索対象に入れたくないキーワードを指定します.ここで指定したキー ワードで検索した場合,検索結果は0件となります.半角カンマを使い,複数 指定できます.例えば,「インターネット」と「検索」というキーワードを 検索対象にしたくない場合は,"インターネット,検索"と指定します.ここで 指定したキーワードは検索結果の一部表示にも出てきませんので注意して下さい. ただし,タイトルに含まれるキーワードは削除しません.

※8 検索結果のランキング(ソート)方法を指定します.ランキングはイン デックスを作る時に決定しなければなりません.

※9 ここをチェックすると,alt属性中の文字列も検索対象に含めます.

※10 このCGIを動かすことが出来る人を限定するためのパスワードです.生 のパスワードデータを送りますので,グラブされる可能性があります.間違える、空白にして実施してもエラーメッセージはでてこないで、このページが再現する。

※11 ここをチェックすると,デバッグ情報が出力されます.正常に インデックスが作成されない場合の状況を把握するために有益な情報が表示 されます.

※12 ここをチェックすると,インデックスファイルへの書き出しを 対象ファイルをすべて読み込んでからではなく、1つ読み込む毎に行います。 インデックス作成が途中で止まってしまう場合などにチェックしてみてください. 本モードを使うときはデバッグモードにもチェックを入れることを推奨します。 なお逐一モードではランキング(ソート)は行われません. また差分更新は行わず,毎回新規作成になります. 逐一モードで作成したインデックスを補助ツールで結合しても問題ありません.

インデックス作成 ボタンをクリックして

   逐一モードでインデックス作成を開始します
   ■■■インデックス化するファイルを収集しています
   ■■■完了(757ファイル)
   ■■■インデックスに追加(757ファイル)
   インデックス作成は完了しました

と最後に表示されたら OK。

ファイルオープンに失敗したとかいう文があったら、default.idx がないか、そのowner が www でない とかパーミッションがちがうとか /users/seigi/sites/cgibin/msearch のパーミッションが755 でないとかである。

 http://seigi.accsnet.ne.jp/seigi/cgi-bin/msearch/msearch.cgi

にアクセスすれば検索ページになり、検索が可能になる。

簡易検索窓をページにつくる

ページに簡易検索窓を設定した。以下の記述を加えればいい。

<form action="seigi/cgi-bin/msearch/msearch.cgi" accept-charset="utf-8">

<div align="center">

<font size="2"> 簡易AND検索です。絞り込むときは詳細検索をどうぞ。</font><br>

<font color="red"><b>サイト内検索</b></font> <input type="text" size="40" name="query" value=""> <input type="submit" value="検索"> <a href="seigi/cgi-bin/msearch/msearch.cgi"><b>詳細検索</b></a> <input type="hidden" name="hint" value="ひらがな"> <input type="hidden" name="index" value=""> <input type="hidden" name="config" value="">

</div>

</form>

参考ページ

 Unicode版msearch の FAQ(第1) FAQ(第2) 

 msearch導入記