ホームページ内全文検索エンジンmsearch

 msearchとは
 msearchを使っていらっしゃる方は是非URLをお教え願います.
■ユーザサイト一覧■からリンクを張らさせて頂きます.

 ホームページ内全文検索エンジンmsearchとは,個人または比較的小規模の法人 ホームページ内の検索を提供するCGIプログラムです.
 以下のような機能があります.

  1. 検索用インデックスを作るので,作らないタイプの検索エンジンより高速.
  2. インデックス作成,検索ともにperlで動作.
  3. 提供するperlスクリプトのみで動作するので,カスタムCGIを設置できるWebサーバならどこでもインストール可能.
  4. and検索,or検索,not検索,タイトル検索,URL検索が可能.
  5. 3種類(降順,昇順を含め6種類)のランキング(結果表示のソート)が可能.
  6. キーワードがマッチした部分の強調表示が可能.
  7. 検索対象HTMLページの漢字コードはSJIS,JIS,EUC全てをサポート.
  8. 全角1文字の検索キーワードも正しく検索可能.
  9. 様々なインデックス化のオプションをインデックス作成CGIから指定可能.
  10. インデックスの更新は,自動的に差分を調べて作られるので高速.
  11. インデックスに登録したくないキーワードの指定が可能.
  12. 検索結果表示画面を簡単にカスタマイズ可能.
  13. Cookieによるインデックス作成オプション記憶で更新が簡単.
  14. 無料.(^o^)
 実際に動作しているmsearchを使うには,作成者の ホームページでどうぞ.
 作成者への連絡はメールどうぞ. その他質問や要望等は■掲示板■でどうぞ.

 ダウンロード
 本ソフトウェア(msearch)をダウンロードされる場合は,以下の利用規定に同意 したとみなさせて頂きます.
  1. 本ソフトウェア(msearch)はフリーソフトウェアですが,著作権は作成者(Katsushi Matsuda)に属します.
  2. 本ソフトウェアを利用したことによる,いかなる結果,損害,トラブルについて作成者は一切の責任を免れます.
  3. 有料,無料を問わず,再配布する場合は作成者に連絡して下さい.
  4. 作成者に許可なく,営利目的での利用(有償でのレンタルや販売,設置代行等)はできません.
  5. 本ソフトウェアの改造は非営利目的の範囲内で自由にできますが,ソフトウェア内に記述された作成者の著作権表示部分を削除,修正することはできません.
  6. バグ報告を除き,改造依頼や改造方法については基本的にお答えできません.
msearch 1.33のダウンロード(LZH圧縮)
msearch 1.21のダウンロード(LZH圧縮)

 現在の最新バージョンは1.33です.
1.33βをインストールされた方は1.33にアップグレードする必要 はありません.全く同じです.
1.3x以上より高速ですが,or検索ができない,結果表示が全て大文字に なるという仕様の1.21も公開しています. 1.21の設定方法に関する説明はこちらをご覧下さい.
1.3以上では1.21のインデックスは基本的に利用できません. お手数ですが,1.21のインデックスを削除し,改めて1.3以上のgenindex.cgiで 1.3x用のインデックスを作り直して下さい.

 更新履歴
更新日 内容
ver. 1.33
10/10/01
1.33を正式公開開始
ver. 1.33β
09/29/01
以下のバグを修正
(1) 半角カタカナのキーワードで検索できない.
以下の機能の追加
(1) インデックス時の非対象ディレクトリと非対象ファイルの指定に正規表現が 使えるように.
(2) インデックスに登録したくないキーワードを指定できるように.
これらの追加機能については,インストール方法をご覧 下さい.
ver. 1.32
09/12/01
1.31の検索結果のリンクが変になるバグを修正
ver. 1.31
09/11/01
全角1文字の検索を正しくできるように修正 (FAQで詳しく説明)
ver. 1.3
08/25/01
1.3を正式公開開始
ver. 1.3β3
08/18/01
以下の修正
(1) マイナスから始まるキーワードに対応.
(2) カッコで囲まれたキーワードに対応.
(3) URL検索で強調表示されないバグを修正.
(4) 少しだけ高速化.
ver. 1.3β2
08/17/01
以下の仕様変更
(1) 検索結果を表(table)から定義(dt)に.
(2) マッチした部分の強調表示が変更可能に.
ver. 1.3β
08/16/01
以下の新規機能を追加
(1) OR検索が可能に.
(2) 検索結果の各項目をナンバリング.
以下の仕様の修正
(1) 検索結果の一部表示が先頭ではなく,マッチした部分に.
(2) マッチした部分のボールド表示.
(3) 英数文字が全角の大文字で表示されていたのを元ページに忠実に.
以下の様に機能を縮小
(1) ソートの種類からページ内容の昇順・降順を削除.
(2) 検索時のソートの指定を削除し,インデクシング時に指定する.
大幅な機能増強ですが,ほとんど速度は落ちないように苦慮しました.
ver. 1.21
07/28/01
以下のバグの修正
(1) 対象ファイルを「.html」とした時,「.shtml」も含まれてしまう.
(2) タイトルに含まれる英数文字が検索漏れしてしまう.
(3) タイトルのみに含まれる文字が「:t」なしで検索できない.
(4) クエリーが全角の場合に検索漏れが発生する.
(5) 検索結果を全件表示にした場合にHTMLフッタを出力しない.
(6) 検索結果の件数が表示件数の倍数の時,ありもしない次の検索結果へのリンク が作られる.
Special thanks 水沢さん
ver. 1.2
02/19/01
ローカルでインデックス作成可能に.
ver. 1.1b
02/18/01
インデックス作成CGIがデバッグ情報出力可能に.
ver. 1.1a
01/09/01
インデックス差分更新のアルゴリズムを変更.
ver. 1.1
12/26/00
インデックス作成CGIをCookieに対応.
ver. 1.0
12/22/00
公開開始.
ver. 1.0β
12/21/00
作成者のホームページで運用開始.

 動作環境
 msearchは以下の環境での動作します.

プラットフォーム LINUXを含むUNIX系OS
Perlバージョン Perl 5.004以降,jperlは不可

 インストール方法
 インストールの方法について説明します. なお,ここでは,HTMLやCGI,perlについてある程度わかっている人を前提にして います. HTMLやCGI,perlについての基本的なことは,とほほさんの とほほのWWW入門等が詳しい です.
また,水沢・penguin-19・和彦さんの msearch導入記は,インストール方法,評価,改造方法,インストール時の チェックツールの配布等,役に立つ情報が満載です.お勧めです.

  1. まずあなたのホームページにCGIが設置できるか調べて下さい.

    あなたのホームページが無料ホームページならば,そのサービスガイドを見るか, しげるさんの COOL'S FAVORITEWEB PLAZAでCGIが利用できるか 調べて下さい. またあなたのホームページがプロバイダやレンタルサーバ,ホスティングサービス ならば,それぞれのサービスガイドを見るか,管理者に尋ねてCGIが利用できるか 調べて下さい.

  2. msearchをダウンロードして下さい.

    必ず上の利用規定を読んで からダウンロードして下さい. LZH形式です. 解凍すると,以下の5つのファイルが作成されます.
    genindex.cgi インデックス作成CGI
    genindex.pl ローカルインデックス作成プログラム
    msearch.cgi 検索CGI
    jcode.pl 歌代さん作の漢字コード変換ライブラリ
    fold.pl 歌代さん作の日本語文字列折り返しライブラリ

  3. 各種設定を変更して下さい.

     genindex.cgi,msearch.cgiともに漢字コードはEUCで書かれていますので,EUCで 読み込めて,EUCで書き込めるテキストエディタを用意して下さい.
     あなたのサーバのperlのパスを調べ,genindex.cgiとmsearch.cgiのそれぞれ先頭 行を書き換えて保存して下さい. 配布時には,perlのパスは/usr/local/bin/perlに なっています. もし,あなたのサーバのperlのパスが同じならば,書き換える必要はありません.
     次にgenindex.cgiの変数$g_passwordの値を書き換えて 下さい. 配布時には,パスワードは"msearchpass"となっていますので,これを好きなパスワ ードに必ず変更して下さい. 日本語でも構いません.
     基本的に,上の2つの設定さえすれば他に修正する必要はありません. その他検索結果画面をカスタマイズしたい場合は,下の カスタマイズの方法を参照して下さい.

  4. サーバにアップロードして下さい.

     上の4つのファイル(genindex.cgi,msearch.cgi,jcode.pl,fold.pl)をFTP等で サーバにアップロードして下さい. アップロードする先は,CGIが動作するディレクトリです. 各サーバ毎に違いますので各自調べて下さい. 例えば,freewebでは,各自のホーム ディレクトリ内にcgi-binというディレクトリを作ってそこにCGIをインストール します.
     アップロードする際のモードはテキスト,漢字コード は変換しない,改行はサーバに 合わせる,パーミッションはgenindex.cgiとmsearch.cgiが 755でjcode.plとfold.plが 644です. もし,jcode.plやfold.plがすでにサーバにあり,perlのパスが通っているなら, jcode.plやfold.plはアップロードする必要はありません. ただし,genindex.cgiとmsearch.cgiのrequireを修正する必要があります. 分からない人はjcode.plとfold.plをアップロードして下さい.

  5. 動作チェックして下さい.

     ブラウザを使い,CGIが動作するかチェックして下さい. 各サーバによって違いますが,ここではfreewebを例に取り説明します. 各自のホームディレクトリのcgi-binというディレクトリ直下に4つのファイルを アップロードしたとします. すると,msearchの検索CGIを呼び出すURLは,
    http://www??.freeweb.ne.jp/???/???/cgi-bin/msearch.cgi
    となります."?"の部分はユーザ毎に違います. 同様に,msearch用インデックス作成CGIを呼び出すURLは,
    http://www??.freeweb.ne.jp/???/???/cgi-bin/genindex.cgi
    となります.
     ブラウザに上のURLを入れてみて,エラーが出なければOKです.

  6. インデックスを作成して下さい.

     上のmsearch用インデックス作成CGIをブラウザで開いて下さい. 下のようなインデックス作成フォームが表示されます(各入力欄は空白です).

    それぞれについて説明します.

     対象ディレクトリとは,インデックスに登録するHTMLファイルがある トップディレクトリです. 絶対パスまたはgenindex.cgiがあるディレクトリ(アップロードしたディレクトリ) からの相対パスで指定します. 必ず1つだけ(複数指定したい場合についてはFAQを参照のこと) 指定します. この例では,genindex.cgiがあるcgi-binディレクトリの親ディレクトリを指定して います. インデックス作成CGIは,この対象ディレクトリより下にある全てのディレクトリ に含まれるファイルをインデックス対象とします.

     対象ディレクトリのURLには,上の対象ディレクトリが実際にはどのよう なURLで表されるかを指定します. この例では,サーバ内の"../"ディレクトリが"http://www.foo.co.jp/~bar/"という URLに相当するとしています. そしてサーバ内の"../index.html"ファイルは"http://www.foo.co.jp/~bar/index.html" というURLになります.

     対象ファイルの拡張子には,インデックス対象となるファイルの拡張子を 指定します. デフォルトは".html"と".htm"です. この場合はこの欄は空白でOKです. 例では,上のデフォルト拡張子に".shtml"を加えています. デフォルト以外の拡張子を指定する場合は,インデックス対象としたいファイルの 拡張子を全て指定しなければなりません. 複数の拡張子を指定する場合は半角のカンマ","で繋げて下さい.

     非対象ディレクトリには,対象ディレクトリより下にあるインデックス化 したくないディレクトリを指定します. このディレクトリ以下はインデックス対象となりません. 対象ディレクトリからの相対パスで指定します. この例では,サーバ内の"../cgi-bin/"というディレクトリ以下と"../secret/"という ディレクトリ以下をインデックス化したくないため,その相対パスである"cgi-bin/" と"secret"を指定しています.
    また,非対象ディレクトリの指定では,正規表現を使って指定することが可能です. ただし,この場合は,相対パスではなく,ディレクトリ名 のみでの正規表現のマッチが行われます. 例えば,"(_vti_cnf)"と指定すると,対象ディレクトリ以下にあるディレクトリの うち,"_vti_cnf"という名前のディレクトリが全て非対象 ディレクトリとなります. この正規表現による非対象ディレクトリの指定のためには,正規表現を"("と")"で 囲む必要があります. もちろん,正規表現ですから,上の"(_vti_cnf)"は"(^_.*f)"のように記述しても 構いません. ただしこの場合は,"_conf"というディレクトリも非対象ディレクトリとなります. 正規表現によるものと相対パスによるものは同時に指定可能です.

     非対象ファイルには,対象ディレクトリより下にあるインデックス化した くないファイルを指定します. 非対象ディレクトリ以下のファイルは指定する必要はありません. 対象ディレクトリ以下だけど,あるファイルのみインデックス化したくない場合, そのファイルを指定します. 非対象ディレクトリと同様に対象ディレクトリからの相対パスで指定します. 複数指定する場合は半角のカンマ","で繋げて下さい.
    非対象ディレクトリの指定と同様に非対象ファイルの指定にも正規表現が使えます. この場合も相対パスではなく,ファイル名単位での正規表現マッチとなります.

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

     ランキング方法では,検索結果の表示に順序(ソート方法)を選択します. 選択できるランキング方法には,以下の7種類があります.

    1. なし :見つけた順
    2. 最終更新時刻-降順 :新しい順
    3. 最終更新時刻-昇順 :古い順
    4. タイトル-降順 :タイトル文字のアルファベット逆順
    5. タイトル-昇順 :タイトル文字のアルファベット順
    6. URL-降順 :URL文字のアルファベット逆順
    7. URL-昇順 :URL文字のアルファベット順
    好きなランキング方法を選んで下さい. インデックスを更新する際にも変更可能です.

     パスワードには,3の各種設定で設定したパスワードを入力して下さい. このCGIはインターネットでつながっているどこからでも動かすことができるので, パスワードがばれると悪意ある人がインデックスを壊したり,改変したり,また サーバに対して高負荷をかけたりする恐れがあります.

     入力が終われば,インデックス作成ボタンを押します. すると,下のような表示がされるはずです.

    途中で止まったり,「インデックスを保存しています.完了(?ファイル)」という 表示がされなかった場合は,FAQを参照のこと.
     ver1.2から,ローカルPCでインデックスを作るPerlプログラムを添付しました. ActivePerl等のPerl環境がインストールされているPCのDOS Promptで,genindex.pl を実行します. すると,genindex.cgiのインデックス作成フォームと同じ入力項目を順に質問して くるので,genindex.cgiと同じオプションを入力して下さい(コマンドラインでの 入力になりますので,genindex.cgiのようにCookieによるインデックス作成オプ ションの記憶はできません). するとその実行ディレクトリにmindex.datが作られます. FTP等でサーバにアップロードすることで上のgenindex.cgiと同様のことが行えます.

  7. 検索してみて下さい.

     これで準備が整いました. いよいよ実際に検索してみて下さい. ブラウザに以下の様なURL(各ユーザ,プロバイダーによって違います)を入力し, 開いてみて下さい.
    http://www??.freeweb.ne.jp/???/???/cgi-bin/msearch.cgi
    以下のような検索用フォームが表示されます(実際には入力欄は空白で,更に下に 説明文が表示されます).

    例えば,旅行記という文字が含まれているページを検索する場合は,この 例のように入力欄にキーワード("旅行記")を入力し,検索ボタン を押します.
     後はgoogoogleと同じ要領です.

 検索フォームを自分のホームページに貼り付けたい場合は,FAQ を参照して下さい.
 また,インデックスは一度作ればそれで終わりではなく,自分のホームページの 更新を行った都度インデックスを更新して下さい. ページを追加したり,ページの修正をしたり,ページを削除した場合です. 追加されたページ,修正されたページ,削除されたページは自動的に判別し, インデックスを更新しますので,基本的に6で入力した値のままインデックスを作成 するだけです.

 カスタマイズの方法
 ここでは,インデックス作成CGIと検索CGIのカスタマイズの方法について説明 します. 必ずEUCが扱えるテキストエディタで編集して下さい.

インデックス作成CGIのカスタマイズ

変数 説明
$body_background インデックス作成ページの背景の画像.絶対パスで画像を 指定した方が安全.例えば,"http://www.homepage.com/~id/images/bg.jpg".
$body_bgcolor インデックス作成ページの背景の色.デフォルトは白(white).
$body_text インデックス作成ページのテキストの色.デフォルトは黒 (black).
$body_link インデックス作成ページの未到達リンクの色.デフォルト は青(blue).
$body_alink インデックス作成ページの活動中リンクの色.デフォルト は赤(red).
$body_vlink インデックス作成ページの到達済リンクの色.デフォルト は青(blue).以上の3つのリンクの色を指定なし("")にするとブラウザのデフォルト カラーになる.
$title_init インデックス作成ページのタイトル文字列.
$title_result インデックス作成結果表示ページのタイトル文字列.
$g_cgi インデックス作成CGIのプログラム名.デフォルトは "genindex.cgi".名前を変えた場合には,その名前に変更する.
$g_password インデックス作成ページのパスワード.デフォルト値を 使わないように,必ず変更する.
$g_cookie インデックス作成CGIのユーザ入力をCookieを使って覚えて おくか.デフォルトはCookieを使う(1).使わない場合は(0).
$g_cookie_span Cookieの有効期限.単位は日.
$debug_level デバッグ情報出力の値.デフォルトは0で,必要な情報以外 出しませんが,必要なら,1または2にすることでインデックス作成時のデバッグ情報 を出すことができます.1より2の方がより詳しい情報を出力します.
 その他,perlのソースコードを改造することで色々な表示ができます.

検索CGIのカスタマイズ

変数 説明
$g_cgi 検索CGIのプログラム名,デフォルトは"msearch.cgi". 名前を変えた場合には,その名前に変更する.
$s_title 検索CGIを直接引数なしで呼び出したページのタイトル 文字列.
$s_body_background 検索CGIを直接引数なしで呼び出したページの背景の画像.
$s_body_bgcolor 検索CGIを直接引数なしで呼び出したページの背景の色.
$s_body_text 検索CGIを直接引数なしで呼び出したページのテキストの 色.
$s_body_link 検索CGIを直接引数なしで呼び出したページの未到達リンク の色.
$s_body_alink 検索CGIを直接引数なしで呼び出したページの活動中リンク の色.
$s_body_vlink 検索CGIを直接引数なしで呼び出したページ到達済リンクの 色.
$r_title 検索CGIの検索結果表示ページのタイトル文字列.
$r_body_background 検索CGIの検索結果表示ページの背景の画像.
$r_body_bgcolor 検索CGIの検索結果表示ページの背景の色.
$r_body_text 検索CGIの検索結果表示ページのテキストの色.
$r_body_link 検索CGIの検索結果表示ページの未到達リンクの色.
$r_body_alink 検索CGIの検索結果表示ページの活動中リンクの色.
$r_body_vlink 検索CGIの検索結果表示ページの到達済リンクの色.
$r_show_url 検索CGIの検索結果にURLを表示するかどうか.デフォルト は表示する("1").表示させたくない場合は,"0"にする.
$r_show_contents 検索CGIの検索結果にページの一部を表示するかどうか. デフォルトは表示する("1").表示させたくない場合は,"0"にする.
$r_highlight 検索CGIの検索結果で,マッチした文字を強調表示する際 の方法.デフォルトはボールド(<b>).例えば,赤く強調表示したい場合は,
$r_highlight = '<font color=red>';
として下さい.
$r_link_window 検索CGIの検索結果のリンクを別ウインドウで開くかどうか. デフォルトは開かない("0").別ウインドウで開かせる場合は"1".
$g_num 検索CGIの検索結果を何件ずつ表示するか.デフォルトは 10件ずつ("10")."0"以上の値を設定できる."0"の場合は全件表示.
$g_maxsize 全角1文字のキーワードで検索する時のパラメータ. デフォルトは20000バイト("20000").詳しくはFAQの 「全角1文字のキーワードで検索すると止まってしまうのですが?」で.
 なお,$g_numは検索CGI呼び出し中でも変更可能です. 検索CGIからの変更は,検索フォームに以下のようにHTMLソースコードを追加します.
<input type=hidden name="num" value="20">
この例では,一度に表示する検索結果を20件に変更しています.
 その他,perlのソースコードを改造することで色々な表示ができます.

 FAQ
  1. msearch.cgiやgenindex.cgiをメモ帳で見ると文字化けしているのですが.[全]

    msearchの各スクリプトはEUCという漢字コードで書かれています. そのため,windowsのメモ帳などSJIS漢字コードしか表示できないエディタでは 文字化けしているように見えてしまいます. EUCで書かれたファイルを表示,編集できるエディタをお使い下さい.
    そのようなエディタは Vectorのテキストエディタカテゴリーでたくさん見つけることができます.

  2. 検索フォームをページに貼り付けるには?[全]

    以下に例を示します.

    <form action="/cgi-bin/msearch.cgi" accept-charset="x-euc-jp">
    <table border=0 cellspacing=0 cellpadding=3>
    <tr>
    <td align=left bgcolor=#F8FE00>
        <small><font color=black><b>HP内検索エンジン</b></font></small>
    <td align=right bgcolor=#F8FE00>
        <small><a href="/cgi-bin/msearch.cgi">help</a></small>
    <tr>
    <td valign=center align=center bgcolor=#F8FE00>
        <small><input type=text size=20 name="query" value=""></small>
    <td valign=center align=left bgcolor=#F8FE00>
        <small><input type=submit value="検索"></small>
    </table>
    </form>
    
    このHTMLソースを検索フォームを入れたい場所に貼り付けるだけでOKです. ただし,赤色の部分は,そのページのURLから見たCGIの 相対パスか絶対パスを入れて下さい.

  3. 複数の対象ディレクトリをインデックス化するには?[全]

     基本的に不可能です. しかし,同じことを別の方法で実現することが可能です. 以下のようにします.
     あなたのホームディレクトリを"public_html/"以下とし,そのURLを "http://www.homepage.com/~id/",genindex.cgiがあるディレクトリを "cgi-bin/msearch/"とします. そして"public_html"以下のの"aaa/"ディレクトリと"bbb/"ディレクトリについて インデックスを作りたいとします.
     一方,"public_html/"以下には"aaa/"と"bbb/"以外に"ccc/"と"ddd/"という ディレクトリと"index.html"と"test.html"というファイルがあると仮定します. この場合,"aaa/"ディレクトリと"bbb/"ディレクトリの2つのディレクトリを対象 ディレクトリとしてインデックスを作るには,以下のようにします.
    対象ディレクトリ ../
    対象ディレクトリのURL http://www.homepage.com/~id/
    非対象ディレクトリ cgi-bin,ccc,ddd
    非対象ファイル index.html,test.html
    すなわち,2つのディレクトリを対象ディレクトリとするのではなく,2つの ディレクトリ以外を非対象ディレクトリとしてインデックスを作るのです.

  4. インデックスが作れないのですが?[全]

     いくつか原因が考えられます.

    1. ディレクトリ移動のパーミッションがない.
      genindex.cgiを置いてあるディレクトリのパーミッションは 755である必要があります(サーバによっては705でも OK).
    2. CGIからファイルを作ることができない制限になっている.
      サーバによってはCGIから新しいファイルを作ることができない設定になっている 場合があります. この場合は,mindex.datという大きさ0のファイルをgenindex.cgiの置いて あるディレクトリに作って下さい. ファイルのパーミッションは666にして下さい (サーバによっては606でもOK).
    3. CGIからのファイル読み込みに制限がかかっている.
      サーバによってはCGIから読み込むことができるファイル数に制限をかける設定に なっている場合があります. この場合は,少し手間がかかります.
       ファイル読み込みの制限がかからない程度をインデックス対象とするディレクトリ を指定し,インデックスを作ります.このインデックス(mindex.dat)をFTP等で ローカルにダウンロードし,別名(例えばmindex1.dat等)を付けて保存します. これを何度か繰り返し,インデックスに登録したい全部のファイルをインデックス化 したところで,ローカルにコピーしたインデックスファイル(例えば,mindex1.dat, mindex2.dat,mindex3.dat,.....等)をつなげて1つのインデックスファイル (mindex.dat)にし,CGIと同じディレクトリにFTP等でアップロードします.
    4. CGIのメモリ使用量に制限がかかっている.
      サーバによってはCGI1プロセスあたりのメモリ使用量に制限をかける設定になって いる場合があります. この場合も上と同様に分割してアップロードするか,genindex.plを使ってローカル PC上でインデックスファイルを作ってアップロードして下さい.
    5. プログラムのバグ.
      今のところバグは見つかっていませんが,可能性はあります.(^o^;

  5. 他のサーバにあるホームページをインデックスしたいのですが?[全]

     残念ながらできません. genindex.cgiが置いてあるサーバだけです. また,genindex.cgiを実際に動作させるユーザ(apache等のWebサーバ)が移動できる ディレクトリと参照できるファイルに限りインデックスに登録できます. ほどんどのサーバでは,同一サーバ上の別のユーザ(あなた以外のユーザ)の ディレクトリに移動したり,ファイルを参照したりすることはできなくなっている と思われますので,基本的にインデックスに登録できるのはあなたのホーム ディレクトリ以下だけです.

  6. いちいちインデックスを作り直すのが面倒なのですが.[1.2以上]

     もしあなたのお使いのWebサーバでcronが使えるなら定期的にインデックスを自動 更新することが可能です.(※cronって何?という人は諦めて下さい)
    インデックスの自動更新にはgenindex.plを使います. genindex.plは以下のように質問してきますので,それに合った値を用意し, shスクリプト(cshやperlでも勿論OK)を作ります.

    1. インデックス対象ディレクトリは?
    2. インデックス対象ディレクトリのURLは?
    3. インデックス対象ファイルの拡張子は?
    4. 非インデックス対象ファイルの拡張子は?
    5. 非インデックス対象ファイルは?
    6. ランキング方法は?
    ただし,ランキング方法は0〜6の数値で答えなければなりません. [1] 最終更新日時-降順
    [2] 最終更新日時-昇順
    [3] タイトル-降順
    [4] タイトル-昇順
    [5] URL-降順
    [6] URL-昇順
    [0] なし
    例えばshスクリプトは以下のようになります. 値はインストール方法で使っている値を使っています. ランキングは[1]最終更新日時-降順です.
    ======== shスクリプトの例 =======
    #!/bin/sh
    
    ./genindex.pl <<HERE
    ../
    http://www.foo.co.jp/~bar
    .html,.htm,.shtml
    cgi-bin,secret
    secretfile.html
    1
    HERE
    ======== shスクリプトの例 =======
    
    後は,このスクリプトをautogenindex.shとでもして,パスの通ったディレクトリ に置きます. genindex.plはautogenindex.shと同じディレクトリに置いておきます. crontab -eで,このスクリプトを定期的に動かすようにすればOKです. 例えば,毎日午前0にインデックスを更新するためには以下のようにします.
    0 0 * * * autogenindex.sh

  7. 1.21と1.3のインデックスに互換性がありますか?[1.21&1.3]

     残念ながらありません. 1.21から1.3にアップデートするためには,1.21で作ったインデックス(mindex.dat) を削除し,1.3のgenindex.cgiで新しくインデックスを作り直して下さい.

  8. 1.31の「正しい全角1文字の検索」とは何ですか?[1.3以上]

     msearch1.3を含むほとんどのフリーの全文検索エンジン(漢字コードにEUCを用いて いるもの)では,「好」や「粒」や「隆」などの全角文字の1文字だけを検索 キーワードとして検索すると,それらの検索キーワードを含んでいないページを 検索してしまったり(適合率が低下),検索結果の一覧においてマッチ部分を強調 表示している場合,文字化けが起こったりします. これはEUC(正しくはEUC-JP)の漢字コードの構造上の問題です. 例えば,「好」という文字は,「0xB9 0xA5」という2バイトで構成されています. 一方,「テスト」という文字列の「ス」と「ト」はそれぞれ「0xA5 0xB9」と 「0xA5 0xC8」で構成されています. つまり,「スト」を連続して表すと, 「0xA5 0xB9 0xA5 0xC8」です. 本来なら「テスト」には「好」という文字は含まれないのですが,「スト」の 2バイト目と3バイト目(赤字部分)に「好」の 「0xB9 0xA5」がマッチしてしまいます. そのため,過剰検索(キーワードが本当は含まれないのに含まれていると判断 してしまう)が行われてしまいます. また,検索結果の一覧でマッチ部分を強調表示する時に 「スト」の「ス」の後半から「ト」の前半にかけて例えば<b>と</b> などのタグを挿入してしまい,そこから文字化けが発生してしまいます.
     バージョン1.31は,このような過剰検索や文字化けが起こらないようになって います. and検索,or検索,not検索,title検索いずれにおいても正常に検索することが できます. ただし,全角1文字の検索キーワードを使うと検索速度が格段に落ちてしまい ます. 作者のテスト環境では10倍以上遅くなってしまいます. しかし,全角1文字のキーワードを使わないなら,速度は1.3とほとんど変わり ません.

  9. 全角1文字のキーワードで検索すると止まってしまうのですが?[1.31以上]

     WWWサーバマシンのメモリ不足が原因です.
     全角1文字のキーワードがある場合のみ,キーワードマッチのアルゴリズムを 変えています. 具体的には,perlのバージョン5以上で利用できる「先読み」の正規表現を使って います. そのため,マッチング対象(msearchでは対象ページ1ページに相当)の文字列の長さ が長い場合,メモリ不足でマッチングが止まってしまいます. これを回避するための仕組みがmsearchには備わっています. msearch.cgiの$g_maxsizeというパラメータです. デフォルトでは,20,000バイト以上の長さのページは20,000バイト相当でページを 分割してマッチングをします (この20,000バイトという数値は作者のサーバマシンでマッチングが止まらない サイズです.なお,1Gバイト以上のメモリを積んだサーバマシンで試したところ 20,000バイト以上でも大丈夫でした.). ですので,検索が止まってしまう場合はこの$g_maxsizeの値を少なく(例えば10,000) してみて下さい.

  10. 非対象キーワードで指定したキーワードが検索結果に出てくるのですが? [1.33以上]

     1.32以前のインデックスが存在する場合は,一度インデックスを削除してから, もう一度インデックスを作り直して下さい. 更新がされていないファイルは非対象キーワードを含んでいるかいないかに関わら ず,インデックスの更新はしないため,更新されていないファイルに含まれる非 対象キーワードが検索結果に出てくる可能性があります.
     また,非対象キーワードを変えた場合も同様にインデックスを一旦削除してから, インデックスを作り直して下さい.

Copyright (c) 1999-2002, Katsushi Matsuda. All Right Reserved.