ホーム > HTMLに役立つヒント>msearch導入記
これはKatsushi Matsudaさんの開発した全文検索システム、msearch(質問・要望掲示板も稼働中)導入記です。 作者のKatsushi Matsudaさんに感謝いたします。この文章はバージョン1.4xを対象にしています(従来の1.3xを対象にした文章はこちらで見られます。)。 2002/12/25 msearchはver.1.46にバージョンにアップ! 現在イチオシの検索エンジン! 2003/7/17 ver.1.5βがでました。このページもまもなく1.5にあわせて書き換えたいです。 こちらでテスト中です(テストを希望される方はこちらのcgiでお願いします。こちらはログ出力されません)。 「検索テスト」も参照してください。 このページに関する話題・ご質問・改造がうまくいかんなどは「マニュアルに書いてない掲示板」へお願いします。 [このページの改定日: 06/12/16 15:44 ] あなたはここへ来た、 8493 番目の人です。(2001/8/2から)
これはKatsushi Matsudaさんの開発した全文検索システム、msearch(質問・要望掲示板も稼働中)導入記です。
作者のKatsushi Matsudaさんに感謝いたします。この文章はバージョン1.4xを対象にしています(従来の1.3xを対象にした文章はこちらで見られます。)。 2002/12/25 msearchはver.1.46にバージョンにアップ! 現在イチオシの検索エンジン! 2003/7/17 ver.1.5βがでました。このページもまもなく1.5にあわせて書き換えたいです。
こちらでテスト中です(テストを希望される方はこちらのcgiでお願いします。こちらはログ出力されません)。 「検索テスト」も参照してください。
このページに関する話題・ご質問・改造がうまくいかんなどは「マニュアルに書いてない掲示板」へお願いします。
[このページの改定日: 06/12/16 15:44 ] あなたはここへ来た、 8493 番目の人です。(2001/8/2から)
msearchはスクリプト言語(perl)で書かれた、インデックスを作成するタイプの検索エンジンです。 一般にgrepタイプよりもインデックス作成タイプの方が高速に検索できる、検索時のサーバの負担が軽いとされています。grepタイプはインデックス作成の手間がかからない点がお手軽でいいですが、検索スピードが遅く、サーバに負荷がかかります。 しかし、これまで試したところでは、インデックス作成タイプであっても、grepタイプより検索が遅く、したがってサーバの負荷が高いものもあります。さてmsearchはどうでしょうか。 なお、msearchはフリーソフトですが、営利目的の使用(有償でのレンタルや販売・設置代行等)の場合は作者の許可が必要です。その他、利用条件は作者のホームページをご一読ください。 また、perlはver.5.x以上が必要です。4.xでは動作しません。 バージョン1.3xから1.4で機能強化・仕様変更された点は以下の通り。 ●検索結果 設定ファイル(config.dat)の変更で各種設定の変更、画面デザインの変更が簡単にできるようになった。 次の要素が出力できるようになった。 検索にかかった時間 現在時刻 インデックス更新日 インデックスされているファイル数 キーワードに英文字があるときの検索スピードが高速化。 検索ログを出力できるようになった(ON/OFF、ファイル名変更可能)。 特に、設定ファイルの変更だけで画面デザインを大きく変えられるようになった点は大きいと思います。これまでのようにcgiを変更する必要はなく、HTMLを知っていれば簡単に画面デザインは変更できます。 なお、1.42ではクロスサイトスクリプティングにも対応しています。 →「Webサイトにおけるクロスサイト スクリプティング脆弱性に関する情報」 1.43で、URL検索のバグが取れました。同時にconfig.datに「urldeco」変数が追加されました。 1.44でインデックスの仕様が若干変わり、1.43までのインデックスは使えなくなりました。これまでインデックスデータは「,」区切りでしたが、これでは不都合な場合があることから、タブ区切りに変更されたものです。 また、1.44ではインデックスcgiにデバッグ出力機能が強化され、これまでよりも不具合発生時の原因追及が楽になりました。 1.45では「$」「?」を検索すると動作がおかしくなるというバグが取れました。
msearchはスクリプト言語(perl)で書かれた、インデックスを作成するタイプの検索エンジンです。 一般にgrepタイプよりもインデックス作成タイプの方が高速に検索できる、検索時のサーバの負担が軽いとされています。grepタイプはインデックス作成の手間がかからない点がお手軽でいいですが、検索スピードが遅く、サーバに負荷がかかります。
しかし、これまで試したところでは、インデックス作成タイプであっても、grepタイプより検索が遅く、したがってサーバの負荷が高いものもあります。さてmsearchはどうでしょうか。
なお、msearchはフリーソフトですが、営利目的の使用(有償でのレンタルや販売・設置代行等)の場合は作者の許可が必要です。その他、利用条件は作者のホームページをご一読ください。
また、perlはver.5.x以上が必要です。4.xでは動作しません。
バージョン1.3xから1.4で機能強化・仕様変更された点は以下の通り。
●検索結果
特に、設定ファイルの変更だけで画面デザインを大きく変えられるようになった点は大きいと思います。これまでのようにcgiを変更する必要はなく、HTMLを知っていれば簡単に画面デザインは変更できます。
なお、1.42ではクロスサイトスクリプティングにも対応しています。 →「Webサイトにおけるクロスサイト スクリプティング脆弱性に関する情報」
1.43で、URL検索のバグが取れました。同時にconfig.datに「urldeco」変数が追加されました。
1.44でインデックスの仕様が若干変わり、1.43までのインデックスは使えなくなりました。これまでインデックスデータは「,」区切りでしたが、これでは不都合な場合があることから、タブ区切りに変更されたものです。 また、1.44ではインデックスcgiにデバッグ出力機能が強化され、これまでよりも不具合発生時の原因追及が楽になりました。
1.45では「$」「?」を検索すると動作がおかしくなるというバグが取れました。
●msearchからmsearch.lzhをダウンロードしてくる。 必要なファイルはこれだけなのでラクチンラクチン。30kb程度と非常に軽いです。手元で解凍します。lzhファイルですから、WindowsでもMacintoshでも解凍は簡単です。
msearch.lzhを解凍すると7つのファイルができます。 genindex.cgi、msearch.cgiの中を開いて、必要な箇所を変更します。最低、genindex.cgiの$g_passwordを変更しておきましょう。パスワードですから。 これを変更しないと、他人に好き勝手にインデックスファイルを書き換えられてしまうかもしれません。 フォルダを作ってそこに以下の4つのファイルを放り込み、いっきにFTPでアップしました。 ()内はパーミッションです。ここでは「msearch」というディレクトリの中にまとめていますが、一般的には「cgi-bin」ディレクトリにまとめるとよいでしょう。 msearch(755)格納ディレクトリ ├─genindex.cgi(755) インデックス作成cgi ├─indexing.pl(644) インデックス処理用外部ファイル ├─msearch.cgi(755) 検索cgi ├─jcode.pl(644) 日本語処理用外部ファイル ├─fold.pl(644) 日本語処理用外部ファイル └─config.dat(644) 変数設定・画面設計ファイル ←1.4の目玉 ※genindex.plはローカルでインデックスを作る時に使うもので、サーバにはアップしなくても大丈夫です。これはmsearchの解説にもあるように、手元のマシンでインデックスを作るためのツールです。 WINマシンで、ActivePerl等のPerl環境をインストールしておいてDOS窓から実行するそうです。以後の操作方法はgenindex.cgiと同じです。 できあがったインデックスとmserach.cgi、fold.pl、jcode.plをサーバにアップします。 僕はMACなのでこれについては試していません。詳しくはmsearchページのインストール、およびFAQを参照してください。 ※genindex.plは自動インデックス作成にも使えます。「自動インデックス更新」を参照してください。
ブラウザでgenindex.cgiにアクセスします。下のようなインデックス作成画面がでてきますので、必要な項目を入力します。下は入力例です。 ぼくが間違ったのは、5番目の「非対象ファイル」で、これはcgiからの相対パスではなく、対象ディレクトリからの相対パスなんですね。説明はよく読みましょうでした。 対象ディレクトリ ※1 (必須) 対象ディレクトリのURL ※2 (必須) 対象ファイルの拡張子 ※3 非対象ディレクトリ ※4 非対象ファイル ※5 非対象キーワード ※6 ランキング方法 ※7 ランキングなし 最終更新日時-降順 最終更新日時-昇順 タイトル-降順 タイトル-昇順 URL-降順 URL-昇順 パスワード ※8 (必須) 「インデックス作成」ボタンを押すとインデックスの作成が始まります。 速! ボタンを押して20秒程度で終わりました(対象ファイル数は690)。できあがったインデックスの大きさは1,085kと小さめ(1.2xでは619ファイルで1,192kだったので、1.3で若干小さくなっています。1.4では変化はないようです)。デカいと思う人もいるとは思いますが、この手のインデックスとしては小さ目です。ちなみに540ファイル程度を対象にした場合、Afri Splendid Searchでは約1.5MB、KISS-Serachでは440K(おお、小さい)、NAMAZUでは650ファイル程度で約1.5MBでした。 既存のインデックスを読み込みます.完了(0ファイル). インデックス化するファイルを収集しています.完了(690ファイル). インデックスから削除(0ファイル) インデックスの更新(0ファイル) インデックスに追加(690ファイル) インデックスを保存しています.完了(690ファイル). 最初、インデックスの作成に失敗しました。これはmsearchのディレクトリが755だったからのようです。777にしたら作成できました。このあたりはサーバによって事情が異なると思います。 もしもインストールやインデックス作成がうまくいかなかったら、「トラブルシューティング」を参照してください。こちらにチェックツールもおいてありますので、お試しください。
●ブラウザでmsearch.cgiにアクセスします。 速!! ウ〜ム、まさにぶっぱやいです。リターンキーを押した瞬間にお返事が返ってくる感じ。すげー。
●ブラウザでmsearch.cgiにアクセスします。
速!! ウ〜ム、まさにぶっぱやいです。リターンキーを押した瞬間にお返事が返ってくる感じ。すげー。
●管理といっても、ホームページの内容に変化があったらインデックスを作り直すだけです。 インデックスを作ったときに入力した条件は、ブラウザのCookieに入っていますから(デフォルトでは60日間有効。変更可能)、同じ条件をもう一度入力するような不自由はありません(設定日数以上インデックスを作らないとまた入力しなくてはいけませんが)。 ブラウザでgenindex.cgiにアクセスし、パスワードを入力して「インデックス作成」ボタンを押すだけです。ラクチンラクチン。14ファイルを更新するのに5〜10秒程度ですみました。
●管理といっても、ホームページの内容に変化があったらインデックスを作り直すだけです。
インデックスを作ったときに入力した条件は、ブラウザのCookieに入っていますから(デフォルトでは60日間有効。変更可能)、同じ条件をもう一度入力するような不自由はありません(設定日数以上インデックスを作らないとまた入力しなくてはいけませんが)。 ブラウザでgenindex.cgiにアクセスし、パスワードを入力して「インデックス作成」ボタンを押すだけです。ラクチンラクチン。14ファイルを更新するのに5〜10秒程度ですみました。
さすがインデックス作成型! 速いです。見つかったファイル数の多い・少ないに関わらず、ともかく速いです。CPU消費時間を表示するように改造して、検索テストでmacwwwsrch.cgi(とほほさんのwwwsrch.cgiの改造版)と対決させましたので参照してください。速さがわかります(ver1.4からは検索時間の表示が機能に加わった)。 それに、フツーのCGIを設置したことがある人なら、誰でも設置できるくらい設置が簡単です。ホントにお手軽。 ただ、解説によるとファイル容量の制限があるサーバや、CGIにファイルを作らせないようなサーバでは運用は面倒になるようです。 not検索もできるし、バージョン1.3からはor検索もサポートされました。実力は十分です。説明書きでは次のようになっています。このあたりの機能も充実してますねー。 or検索のやり方が()で囲むという方法で、他のソフトとは違っていますので注意が必要です。検索式を書くようなユーザーはヘルプを見るでしょうから、このあたりは大丈夫でしょう。 ホームページ内全文検索エンジンmsearchの使い方 例 意味 あいう キーワード「あいう」を含むページを検索. あいう かきく キーワード「あいう」と「かきく」を両方とも含むページを検索. あいう -さしす キーワード「あいう」を含み,かつキーワード「さしす」を含まない ページを検索. (あいう かきく) キーワード「あいう」か「かきく」のどちらか一方もしくは両方を含む ページを検索.ただし,ネストはできません. あいう t:たちつ キーワード「あいう」を含み,かつキーワード「たちつ」がページの タイトルに含まれるページを検索. あいう u:profile キーワード「あいう」を含み,かつそのページのURLに「profile」 が含まれるページを検索.
さすがインデックス作成型! 速いです。見つかったファイル数の多い・少ないに関わらず、ともかく速いです。CPU消費時間を表示するように改造して、検索テストでmacwwwsrch.cgi(とほほさんのwwwsrch.cgiの改造版)と対決させましたので参照してください。速さがわかります(ver1.4からは検索時間の表示が機能に加わった)。
それに、フツーのCGIを設置したことがある人なら、誰でも設置できるくらい設置が簡単です。ホントにお手軽。 ただ、解説によるとファイル容量の制限があるサーバや、CGIにファイルを作らせないようなサーバでは運用は面倒になるようです。
not検索もできるし、バージョン1.3からはor検索もサポートされました。実力は十分です。説明書きでは次のようになっています。このあたりの機能も充実してますねー。 or検索のやり方が()で囲むという方法で、他のソフトとは違っていますので注意が必要です。検索式を書くようなユーザーはヘルプを見るでしょうから、このあたりは大丈夫でしょう。
ホームページ内全文検索エンジンmsearchの使い方
出力順(最終更新時刻降順、最終更新時刻昇順、ページ内容降順、ページ内容昇順、タイトル降順、タイトル昇順、URL降順、URL昇順)については、1.21までは検索時に指定することが可能でしたが、1.3以降ではインデックス時に指定するため、検索時に指定することはできなくなりました。 インデックスづくりが速いのにも驚き。他のインデックス型だと、この程度(対象ファイル数600程度)でも1〜10分程度かかります。それが1分かからない。これは管理の手間が大幅にかからないことを意味していますし、同時にサーバの負担もそうとう減っていることと思います。 まとめ インデックスタイプはインデックスの作成時にサーバ負荷が高いものがあります。わたしが試したところでは、msearchはインデックスの作成がもっとも高速です。これまでで最も速いものでも1分ほどかかっていましたが、msearchはわずか20秒から30秒です(ファイル数600程度であることを忘れずに)。 検索スピードも超高速です。ただし、これはまだファイル数が少ないためかもしれませんので、その点を頭に入れておいて下さい。 現時点ではインデックススピード、検索スピードともperlタイプとしてはトップクラスです。 加えて設置が簡単(FTPとブラウザでOK。telnetは必要ありません)です。 中・小規模でインデックスタイプをお考えなら文句なくmsearchを押します。 インデックスタイプはインデックス作成の手間があっていやだという方はとほほさんのwwwsrchをお薦めします(ver3.09以上)。
出力順(最終更新時刻降順、最終更新時刻昇順、ページ内容降順、ページ内容昇順、タイトル降順、タイトル昇順、URL降順、URL昇順)については、1.21までは検索時に指定することが可能でしたが、1.3以降ではインデックス時に指定するため、検索時に指定することはできなくなりました。
インデックスづくりが速いのにも驚き。他のインデックス型だと、この程度(対象ファイル数600程度)でも1〜10分程度かかります。それが1分かからない。これは管理の手間が大幅にかからないことを意味していますし、同時にサーバの負担もそうとう減っていることと思います。
まとめ
インデックスタイプはインデックスの作成時にサーバ負荷が高いものがあります。わたしが試したところでは、msearchはインデックスの作成がもっとも高速です。これまでで最も速いものでも1分ほどかかっていましたが、msearchはわずか20秒から30秒です(ファイル数600程度であることを忘れずに)。
検索スピードも超高速です。ただし、これはまだファイル数が少ないためかもしれませんので、その点を頭に入れておいて下さい。
現時点ではインデックススピード、検索スピードともperlタイプとしてはトップクラスです。 加えて設置が簡単(FTPとブラウザでOK。telnetは必要ありません)です。
中・小規模でインデックスタイプをお考えなら文句なくmsearchを押します。 インデックスタイプはインデックス作成の手間があっていやだという方はとほほさんのwwwsrchをお薦めします(ver3.09以上)。
ver1.4ではスピードに関して次のようなアナウンスがあります。 (1) 全角1文字の検索がスピードアップ(従来比10倍以上) (2) 半角英文字を含む検索がスピードアップ(従来比20%アップ) そこで、ver1.33とver1.4を対決させてみました。って、ダン対セブンの決闘はウルトラセブンとニセセブンの戦いじゃなかったっけ? なお、1.4の時間は、表示された時間から小数点第4位を四捨五入しました。 検索単語 msearch.cgi 1.3 (Katsushi Matsudaさんのmsearch.cgiの改造版) msearch.cgi 1.4 (Katsushi Matsudaさんのmsearch.cgiのconfig.dat変更版) 全角1文字 性 ヒット数:725 CPU秒:0.133 ヒット数:725 CPU秒:0.125 能 ヒット数:725 CPU秒:0.125 ヒット数:725 CPU秒:0.102 表 ヒット数:725 CPU秒:0.109 ヒット数:725 CPU秒:0.109 重 ヒット数:729 CPU秒:0.680 ヒット数:729 CPU秒:0.125 一 ヒット数:98 CPU秒:0.93 ヒット数:98 CPU秒:0.09 較 ヒット数:4 CPU秒:0.953 ヒット数:4 CPU秒:0.09 英文字を含む2単語 AND検索 28mm/ 単焦点 ヒット数:37 CPU秒:0.266 ヒット数:37 CPU秒:0.117 FUJIFILM 表 ヒット数:102 CPU秒:0.281 ヒット数:102 CPU秒:0.125 アナウンス通り、全体に1.4の方がスピードアップしています。 全角1文字の場合、「性」「能」「表」はすべてタイトルにもこの文字が入っています。タイトルにキーワードがあると、1.4の新アルゴリズムは十分に働きません。そのためこの3つでは1.33と1.4は大差ないスピード差になっています。 これに対して、「重」「一」「較」はタイトルにこれらの文字がありません。これらを見ると6倍〜10倍ほどスピードアップしていることがわかります(「重」だけは検索テスト日がずれているため、729件ヒットしています。これがこのときのファイル総数です。)。 英文字を含む検索では、このテストで倍以上のスピードがでることもあることもわかりました。
ver1.4ではスピードに関して次のようなアナウンスがあります。
(1) 全角1文字の検索がスピードアップ(従来比10倍以上) (2) 半角英文字を含む検索がスピードアップ(従来比20%アップ)
そこで、ver1.33とver1.4を対決させてみました。って、ダン対セブンの決闘はウルトラセブンとニセセブンの戦いじゃなかったっけ?
なお、1.4の時間は、表示された時間から小数点第4位を四捨五入しました。
検索単語
アナウンス通り、全体に1.4の方がスピードアップしています。 全角1文字の場合、「性」「能」「表」はすべてタイトルにもこの文字が入っています。タイトルにキーワードがあると、1.4の新アルゴリズムは十分に働きません。そのためこの3つでは1.33と1.4は大差ないスピード差になっています。
これに対して、「重」「一」「較」はタイトルにこれらの文字がありません。これらを見ると6倍〜10倍ほどスピードアップしていることがわかります(「重」だけは検索テスト日がずれているため、729件ヒットしています。これがこのときのファイル総数です。)。
英文字を含む検索では、このテストで倍以上のスピードがでることもあることもわかりました。
(この項目の評価は1.3で行ったものですが、1.4でも基本的に同じです。) どの程度の規模まで実用になるのかテストしたいと思い、genindex.cgiとmsearch.cgiを改造して、きのぼず掲示板システム(掲示板一覧)の「コンパクトカメラ掲示板1〜6」のインデックスを作ってみました。きのぼずシステムはタイトルをデータベースファイルが持っていて、発言内容はそれぞれ1発言1ファイルの独立ファイルとなっています。インデックスの際に両者を合体させる必要があるため、genindex.cgiとmsearch.cgiとも改造しました(土台にしたのはmsearch 1.3β3)。 インデックスには約15分かかりましたが、これは処理中のファイルを表示させるようにしたため、転送でかなり時間を食われています。後述のようにサーバの処理速度の違いもあり、参考にはなりません。ちなみにこのインデックス作成報告画面のソース保存してみたら、1.1MBありました。ムチャでんがな(^^; インデックスしたファイルの数は10,831ファイルで、インデックスの大きさは10,348kとなりました。10.1MBということですね。ウ〜ム、デカい。 ここで注意が一つ。何しろ掲示板の発言ファイルですので、一つ一つのファイルは小さいです。1ファイルの容量は1kもありません。通常のhtmlファイルよりだいぶ小さい規模だという点に注意してください。ファイル数で見るよりインデックスの大きさで見た方がよいと思われます。 最初、そのままamaysサーバでテストしましたが、どうも遅い。それに、サーバが違うのでこれまでのテストと比較ができないことから、インデックスをcgi.kiwiサーバに転送してテストしてみました。 検索単語 20件表示 amays 20件表示 cgi.kiwi 1単語 写り ヒット数:921件 CPU秒:5.840 ヒット数:921件 CPU秒:1.344 ライカ ヒット数:547 CPU秒:3.800 ヒット数:547 CPU秒:0.867 GR1 ヒット数:894 CPU秒:12.860 ヒット数:894 CPU秒:3.109 2単語 AND検索 ライカ C1 ヒット数:47 CPU秒:4.460 ヒット数:47 CPU秒:1.062 コンタックス ティアラ ヒット数:18 CPU秒:5.920 ヒット数:18 CPU秒:1.578 写り GR1 ヒット数:144 CPU秒:6.910 ヒット数:144 CPU秒:1.500 3単語 AND検索 コンタックス ティアラ リコー ヒット数:6 CPU秒:4.550 ヒット数:6 CPU秒:1.117 ウ〜ム、amaysサーバで動かすには明らかに無理がありますが、いつものcgi.kiwiサーバではそこそこのスピードで動いてしまう(さすがにcgi専用サーバ!)。サーバ環境というのは大事ですね。ざっと4倍程度の処理速度の違いがあります。はじめて知った。 それにしても恐るべし、msearch。サーバによっては10MBのインデックスでもこれだけのスピードで動くんですね。さすがに1秒以上の時間がかかることから実用上は疑問符がつきますが、半分の5MB程度なら十分いけそうです。 コンパクトカメラデータページは、現在694ファイルあって、インデックスは1,091kです(1ファイル平均1.6k)。仮に5MBを限界とすると(オイオイ、5MBの根拠がないぞ)、1,024k×5/1.6k=3,200ファイルあたりまで使えそうだということになります。 cgi.kiwiでは10MBはすでに限界といっていいようです。 単純に、検索スピードがインデックス容量に左右されると仮定すると、amaysでは10,348k/4=2,587kですでに限界が来ているだろうということになります。 検索ソフトの導入には、ご自分のサーバでスピードテストをしてみることをお薦めします。 それにしても、限界テストというより、サーバテストになっちゃったな(^^;
(この項目の評価は1.3で行ったものですが、1.4でも基本的に同じです。)
どの程度の規模まで実用になるのかテストしたいと思い、genindex.cgiとmsearch.cgiを改造して、きのぼず掲示板システム(掲示板一覧)の「コンパクトカメラ掲示板1〜6」のインデックスを作ってみました。きのぼずシステムはタイトルをデータベースファイルが持っていて、発言内容はそれぞれ1発言1ファイルの独立ファイルとなっています。インデックスの際に両者を合体させる必要があるため、genindex.cgiとmsearch.cgiとも改造しました(土台にしたのはmsearch 1.3β3)。
インデックスには約15分かかりましたが、これは処理中のファイルを表示させるようにしたため、転送でかなり時間を食われています。後述のようにサーバの処理速度の違いもあり、参考にはなりません。ちなみにこのインデックス作成報告画面のソース保存してみたら、1.1MBありました。ムチャでんがな(^^;
インデックスしたファイルの数は10,831ファイルで、インデックスの大きさは10,348kとなりました。10.1MBということですね。ウ〜ム、デカい。 ここで注意が一つ。何しろ掲示板の発言ファイルですので、一つ一つのファイルは小さいです。1ファイルの容量は1kもありません。通常のhtmlファイルよりだいぶ小さい規模だという点に注意してください。ファイル数で見るよりインデックスの大きさで見た方がよいと思われます。
最初、そのままamaysサーバでテストしましたが、どうも遅い。それに、サーバが違うのでこれまでのテストと比較ができないことから、インデックスをcgi.kiwiサーバに転送してテストしてみました。
ウ〜ム、amaysサーバで動かすには明らかに無理がありますが、いつものcgi.kiwiサーバではそこそこのスピードで動いてしまう(さすがにcgi専用サーバ!)。サーバ環境というのは大事ですね。ざっと4倍程度の処理速度の違いがあります。はじめて知った。
それにしても恐るべし、msearch。サーバによっては10MBのインデックスでもこれだけのスピードで動くんですね。さすがに1秒以上の時間がかかることから実用上は疑問符がつきますが、半分の5MB程度なら十分いけそうです。
コンパクトカメラデータページは、現在694ファイルあって、インデックスは1,091kです(1ファイル平均1.6k)。仮に5MBを限界とすると(オイオイ、5MBの根拠がないぞ)、1,024k×5/1.6k=3,200ファイルあたりまで使えそうだということになります。
cgi.kiwiでは10MBはすでに限界といっていいようです。 単純に、検索スピードがインデックス容量に左右されると仮定すると、amaysでは10,348k/4=2,587kですでに限界が来ているだろうということになります。
検索ソフトの導入には、ご自分のサーバでスピードテストをしてみることをお薦めします。 それにしても、限界テストというより、サーバテストになっちゃったな(^^;
msearchのFAQにもありますが、ver.1.2xからバージョンアップするときには注意が必要です。というのも、インデックスに互換性がありません。1.2xから1.3x/1.4xにアップした場合は、一度インデックスを削除して、もう一度作成しなおして下さい。 1.3xから1.43までへのバージョンアップは、インデックスファイルは共通で使えます。 1.44になって、インデックスのデータ区切りが「,」からタブに変更されたため、1.43までのインデックスは1.44では使えません。インデックスを作り直してください。
msearchのFAQにもありますが、ver.1.2xからバージョンアップするときには注意が必要です。というのも、インデックスに互換性がありません。1.2xから1.3x/1.4xにアップした場合は、一度インデックスを削除して、もう一度作成しなおして下さい。
1.3xから1.43までへのバージョンアップは、インデックスファイルは共通で使えます。
1.44になって、インデックスのデータ区切りが「,」からタブに変更されたため、1.43までのインデックスは1.44では使えません。インデックスを作り直してください。
●genindex.plとサーバのcron機能を使う この方法はmsearchのFAQに書かれています。 telnetができることと、cron登録が許されている事が必要です。 FAQに補足します。 「======== shスクリプトの例 =======」に名前を付けて保存します。FAQにあるように「autogenindex.sh」とでもすればよいと思います。ファイルはgenindex.plと同じディレクトリにおきます。漢字コードはEUC、改行コードはLF、パーミッションは755にします(genindex.plも同じです)。 telnetで該当のディレクトリにいき、「./autogenindex.sh」と打ち込んでテストしてみてください。無事にインデックスが更新されたら、次はcronへの登録です。 cronへの登録はちょっと面倒です。「マニュアルに書いてないNAMAZU/毎日午前7時にインデックスを更新する」でcronへ登録する方法を解説していますので、参照してください。 なお、テストしたところ、telnetでshファイルから実行させるより、ブラウザからcgiを使って更新した方が高速に処理できました。690ファイルをtelnetでshファイルによって新規にインデックスを作った場合約3分、ブラウザから新規に作った場合、約20秒程度でした。 このあたり、ちゃんとtelnetでテストしてあなたのサーバでのスピードを把握した上で導入することをお勧めします。もしcron登録するなら、サーバ負荷の減る明け方6時頃がよいでしょう。 ●cron登録、またはtelnetが許されていない場合 やや強引ですが、手元のコンピュータを起動しておき、時間指定ツール(cron系アプリ)で インターネットに接続 → ブラウザを起動 → genindex.cgiにアクセス → 設定を入力 → 送信、という一連の動作を自動で行うという手があります。 「cron系ツール」とは、UNIXのcronと同じように、一定の時間になると自動的にアプリケーションやファイルを実行してくれるツールです(Vectorあたりで検索すると良いでしょう。さもなければgoogleとか)。 これらを利用してブラウザを立ち上げ、自動的にタイピングしてインデックスを作らせるというわけです。僕はMACなのでWindowsでこうしたことが実際に可能なのか不明です。 MACならcron系ツール、ブラウザ、AppleScriptの組み合わせで可能です。AppleScriptの雛形は「msearch_index.txt」をクリックすると表示されます(このスクリプトは使用・改変・再配布自由です)。コピーしてAppleScript編集プログラムにペーストし、設定を変更してお使いください。「アプリケーション」として保存するといいでしょう。 このAppleScriptでやっているのは、単純にcgiに渡すフォームデータを生成し、ブラウザを使ってcgiに送っているだけです。したがって、cron系アプリでインターネットに接続し、次にこのAppleScriptを実行させてください。AppleScriptは自動的にブラウザを立ち上げて送信します。 もし自分でAppleScriptをかけるなら、時間が来たら自動的にスクリプトを実行するように変更するのも簡単だと思います。
この方法はmsearchのFAQに書かれています。 telnetができることと、cron登録が許されている事が必要です。
FAQに補足します。 「======== shスクリプトの例 =======」に名前を付けて保存します。FAQにあるように「autogenindex.sh」とでもすればよいと思います。ファイルはgenindex.plと同じディレクトリにおきます。漢字コードはEUC、改行コードはLF、パーミッションは755にします(genindex.plも同じです)。
telnetで該当のディレクトリにいき、「./autogenindex.sh」と打ち込んでテストしてみてください。無事にインデックスが更新されたら、次はcronへの登録です。
cronへの登録はちょっと面倒です。「マニュアルに書いてないNAMAZU/毎日午前7時にインデックスを更新する」でcronへ登録する方法を解説していますので、参照してください。
なお、テストしたところ、telnetでshファイルから実行させるより、ブラウザからcgiを使って更新した方が高速に処理できました。690ファイルをtelnetでshファイルによって新規にインデックスを作った場合約3分、ブラウザから新規に作った場合、約20秒程度でした。
このあたり、ちゃんとtelnetでテストしてあなたのサーバでのスピードを把握した上で導入することをお勧めします。もしcron登録するなら、サーバ負荷の減る明け方6時頃がよいでしょう。
やや強引ですが、手元のコンピュータを起動しておき、時間指定ツール(cron系アプリ)で インターネットに接続 → ブラウザを起動 → genindex.cgiにアクセス → 設定を入力 → 送信、という一連の動作を自動で行うという手があります。
「cron系ツール」とは、UNIXのcronと同じように、一定の時間になると自動的にアプリケーションやファイルを実行してくれるツールです(Vectorあたりで検索すると良いでしょう。さもなければgoogleとか)。
これらを利用してブラウザを立ち上げ、自動的にタイピングしてインデックスを作らせるというわけです。僕はMACなのでWindowsでこうしたことが実際に可能なのか不明です。
MACならcron系ツール、ブラウザ、AppleScriptの組み合わせで可能です。AppleScriptの雛形は「msearch_index.txt」をクリックすると表示されます(このスクリプトは使用・改変・再配布自由です)。コピーしてAppleScript編集プログラムにペーストし、設定を変更してお使いください。「アプリケーション」として保存するといいでしょう。
このAppleScriptでやっているのは、単純にcgiに渡すフォームデータを生成し、ブラウザを使ってcgiに送っているだけです。したがって、cron系アプリでインターネットに接続し、次にこのAppleScriptを実行させてください。AppleScriptは自動的にブラウザを立ち上げて送信します。
もし自分でAppleScriptをかけるなら、時間が来たら自動的にスクリプトを実行するように変更するのも簡単だと思います。
●全件ヒットさせる。 これは掲示板でKatsushi Matsudaさんに教わりました。「キーワードに「-ほんがらげー」のような絶対に1件もヒットしないキーワードのNOT検索にする」と全件にヒットします。同時にこの方法ではヒットするキーワードがありませんから、強調表示もしません。「全件ヒットさせたいけど、強調表示はいやだ」という場合に有効です。 ●特定のディレクトリだけ検索させたい こんな構造だとして、 html ├Aディレクトリ ├Bディレクトリ ├ … 普段は全ディレクトリを検索させ、ユーザーの好みでAディレクトリ、Bディレクトリの中だけ検索させたい、なんて時に使います。 msearchの「uオプション」機能を利用して、検索単語の中に「u:/Aディレクトリ/」なんて具合にディレクトリを含ませちゃえばいいわけです。よーするにこういうことです。 ディレクトリ選択 Aディレクトリ Bディレクトリ これ、msearchの検索窓の前に次のタグを追加しただけです。これで「/A/」または「/B/」を含んだディレクトリだけ検索できます。cgiに手を入れる必要はなく、スキンの変更だけで実装可能です。 ポイントはvalueに半角スペースをいれてからuオプションを記述することです。 <SELECT NAME="query"> <OPTION SELECTED>ディレクトリ選択 <OPTION VALUE=" u:/A/">Aディレクトリ <OPTION VALUE=" u:/B/">Bディレクトリ </SELECT> これを応用したのが「簡単検索」機能で、あらかじめ検索頻度の高いキーワードを複数選択できるようにしたものです。 簡単検索の具体的なスキンの変更方法は、スキンの配布を参照していただくとより参考になるでしょう。 ●altタグなど本文にでてこないキーワードをヒットさせたい。 msearch ver.1.46現在ではこの機能はありません。しかし、これを解決する秀逸なアイディアがmsearch掲示板でseamusさんから報告されました。612番「本文以外の文字を検索に引っ掛けるには?」のスレッドを参照してください。 なお、msearchの次のバージョンでaltタグにも対応する予定とのこと。 ●and検索、or検索別の検索窓を設けたい 「m_andor.cgi」を参照してください。 and検索/or検索別々の入力欄からキーワードを受け取り、or検索用の整形を施してmsearch.cgiに入力を渡す自作CGIがダウンロードできます。 改変等は自由ですのでガシガシ改造して使ってください。
これは掲示板でKatsushi Matsudaさんに教わりました。「キーワードに「-ほんがらげー」のような絶対に1件もヒットしないキーワードのNOT検索にする」と全件にヒットします。同時にこの方法ではヒットするキーワードがありませんから、強調表示もしません。「全件ヒットさせたいけど、強調表示はいやだ」という場合に有効です。
こんな構造だとして、 html ├Aディレクトリ ├Bディレクトリ ├ … 普段は全ディレクトリを検索させ、ユーザーの好みでAディレクトリ、Bディレクトリの中だけ検索させたい、なんて時に使います。 msearchの「uオプション」機能を利用して、検索単語の中に「u:/Aディレクトリ/」なんて具合にディレクトリを含ませちゃえばいいわけです。よーするにこういうことです。 ディレクトリ選択 Aディレクトリ Bディレクトリ これ、msearchの検索窓の前に次のタグを追加しただけです。これで「/A/」または「/B/」を含んだディレクトリだけ検索できます。cgiに手を入れる必要はなく、スキンの変更だけで実装可能です。 ポイントはvalueに半角スペースをいれてからuオプションを記述することです。 <SELECT NAME="query"> <OPTION SELECTED>ディレクトリ選択 <OPTION VALUE=" u:/A/">Aディレクトリ <OPTION VALUE=" u:/B/">Bディレクトリ </SELECT> これを応用したのが「簡単検索」機能で、あらかじめ検索頻度の高いキーワードを複数選択できるようにしたものです。 簡単検索の具体的なスキンの変更方法は、スキンの配布を参照していただくとより参考になるでしょう。
こんな構造だとして、
html ├Aディレクトリ ├Bディレクトリ ├ …
普段は全ディレクトリを検索させ、ユーザーの好みでAディレクトリ、Bディレクトリの中だけ検索させたい、なんて時に使います。
msearchの「uオプション」機能を利用して、検索単語の中に「u:/Aディレクトリ/」なんて具合にディレクトリを含ませちゃえばいいわけです。よーするにこういうことです。
ディレクトリ選択 Aディレクトリ Bディレクトリ
これ、msearchの検索窓の前に次のタグを追加しただけです。これで「/A/」または「/B/」を含んだディレクトリだけ検索できます。cgiに手を入れる必要はなく、スキンの変更だけで実装可能です。
ポイントはvalueに半角スペースをいれてからuオプションを記述することです。
これを応用したのが「簡単検索」機能で、あらかじめ検索頻度の高いキーワードを複数選択できるようにしたものです。
簡単検索の具体的なスキンの変更方法は、スキンの配布を参照していただくとより参考になるでしょう。
msearch ver.1.46現在ではこの機能はありません。しかし、これを解決する秀逸なアイディアがmsearch掲示板でseamusさんから報告されました。612番「本文以外の文字を検索に引っ掛けるには?」のスレッドを参照してください。 なお、msearchの次のバージョンでaltタグにも対応する予定とのこと。
msearch ver.1.46現在ではこの機能はありません。しかし、これを解決する秀逸なアイディアがmsearch掲示板でseamusさんから報告されました。612番「本文以外の文字を検索に引っ掛けるには?」のスレッドを参照してください。
なお、msearchの次のバージョンでaltタグにも対応する予定とのこと。
「m_andor.cgi」を参照してください。 and検索/or検索別々の入力欄からキーワードを受け取り、or検索用の整形を施してmsearch.cgiに入力を渡す自作CGIがダウンロードできます。 改変等は自由ですのでガシガシ改造して使ってください。
「m_andor.cgi」を参照してください。
and検索/or検索別々の入力欄からキーワードを受け取り、or検索用の整形を施してmsearch.cgiに入力を渡す自作CGIがダウンロードできます。
改変等は自由ですのでガシガシ改造して使ってください。
●一般的なチェックポイント。 「CGI設置入門/トラブルシューティング」などを参照しながらCGI一般に当てはまる基本的なチェックをしてください。 msearchの解説ももう一度読んでみましょう。msearchのFAQも読み逃さないようにしてください。msearch掲示板を見ていると、案外FAQが読まれていないようです。 ●チェックツール(check_ms.cgi)を使う。 msearchを設置する際のチェックツールを作りました。 ・2002/1/28ver2.17リリース ver1.4対応。jcode.plが利用できない場合、漢字コード/改行コードの判定を表示せずに終了するバグををフィックス。 ・2001/10/23ver2.16リリース 1. check_ms.txtをクリック。(ver1.4x対応版です。1.3xに使うと、config.dat、indexing.plがないと文句を言われます。その場合は無視してください。) 2. 表示内容をコピーし、テキストエディタにペーストします。 3. 中の説明にしたがって設定部分を変更します(最大3箇所。普通は2カ所)。 4. これを「check_ms.cgi」という名前で保存します。保存の際に漢字コード/改行コードをEUC/LFにして下さい。 5. msearch.cgiと同じディレクトリにアップロードします。 6. パーミッションを755にします。 7. ブラウザでcheck_ms.cgiにアクセスするとチェックしてくれます。 おかしな部分は赤字で表示されます。 このTOOLを使うことで、ほとんどのミスは発見することができます。このTOOLでも発見できないのは、サーバがcgiに対して行っている特殊な制限だけです。詳しくはツールを動かして解説を読んでください。 このツールは水沢・penguin-19・和彦が作ったもので、msearchの作者Katsushi Matsudaさんとは関係ありません。check_ms.cgiについての不具合、説明がちんぷんかんぷん、ここがわからない、などは水沢・penguin-19・和彦までお願いします。「マニュアルに書いてない掲示板」でもけっこうです。 ●msearch掲示板で相談する。 最後に、msearch掲示板で相談するという手があります。もともとバグ情報や次期バージョンの要望などを作者に伝えるための掲示板ですが、設置方法についても相談に乗ってくれます。作者にサポートしてもらえるというのは心強いものです。 ただ、この手のサポート掲示板の礼儀だけは守りましょう。質問の前に、必ず以前自分と同じ症状の相談がなかったか調べてください。「msearch掲示板で過去にあった事例」も参考にしてください。 相談の際には、 ・どのバージョンを使っているのか、 ・どんな不具合があるのか、 ・どんなチェックをしたか、 ・サーバ環境などはどうなっているか、 など、できるだけ正確に、具体的に書きましょう。 症状を具体的に書くことは大事です。「CGIが動きません。誰か助けて」だけではまったくわかりません。ブラウザでアクセスしてもまったく反応がないのか、動作はするけどエラーがでるとか、エラーがでるならどんなエラーで、エラー番号(通常ブラウザの一番上に表示されます)はなにかとか、具体的に書かなくては症状は読む人に伝わりません。 アドバイスがあったら、アドバイスの何を実行して何を実行しなかったか、実行の結果はどうだったか、キチンと報告してください。 これを怠ると、状況を正しくつかめないばかりでなく、同様の症状にみまわれた他の人の参考になりません。サポート掲示板はいわば「自分たちで作るFAQ」ですから、自分だけが解決すればいいという態度は捨てて、他の人にも役に立つように掲示板に書き込むように心がけましょう。
「CGI設置入門/トラブルシューティング」などを参照しながらCGI一般に当てはまる基本的なチェックをしてください。 msearchの解説ももう一度読んでみましょう。msearchのFAQも読み逃さないようにしてください。msearch掲示板を見ていると、案外FAQが読まれていないようです。
「CGI設置入門/トラブルシューティング」などを参照しながらCGI一般に当てはまる基本的なチェックをしてください。
msearchの解説ももう一度読んでみましょう。msearchのFAQも読み逃さないようにしてください。msearch掲示板を見ていると、案外FAQが読まれていないようです。
msearchを設置する際のチェックツールを作りました。 ・2002/1/28ver2.17リリース ver1.4対応。jcode.plが利用できない場合、漢字コード/改行コードの判定を表示せずに終了するバグををフィックス。 ・2001/10/23ver2.16リリース 1. check_ms.txtをクリック。(ver1.4x対応版です。1.3xに使うと、config.dat、indexing.plがないと文句を言われます。その場合は無視してください。) 2. 表示内容をコピーし、テキストエディタにペーストします。 3. 中の説明にしたがって設定部分を変更します(最大3箇所。普通は2カ所)。 4. これを「check_ms.cgi」という名前で保存します。保存の際に漢字コード/改行コードをEUC/LFにして下さい。 5. msearch.cgiと同じディレクトリにアップロードします。 6. パーミッションを755にします。 7. ブラウザでcheck_ms.cgiにアクセスするとチェックしてくれます。 おかしな部分は赤字で表示されます。 このTOOLを使うことで、ほとんどのミスは発見することができます。このTOOLでも発見できないのは、サーバがcgiに対して行っている特殊な制限だけです。詳しくはツールを動かして解説を読んでください。 このツールは水沢・penguin-19・和彦が作ったもので、msearchの作者Katsushi Matsudaさんとは関係ありません。check_ms.cgiについての不具合、説明がちんぷんかんぷん、ここがわからない、などは水沢・penguin-19・和彦までお願いします。「マニュアルに書いてない掲示板」でもけっこうです。
msearchを設置する際のチェックツールを作りました。 ・2002/1/28ver2.17リリース ver1.4対応。jcode.plが利用できない場合、漢字コード/改行コードの判定を表示せずに終了するバグををフィックス。 ・2001/10/23ver2.16リリース
1. check_ms.txtをクリック。(ver1.4x対応版です。1.3xに使うと、config.dat、indexing.plがないと文句を言われます。その場合は無視してください。) 2. 表示内容をコピーし、テキストエディタにペーストします。 3. 中の説明にしたがって設定部分を変更します(最大3箇所。普通は2カ所)。 4. これを「check_ms.cgi」という名前で保存します。保存の際に漢字コード/改行コードをEUC/LFにして下さい。 5. msearch.cgiと同じディレクトリにアップロードします。 6. パーミッションを755にします。 7. ブラウザでcheck_ms.cgiにアクセスするとチェックしてくれます。 おかしな部分は赤字で表示されます。
このTOOLを使うことで、ほとんどのミスは発見することができます。このTOOLでも発見できないのは、サーバがcgiに対して行っている特殊な制限だけです。詳しくはツールを動かして解説を読んでください。
このツールは水沢・penguin-19・和彦が作ったもので、msearchの作者Katsushi Matsudaさんとは関係ありません。check_ms.cgiについての不具合、説明がちんぷんかんぷん、ここがわからない、などは水沢・penguin-19・和彦までお願いします。「マニュアルに書いてない掲示板」でもけっこうです。
最後に、msearch掲示板で相談するという手があります。もともとバグ情報や次期バージョンの要望などを作者に伝えるための掲示板ですが、設置方法についても相談に乗ってくれます。作者にサポートしてもらえるというのは心強いものです。 ただ、この手のサポート掲示板の礼儀だけは守りましょう。質問の前に、必ず以前自分と同じ症状の相談がなかったか調べてください。「msearch掲示板で過去にあった事例」も参考にしてください。 相談の際には、 ・どのバージョンを使っているのか、 ・どんな不具合があるのか、 ・どんなチェックをしたか、 ・サーバ環境などはどうなっているか、 など、できるだけ正確に、具体的に書きましょう。 症状を具体的に書くことは大事です。「CGIが動きません。誰か助けて」だけではまったくわかりません。ブラウザでアクセスしてもまったく反応がないのか、動作はするけどエラーがでるとか、エラーがでるならどんなエラーで、エラー番号(通常ブラウザの一番上に表示されます)はなにかとか、具体的に書かなくては症状は読む人に伝わりません。 アドバイスがあったら、アドバイスの何を実行して何を実行しなかったか、実行の結果はどうだったか、キチンと報告してください。 これを怠ると、状況を正しくつかめないばかりでなく、同様の症状にみまわれた他の人の参考になりません。サポート掲示板はいわば「自分たちで作るFAQ」ですから、自分だけが解決すればいいという態度は捨てて、他の人にも役に立つように掲示板に書き込むように心がけましょう。
最後に、msearch掲示板で相談するという手があります。もともとバグ情報や次期バージョンの要望などを作者に伝えるための掲示板ですが、設置方法についても相談に乗ってくれます。作者にサポートしてもらえるというのは心強いものです。
ただ、この手のサポート掲示板の礼儀だけは守りましょう。質問の前に、必ず以前自分と同じ症状の相談がなかったか調べてください。「msearch掲示板で過去にあった事例」も参考にしてください。
相談の際には、 ・どのバージョンを使っているのか、 ・どんな不具合があるのか、 ・どんなチェックをしたか、 ・サーバ環境などはどうなっているか、 など、できるだけ正確に、具体的に書きましょう。
症状を具体的に書くことは大事です。「CGIが動きません。誰か助けて」だけではまったくわかりません。ブラウザでアクセスしてもまったく反応がないのか、動作はするけどエラーがでるとか、エラーがでるならどんなエラーで、エラー番号(通常ブラウザの一番上に表示されます)はなにかとか、具体的に書かなくては症状は読む人に伝わりません。
アドバイスがあったら、アドバイスの何を実行して何を実行しなかったか、実行の結果はどうだったか、キチンと報告してください。
これを怠ると、状況を正しくつかめないばかりでなく、同様の症状にみまわれた他の人の参考になりません。サポート掲示板はいわば「自分たちで作るFAQ」ですから、自分だけが解決すればいいという態度は捨てて、他の人にも役に立つように掲示板に書き込むように心がけましょう。
よくあるトラブルの解決法を書きます。「msearch掲示板で過去にあった事例」も参考にしてください。 ●indexが作れない genindex.cgiにブラウザでアクセスし、「管理メニュー」画面の「インデックスを作る」で、空のインデックスファイルを作れるかどうか試してください。 管理メニューから空のインデックスファイルが作れない場合は、手動で作ってやります。手元で空っぽのindex.idxファイルを作ってからFTPでアップロードし(genindex.cgiと同じディレクトリに入れて、パーミッションを666にします)、もう一度インデックスしてください。 ●インデックス対象のファイル数が少ないとインデックスできるのに、ファイル数が多くなるとインデックス作成に失敗する。 CGIには、最大使用メモリ、実行時間、最大同時実行数などさまざまな制限があります。これらの制限に引っかかるとCGIは強制的に終了させられます。 msearchのインデックス作成には大きなメモリが必要となりますし、時間もかかります。対象ファイル数が少ないとインデックスが作れる場合は、動作自体はしているわけです。ファイル数を多くしたとたんにインデックスできないとなると、CGIのプロセス制限にひっかかってしまったということです。 こうなるとサーバ上で一気にインデックスを作ることはできません。次のような対処法があります。 1. telnetが許されているなら、genindex.plを使ってサーバ上でインデックスを作る。 msearchの「インストール方法6番」の最後参照。telnetして手動でgenindex.plを起動し、質問に答える形でインデックスの作成ができます。 2. telnetが許可されていない場合は、次の2つの方法があります。 2-1 サーバ上でインデックスを小分けして作成し、手動で合体させる。 インデックスが作れる範囲で小分けしてインデックスを作ります(作ったらその都度FTPで手元にダウンロードし、名前を変えておく)。全部インデックスできたら、手元でテキストエディタでインデックスを開き、カット&ペーストでひとつのファイルにまとめます。できたインデックスをサーバにアップします。 msearchのFAQ4番のcを参照してください。 注意点としては、インデックスの際に「対象ディレクトリ」と「対象ディレクトリのURL」をきちんと対応させながらインデックスを作る、という点です。 例: 対象ディレクトリ:../aaa/ 対象ディレクトリのURL:http://abc.com/~name/aaa/ このように、ちゃんとURLのほうも「/aaa/」まで指定することを忘れずに。さもないと検索結果で間違ったURLにりんくしてしまいます。 2-2 手元のマシンでローカルサーバを立て、手元でインデックスを作成し、サーバにアップする。 msearchのFAQ4番のdを参照してください。 サーバの立て方は、windowsならあちこちに解説ページがありますのでgoogleなどで検索してみてください。MACならOS Xである必要があります(msearchの動作にはMAC perlではなくUNIX perlが必要なので)。「MAC OS X Darwin Tips」などを参照してください。 2-1と2-2では、2-2の方が圧倒的に楽です。一発でインデックスできますし。 ●検索結果のキーワード欄の文字が化けている 検索フォームをSJISで記述していると思います。EUCでフォームを書くと文字化けしません。1.4xではこのトラブルはまずでないはずです。 ●フレームを使っているので別フレームに結果を表示させたい フォームをちょっと変更するだけです。「<form action="http://......." .... target="frameName">」とするだけです。「frameName」は表示させたいフレームの名前を指定します。 フレームには対応する名前(<FRAME src="fileName" name="frameName">)を指定しておきます。 targetタグはframeタグのnameオプションで指定された名前で目的のフレームを探します。したがって、2つ以上のフレームに同じnameが指定してあると、誤動作します。フレームの名前はダブっていてはいけません。 ●「対象ディレクトリのURL※2」の指定がわからない ●検索結果のURLと実際のURLがずれる ●ローカルで作ったインデックスをサイトで使いたい 「対象ディレクトリのURL※2(必須)」は検索結果のURLと実際のURLのズレを吸収する役目を持っています。 CGIをどのディレクトリにでもおける場合はそれほど問題にならないと思いますが、cgi-binなど特定のディレクトリにCGIをおく必要がある場合は、検索結果画面でリンクされるURLと実際のURLがずれます。 例えば、検索結果でリンクされるURLが「http://www.aaa.jp/~name/cgi-bin/bbb.html」となり、該当するファイルのURLが「http://www.aaa.jp/~name/bbb.html」だったとしたら、インデックス時に「対象ディレクトリのURL※2(必須)」で「http://www.aaa.jp/~name/」と指定してやります。 検索結果のURLが実際とズレる場合は、このURL指定が間違っているためです。ローカルサーバで作ったインデックスファイルも、「対象ディレクトリのURL※2(必須)」でアップするサーバのURLを指定してやればOKです。 まとめ。 1. 「対象ディレクトリ※1(必須)」で指定したディレクトリにブラウザでアクセスする場合、どんなURLにアクセスするか、を考えます。(列:ディレクトリ指定は「../」で、ここには「http://www.aaa.jp/~name/」というURLでアクセスできる) 2. そのURLを「対象ディレクトリのURL※2(必須)」に指定します。(列:「http://www.aaa.jp/~name/」を「対象ディレクトリのURL※2(必須)」に指定する) ●times関数が使えないと表示される msearch掲示板であった相談です。 「times not implemented at D:\_program\httpd108\public_html\cgi-bin\msearch142\msearch.cgi line 77.」のような表示がでてストップしてしまう場合は、お使いになっているperlに原因があります。 msearch.cgiはUNIX perl用に書かれています。ところが、Windows向けに書かれたperlでは、times関数をサポートしていないものがあります。例えば次のようなperlです。 ActivePerl:ビルド5xx 参照:http://www.harukaze.net/~mishima/perl/win/winperl.html Perl for Win32:Pw32i3xx.exe 参照:http://www.harukaze.net/~mishima/perl/faq/Evangelo/Perl_for_Win32_FAQ_5j.html 他にもあるかもしれません。お使いのperlの解説を参照してtimes()関数が使えるか確認してください。こういうtimes関数を使えないperlを使っている場合は、msearch1.4以降はエラーがでます。 対処法としては2通りあります。 1.times関数の使える別のperlに入れ替える。 2.msearchのtimes関数をつぶす。 ここでは2.のやり方を説明します。この改造で、検索時間の表示機能がなくなります。 行数はver1.42のものです。目安と思ってください。 msearch.cgiの改造(4箇所) ●77行目 オリジナル $v_cputime = (times)[0]; # かかった処理時間 ●変更後 $v_cputime = 0; # かかった処理時間 ●1106行目 オリジナル ### CPU時間の測定 ### sub getcputime { my $cpu_finish = (times)[0]; $v_cputime = $cpu_finish - $v_cputime; } ●変更後 ### CPU時間の測定 ### sub getcputime { my $cpu_finish = 0; $v_cputime = $cpu_finish - $v_cputime; } (ここまでの改造で検索時間の計算部分をつぶしているので、cgi自体は動くようになります。次に、無駄な表示部分を殺します。) ●1213行目 オリジナル(sub printpageの中) $f_page[$i] =~ s/\$\$cputime\$\$/$v_cputime/g; ●変更後(下記のようにコメントアウトするか、この行を削除する) #$f_page[$i] =~ s/\$\$cputime\$\$/$v_cputime/g; ●1252行目 オリジナル(sub printhelpの中) $f_help =~ s/\$\$cputime\$\$/$v_cputime/g; ●変更後(下記のようにコメントアウトするか、この行を削除する) #$f_help =~ s/\$\$cputime\$\$/$v_cputime/g; config.datの変更(2箇所) 検索時間の表示部分「検索にかかった時間$$cputime$$秒」という部分を削除します。残しておいてもいいですが、そのまんま「$$cputime$$秒」と表示されてしまいます。 実は、ActivePerlにしてもPerl for Win32にしてもtime関数は使えるようなので、最初はtimes関数をtime関数に入れ替えようと思ったのですが、これだと意味がないことに気がつきました。 timesがプロセス時間を計るのに対し、timeは現在時刻を返しますので、精度は秒単位までなんです。したがって検索スピードが1秒以下だと正しく計測できません。「検索にかかった時間:0秒」とか表示されちゃうはずです。っっって、msearchで1秒以上時間がかかるケースってまずないでしょ(^^; 意味ねーってわけです。 もしmsearchで1秒以上かかるなら、サーバ負荷からいって、もっと高速なエンジンに入れ替える必要があります(ローカルならこの限りではないでしょうが)。
よくあるトラブルの解決法を書きます。「msearch掲示板で過去にあった事例」も参考にしてください。
genindex.cgiにブラウザでアクセスし、「管理メニュー」画面の「インデックスを作る」で、空のインデックスファイルを作れるかどうか試してください。 管理メニューから空のインデックスファイルが作れない場合は、手動で作ってやります。手元で空っぽのindex.idxファイルを作ってからFTPでアップロードし(genindex.cgiと同じディレクトリに入れて、パーミッションを666にします)、もう一度インデックスしてください。
genindex.cgiにブラウザでアクセスし、「管理メニュー」画面の「インデックスを作る」で、空のインデックスファイルを作れるかどうか試してください。
管理メニューから空のインデックスファイルが作れない場合は、手動で作ってやります。手元で空っぽのindex.idxファイルを作ってからFTPでアップロードし(genindex.cgiと同じディレクトリに入れて、パーミッションを666にします)、もう一度インデックスしてください。
CGIには、最大使用メモリ、実行時間、最大同時実行数などさまざまな制限があります。これらの制限に引っかかるとCGIは強制的に終了させられます。 msearchのインデックス作成には大きなメモリが必要となりますし、時間もかかります。対象ファイル数が少ないとインデックスが作れる場合は、動作自体はしているわけです。ファイル数を多くしたとたんにインデックスできないとなると、CGIのプロセス制限にひっかかってしまったということです。 こうなるとサーバ上で一気にインデックスを作ることはできません。次のような対処法があります。 1. telnetが許されているなら、genindex.plを使ってサーバ上でインデックスを作る。 msearchの「インストール方法6番」の最後参照。telnetして手動でgenindex.plを起動し、質問に答える形でインデックスの作成ができます。 2. telnetが許可されていない場合は、次の2つの方法があります。 2-1 サーバ上でインデックスを小分けして作成し、手動で合体させる。 インデックスが作れる範囲で小分けしてインデックスを作ります(作ったらその都度FTPで手元にダウンロードし、名前を変えておく)。全部インデックスできたら、手元でテキストエディタでインデックスを開き、カット&ペーストでひとつのファイルにまとめます。できたインデックスをサーバにアップします。 msearchのFAQ4番のcを参照してください。 注意点としては、インデックスの際に「対象ディレクトリ」と「対象ディレクトリのURL」をきちんと対応させながらインデックスを作る、という点です。 例: 対象ディレクトリ:../aaa/ 対象ディレクトリのURL:http://abc.com/~name/aaa/ このように、ちゃんとURLのほうも「/aaa/」まで指定することを忘れずに。さもないと検索結果で間違ったURLにりんくしてしまいます。 2-2 手元のマシンでローカルサーバを立て、手元でインデックスを作成し、サーバにアップする。 msearchのFAQ4番のdを参照してください。 サーバの立て方は、windowsならあちこちに解説ページがありますのでgoogleなどで検索してみてください。MACならOS Xである必要があります(msearchの動作にはMAC perlではなくUNIX perlが必要なので)。「MAC OS X Darwin Tips」などを参照してください。 2-1と2-2では、2-2の方が圧倒的に楽です。一発でインデックスできますし。
CGIには、最大使用メモリ、実行時間、最大同時実行数などさまざまな制限があります。これらの制限に引っかかるとCGIは強制的に終了させられます。
msearchのインデックス作成には大きなメモリが必要となりますし、時間もかかります。対象ファイル数が少ないとインデックスが作れる場合は、動作自体はしているわけです。ファイル数を多くしたとたんにインデックスできないとなると、CGIのプロセス制限にひっかかってしまったということです。
こうなるとサーバ上で一気にインデックスを作ることはできません。次のような対処法があります。
1. telnetが許されているなら、genindex.plを使ってサーバ上でインデックスを作る。
msearchの「インストール方法6番」の最後参照。telnetして手動でgenindex.plを起動し、質問に答える形でインデックスの作成ができます。
2. telnetが許可されていない場合は、次の2つの方法があります。
2-1 サーバ上でインデックスを小分けして作成し、手動で合体させる。 インデックスが作れる範囲で小分けしてインデックスを作ります(作ったらその都度FTPで手元にダウンロードし、名前を変えておく)。全部インデックスできたら、手元でテキストエディタでインデックスを開き、カット&ペーストでひとつのファイルにまとめます。できたインデックスをサーバにアップします。 msearchのFAQ4番のcを参照してください。 注意点としては、インデックスの際に「対象ディレクトリ」と「対象ディレクトリのURL」をきちんと対応させながらインデックスを作る、という点です。 例: 対象ディレクトリ:../aaa/ 対象ディレクトリのURL:http://abc.com/~name/aaa/ このように、ちゃんとURLのほうも「/aaa/」まで指定することを忘れずに。さもないと検索結果で間違ったURLにりんくしてしまいます。 2-2 手元のマシンでローカルサーバを立て、手元でインデックスを作成し、サーバにアップする。 msearchのFAQ4番のdを参照してください。 サーバの立て方は、windowsならあちこちに解説ページがありますのでgoogleなどで検索してみてください。MACならOS Xである必要があります(msearchの動作にはMAC perlではなくUNIX perlが必要なので)。「MAC OS X Darwin Tips」などを参照してください。
2-1 サーバ上でインデックスを小分けして作成し、手動で合体させる。
インデックスが作れる範囲で小分けしてインデックスを作ります(作ったらその都度FTPで手元にダウンロードし、名前を変えておく)。全部インデックスできたら、手元でテキストエディタでインデックスを開き、カット&ペーストでひとつのファイルにまとめます。できたインデックスをサーバにアップします。
msearchのFAQ4番のcを参照してください。
注意点としては、インデックスの際に「対象ディレクトリ」と「対象ディレクトリのURL」をきちんと対応させながらインデックスを作る、という点です。 例: 対象ディレクトリ:../aaa/ 対象ディレクトリのURL:http://abc.com/~name/aaa/ このように、ちゃんとURLのほうも「/aaa/」まで指定することを忘れずに。さもないと検索結果で間違ったURLにりんくしてしまいます。
2-2 手元のマシンでローカルサーバを立て、手元でインデックスを作成し、サーバにアップする。
msearchのFAQ4番のdを参照してください。
サーバの立て方は、windowsならあちこちに解説ページがありますのでgoogleなどで検索してみてください。MACならOS Xである必要があります(msearchの動作にはMAC perlではなくUNIX perlが必要なので)。「MAC OS X Darwin Tips」などを参照してください。
2-1と2-2では、2-2の方が圧倒的に楽です。一発でインデックスできますし。
検索フォームをSJISで記述していると思います。EUCでフォームを書くと文字化けしません。1.4xではこのトラブルはまずでないはずです。
フォームをちょっと変更するだけです。「<form action="http://......." .... target="frameName">」とするだけです。「frameName」は表示させたいフレームの名前を指定します。 フレームには対応する名前(<FRAME src="fileName" name="frameName">)を指定しておきます。 targetタグはframeタグのnameオプションで指定された名前で目的のフレームを探します。したがって、2つ以上のフレームに同じnameが指定してあると、誤動作します。フレームの名前はダブっていてはいけません。
フォームをちょっと変更するだけです。「<form action="http://......." .... target="frameName">」とするだけです。「frameName」は表示させたいフレームの名前を指定します。
フレームには対応する名前(<FRAME src="fileName" name="frameName">)を指定しておきます。
targetタグはframeタグのnameオプションで指定された名前で目的のフレームを探します。したがって、2つ以上のフレームに同じnameが指定してあると、誤動作します。フレームの名前はダブっていてはいけません。
「対象ディレクトリのURL※2(必須)」は検索結果のURLと実際のURLのズレを吸収する役目を持っています。 CGIをどのディレクトリにでもおける場合はそれほど問題にならないと思いますが、cgi-binなど特定のディレクトリにCGIをおく必要がある場合は、検索結果画面でリンクされるURLと実際のURLがずれます。 例えば、検索結果でリンクされるURLが「http://www.aaa.jp/~name/cgi-bin/bbb.html」となり、該当するファイルのURLが「http://www.aaa.jp/~name/bbb.html」だったとしたら、インデックス時に「対象ディレクトリのURL※2(必須)」で「http://www.aaa.jp/~name/」と指定してやります。 検索結果のURLが実際とズレる場合は、このURL指定が間違っているためです。ローカルサーバで作ったインデックスファイルも、「対象ディレクトリのURL※2(必須)」でアップするサーバのURLを指定してやればOKです。 まとめ。 1. 「対象ディレクトリ※1(必須)」で指定したディレクトリにブラウザでアクセスする場合、どんなURLにアクセスするか、を考えます。(列:ディレクトリ指定は「../」で、ここには「http://www.aaa.jp/~name/」というURLでアクセスできる) 2. そのURLを「対象ディレクトリのURL※2(必須)」に指定します。(列:「http://www.aaa.jp/~name/」を「対象ディレクトリのURL※2(必須)」に指定する)
「対象ディレクトリのURL※2(必須)」は検索結果のURLと実際のURLのズレを吸収する役目を持っています。
CGIをどのディレクトリにでもおける場合はそれほど問題にならないと思いますが、cgi-binなど特定のディレクトリにCGIをおく必要がある場合は、検索結果画面でリンクされるURLと実際のURLがずれます。
例えば、検索結果でリンクされるURLが「http://www.aaa.jp/~name/cgi-bin/bbb.html」となり、該当するファイルのURLが「http://www.aaa.jp/~name/bbb.html」だったとしたら、インデックス時に「対象ディレクトリのURL※2(必須)」で「http://www.aaa.jp/~name/」と指定してやります。
検索結果のURLが実際とズレる場合は、このURL指定が間違っているためです。ローカルサーバで作ったインデックスファイルも、「対象ディレクトリのURL※2(必須)」でアップするサーバのURLを指定してやればOKです。
まとめ。
1. 「対象ディレクトリ※1(必須)」で指定したディレクトリにブラウザでアクセスする場合、どんなURLにアクセスするか、を考えます。(列:ディレクトリ指定は「../」で、ここには「http://www.aaa.jp/~name/」というURLでアクセスできる)
2. そのURLを「対象ディレクトリのURL※2(必須)」に指定します。(列:「http://www.aaa.jp/~name/」を「対象ディレクトリのURL※2(必須)」に指定する)
msearch掲示板であった相談です。 「times not implemented at D:\_program\httpd108\public_html\cgi-bin\msearch142\msearch.cgi line 77.」のような表示がでてストップしてしまう場合は、お使いになっているperlに原因があります。 msearch.cgiはUNIX perl用に書かれています。ところが、Windows向けに書かれたperlでは、times関数をサポートしていないものがあります。例えば次のようなperlです。 ActivePerl:ビルド5xx 参照:http://www.harukaze.net/~mishima/perl/win/winperl.html Perl for Win32:Pw32i3xx.exe 参照:http://www.harukaze.net/~mishima/perl/faq/Evangelo/Perl_for_Win32_FAQ_5j.html 他にもあるかもしれません。お使いのperlの解説を参照してtimes()関数が使えるか確認してください。こういうtimes関数を使えないperlを使っている場合は、msearch1.4以降はエラーがでます。 対処法としては2通りあります。 1.times関数の使える別のperlに入れ替える。 2.msearchのtimes関数をつぶす。 ここでは2.のやり方を説明します。この改造で、検索時間の表示機能がなくなります。 行数はver1.42のものです。目安と思ってください。 msearch.cgiの改造(4箇所) ●77行目 オリジナル $v_cputime = (times)[0]; # かかった処理時間 ●変更後 $v_cputime = 0; # かかった処理時間 ●1106行目 オリジナル ### CPU時間の測定 ### sub getcputime { my $cpu_finish = (times)[0]; $v_cputime = $cpu_finish - $v_cputime; } ●変更後 ### CPU時間の測定 ### sub getcputime { my $cpu_finish = 0; $v_cputime = $cpu_finish - $v_cputime; } (ここまでの改造で検索時間の計算部分をつぶしているので、cgi自体は動くようになります。次に、無駄な表示部分を殺します。) ●1213行目 オリジナル(sub printpageの中) $f_page[$i] =~ s/\$\$cputime\$\$/$v_cputime/g; ●変更後(下記のようにコメントアウトするか、この行を削除する) #$f_page[$i] =~ s/\$\$cputime\$\$/$v_cputime/g; ●1252行目 オリジナル(sub printhelpの中) $f_help =~ s/\$\$cputime\$\$/$v_cputime/g; ●変更後(下記のようにコメントアウトするか、この行を削除する) #$f_help =~ s/\$\$cputime\$\$/$v_cputime/g; config.datの変更(2箇所) 検索時間の表示部分「検索にかかった時間$$cputime$$秒」という部分を削除します。残しておいてもいいですが、そのまんま「$$cputime$$秒」と表示されてしまいます。 実は、ActivePerlにしてもPerl for Win32にしてもtime関数は使えるようなので、最初はtimes関数をtime関数に入れ替えようと思ったのですが、これだと意味がないことに気がつきました。 timesがプロセス時間を計るのに対し、timeは現在時刻を返しますので、精度は秒単位までなんです。したがって検索スピードが1秒以下だと正しく計測できません。「検索にかかった時間:0秒」とか表示されちゃうはずです。っっって、msearchで1秒以上時間がかかるケースってまずないでしょ(^^; 意味ねーってわけです。 もしmsearchで1秒以上かかるなら、サーバ負荷からいって、もっと高速なエンジンに入れ替える必要があります(ローカルならこの限りではないでしょうが)。
msearch掲示板であった相談です。
「times not implemented at D:\_program\httpd108\public_html\cgi-bin\msearch142\msearch.cgi line 77.」のような表示がでてストップしてしまう場合は、お使いになっているperlに原因があります。
msearch.cgiはUNIX perl用に書かれています。ところが、Windows向けに書かれたperlでは、times関数をサポートしていないものがあります。例えば次のようなperlです。
ActivePerl:ビルド5xx 参照:http://www.harukaze.net/~mishima/perl/win/winperl.html
Perl for Win32:Pw32i3xx.exe 参照:http://www.harukaze.net/~mishima/perl/faq/Evangelo/Perl_for_Win32_FAQ_5j.html
他にもあるかもしれません。お使いのperlの解説を参照してtimes()関数が使えるか確認してください。こういうtimes関数を使えないperlを使っている場合は、msearch1.4以降はエラーがでます。 対処法としては2通りあります。
1.times関数の使える別のperlに入れ替える。 2.msearchのtimes関数をつぶす。
ここでは2.のやり方を説明します。この改造で、検索時間の表示機能がなくなります。
行数はver1.42のものです。目安と思ってください。
msearch.cgiの改造(4箇所)
●77行目 オリジナル $v_cputime = (times)[0]; # かかった処理時間
●変更後 $v_cputime = 0; # かかった処理時間
●1106行目 オリジナル ### CPU時間の測定 ### sub getcputime { my $cpu_finish = (times)[0]; $v_cputime = $cpu_finish - $v_cputime; }
●変更後 ### CPU時間の測定 ### sub getcputime { my $cpu_finish = 0; $v_cputime = $cpu_finish - $v_cputime; }
(ここまでの改造で検索時間の計算部分をつぶしているので、cgi自体は動くようになります。次に、無駄な表示部分を殺します。)
●1213行目 オリジナル(sub printpageの中) $f_page[$i] =~ s/\$\$cputime\$\$/$v_cputime/g;
●変更後(下記のようにコメントアウトするか、この行を削除する)
#$f_page[$i] =~ s/\$\$cputime\$\$/$v_cputime/g;
●1252行目 オリジナル(sub printhelpの中) $f_help =~ s/\$\$cputime\$\$/$v_cputime/g;
#$f_help =~ s/\$\$cputime\$\$/$v_cputime/g;
config.datの変更(2箇所)
検索時間の表示部分「検索にかかった時間$$cputime$$秒」という部分を削除します。残しておいてもいいですが、そのまんま「$$cputime$$秒」と表示されてしまいます。
実は、ActivePerlにしてもPerl for Win32にしてもtime関数は使えるようなので、最初はtimes関数をtime関数に入れ替えようと思ったのですが、これだと意味がないことに気がつきました。
timesがプロセス時間を計るのに対し、timeは現在時刻を返しますので、精度は秒単位までなんです。したがって検索スピードが1秒以下だと正しく計測できません。「検索にかかった時間:0秒」とか表示されちゃうはずです。っっって、msearchで1秒以上時間がかかるケースってまずないでしょ(^^; 意味ねーってわけです。
もしmsearchで1秒以上かかるなら、サーバ負荷からいって、もっと高速なエンジンに入れ替える必要があります(ローカルならこの限りではないでしょうが)。
●ver.1.4からは「config.dat」(スキン)を変更するだけで機能の設定、画面デザインの変更などが手軽に行えるようになりました。 スキンの配布:検索結果画面、ヘルプ画面は参考のためで、実際の検索はできません。本家msearchページでもスキンを配布していますので参照してください。 以下のスキンは1.43以降用です。1.4〜1.42では「urldeco」変数をサポートしていないため、動作はしますがurlの表示をしませんのでご注意。 また、1.45をベースにしているため、1.46に用いる場合は$logencoding、$date_format、$encodingがそれぞれデフォルトになってしまいます。これらは1.46で追加されたものです。必要に応じてこの部分を(1.46のconfig.datを参考に)追加してください。 なお、ここで配布しているスキンについてのご質問などは、「マニュアルに書いてない掲示板」へお願いします。 名前 検索結果画面 ヘルプ画面 コメント タイプ1 type01.htm type01_2.htm 「configset.lzh」をクリックするとダウンロードできます。ページあたり表示件数を指定できたり、簡単検索を実装したりしています。デザインはgooとgoogleを足して2で割ったような(^^; また、別窓表示用のアイコンなどの画像も含まれていますが、画像はすべてオリジナルです。ご自由にお使いください。 ver.1.4ではスキンの変更だけで簡単検索機能を実装できます。ログを観察して、ユーザーがうまく検索できていないと思ったら導入してみてください。 タイプ2 type02.htm type02_2.htm 検索結果1つ1つをテーブルタグで囲ったタイプ。地色を変更することで簡単に雰囲気を変えられます。 「config.dat」をクリックして、でてきたテキストを「config.dat」という名前で保存してください。EUC/LFにするのを忘れないでね。 タイプ3 type03.htm type02_2.htm タイプ3はシンプルな画面です。シンプルすぎて寂しい感じさえします(^_^) 「config.dat」をクリックして、でてきたテキストを「config.dat」という名前で保存してください。EUC/LFにするのを忘れないでね。 タイプ4 type04.html type04_2.htm オリジナルキャラクターmsearch君がいるにぎやか版です。 msearch君や検索アイコン、ホーム、ヘルプアイコンなどはドラッグ&ドロップしてダウンしてください。 「spacer.gif」は1×1ピクセルの透明なgifファイルですので自作してください。 「charecter.ai」をクリックするとAdobe Illustratorのキャラクターデザインファイルもダウンできます。これらの画像はご自由にお使いください。 「config.dat」をクリックして、でてきたテキストを「config.dat」という名前で保存してください。EUC/LFにするのを忘れないでね。 タイプ5 type05.htm type05_2.htm MAC OS XのAQUAインターフェースライクなデザインです。 「image.lzh」または「image.zip」(中身は同じものです)をクリックすると使用している画像がダウンできます。これらの画像はご自由にお使いください。 「config.dat」をクリックして、でてきたテキストを「config.dat」という名前で保存してください。EUC/LFにするのを忘れないでね。 タイプ6 type06.htm type06_2.htm タイプ5の自分用。MAC OS XのAQUAインターフェースライクなデザインです。簡単検索機能付き。 「config.dat」をクリックして、でてきたテキストを「config.dat」という名前で保存してください。EUC/LFにするのを忘れないでね。 2002/9/9 ブラウザによっては検索結果が乱れることがあるのでちょっと修正。 タイプ7 type07.htm type07_2.htm ソルトレイクオリンピック期間中ということで、日本デザイン。使う人、いるかな〜(^^; 「config.dat」をクリックして、でてきたテキストを「config.dat」という名前で保存してください。EUC/LFにするのを忘れないでね。 ●英語スキン 名前 検索結果画面 ヘルプ画面 コメント english skin search.htm 検索対象ページが日本語なのでナンですが、英語ページならちゃんと英語で表示されます。あたりまえか(^^; help.htm このスキンははたのさん(Dissipation of Hawking,TOP←このページで同じスキンを配布しています)の制作です。英語表記についてまっとさんの助言を受けて制作されました。ご厚意でこのページでも配布させていただいています。はたのさん、ありがとうございました。 「config.dat」をクリックして、でてきたテキストを「config.dat」という名前で保存してください。EUC/LFにするのを忘れないでね。 なお、検索結果画面については問題ありませんが、ヘルプ画面で表示される「インデックスの最終更新日時」、「現在日時」の表記が日本語のままです。 これを修正するには、msearch.cgiに手を入れる必要があります。次の2箇所を変更します。(行数は1.44の場合) ・1126行目 return("$year年$mon月$d日$h時$m分$s秒"); ・1139行目 return("$year年$mon月$d日$h時$m分$s秒"); 上記の年月日時分秒部分を英語表記に書き換えます。 変更後 return("$mon/$d/$year $h:$m:$s"); ↑月/日/年 時:分:秒という並びになるはずです。 ●スキンデザインの方法 「config.dat」のうち、検索結果画面、ヘルプ画面の「<html>」から「</html>」までをそれぞれコピーして保存します。これをHTMLエディタで開いて画面をデザインします。できあがったらHTMLを「config.dat」に書き戻してやります。「#」で始まるコメントは、じゃまならとってしまって良いでしょう。 ●ちょっとだけ「config.dat」の書き換えについて解説します。詳しい内容は本家解説ページに説明がありますのでご一読ください。 config.datは必ず漢字コードEUC、改行コードLFにしてください。漢字コードがsjisだと文字が化けますし、改行コードが違っているとエラーがでます。 1.変数の設定 このあたりは見てもらえればわかると思いますのでさわりだけ。 ここに記述されている変数はcgi本体にも書かれています。これがデフォルト値です。デフォルト値から変数を変更したい場合、cgi本体をいじらずに、config.datに書かれている変数を有効にして値を書き換えればよい仕組みになっています。 基本的に行頭に#があると、その行はコメントとして無視されます。変数も行頭に#が付けられていて、最初はcgi本体内のデフォルト値を使うようになっています。変数を有効にするには、変数行の行頭の「#」を削除します。間違って説明行の「#」まで削除しないでね。バッチリエラーがでます。 説明行があって、次に変数行があるという構成になっていますから、どれが変数行かはすぐにわかると思います。 変数は「set命令 $変数名 = 変数の値」というふうに記述されていますので、変数の値だけを書き換えます。間違って変数名まで書き換えると役に立ちません。 ・検索結果のハイライトを<b>タグから赤い文字に変更する # マッチキーワードのハイライトの書式(デフォルト=<b>) ←説明行。「#」は削除しちゃダメ #set $highlight_deco=<font color=red> ←変数行。ブルーの部分が変数の値。 という部分の「#」を削除して # マッチキーワードのハイライトの書式(デフォルト=<b>) set $highlight_deco=<font color=red> にします。もちろん「<font color=red>」を変えれば他の色にも変更できます。 ・検索ログを出力したい。 # ログを出力するか(デフォルト=0(しない)) ←説明行。「#」は削除しちゃダメ #set $log=1 ←変数行 という部分の「#」を削除して # ログを出力するか(デフォルト=0(しない)) set $log=1 にします。デフォルトでは「」というファイルに出力されますが、ログファイルの名前を変更したい場合は次の行も変更してやります。 # ログファイルのファイル名(デフォルト=msearch.log) set $logfile=new.log ←行頭の「#」を取って、好きな名前にする。 2.検索結果画面,ヘルプ画面(初期画面)のフォーマット いよいよ画面デザインの変更部分です。デフォルトのまま使う人が多いようですが、せっかく手軽に変更できるようになったので、ぜひ自分らしいデザインに変更して使いましょう。 画面のデザインはHTMLで記述します。お手持ちのHTMLエディタで変更可能です。ただ、中には埋め込み変数を書き換えてしまうようなお節介なHTMLエディタがあるかもしれませんので、その点は注意してください。 HTMLエディタで画面をデザインし、できあがったHTMLファイルをテキストエディタで開き、埋め込み変数を入れていくと効率的に作業ができると思います。 msearch.cgiは、ここで記述されたHTMLにしたがって検索画面・初期画面を出力します。このとき、例えば検索結果を出力したいところに「$$result$$」と書いておくと、msearchはこの部分に検索結果を出力してくれます。これが埋め込み変数です。 2-1. 埋め込み変数の説明です。埋め込み変数について解説していますので必ずご一読ください。 2-2. 検索結果画面のフォーマット ここでは検索結果画面のデザインをHTMLで記述します。画面をデザインして埋め込み変数を後ではめ込んでいくという方法でも、デフォルトデザインを元に変更するという方法でも好きなように変更してください。 理解の助けになるように解説してみます。検索結果画面のデザインは必ず「begin page」で始まり、「end」で終わる必要があります。 begin page ←これは変更してはいけません。ここからスキンが始まるという合図。 <html> ←書き換えはこの行から <head> # ↓の2行は変更しない方が無難 <meta http-equiv="Content-Type" content="text/html;charset=euc-jp"> ←msearchはeucでhtml文を吐き出しますので、charset=SHIFT_JISなどとすると文字化けします。 <meta http-equiv="Content-Language" content="jp"> <title>検索結果 powered by msearch</title> </head> <body bgcolor=white> <center> # ↓euc-jpは変更しないこと <form action="$$msearch$$" accept-charset="euc-jp"> ←msearch.cgiの名前が入ります <table border=0 cellspacing=0 cellpadding=3> <tr> <td align=left><font size=-1> <a href="$$home$$">ホーム</a> ←config.datの変数部で指定したホームページのURLが入ります。 <a href="$$msearch$$">ヘルプ</a></font> ←msearch.cgiの名前が入ります <td align=right><font size=-1 color=#3366cc> Powered by msearch</font> </tr> <tr> <td colspan=2 align=center><font size=-1> <b>HP内検索</b> <input type=text size=30 name="query" value="$$query$$"> ←前の検索キーワードが入ります <input type=submit value="検索"></font> </tr> </table> <input type=hidden name="set" value="1"> <input type=hidden name="num" value="$$rpp$$"> ←ページあたりに表示する件数が入ります </form> <table border=0 cellspacing=0 width=98% style="margin-bottom:1ex"> <tr> <td bgcolor=#3366cc align=left> <font size=-1 color=white> $$total$$件ヒットしました. ←ヒットした件数が入ります $$from$$件目から$$to$$件目を表示します.</font> ←何件目から何件目の結果を表示しているか数字が入ります <td bgcolor=#3366cc align=right> <font size=-1 color=white>検索にかかった時間$$cputime$$秒 </font> ←検索にかかった時間が入ります </tr> </table> # 検索セットへのアクセスは上と下に同じものを付けています $$previous$$ ←[前へ]という直前ページへのリンクが入ります $$pset$$ ←[1][2]など現在表示している結果ページより前のページへのリンクが入ります $$cset$$ ←[3]など現在表示しているページ番号が入ります $$nset$$ ←[4][5]など現在表示している結果ページより後のページへのリンクが入ります $$next$$ ←[次へ]という直後ページへのリンクが入ります </center> <p> <dl> # ↓ここに検索結果の各項目が繰り返されて表示される $$result$$ ←検索結果が入ります </dl> <center> # 検索セットへのアクセスは上と下に同じものを付けています $$previous$$ このあたりは上と同じです。 $$pset$$ $$cset$$ $$nset$$ $$next$$ </center> </body> </html> ←書き換えはこの行まで end ←これは変更してはいけません。スキンはここまでという合図。 埋め込み変数は必ずすべて使わなくてはならないということはありません。formの中に埋め込む変数と、$$result$$、前後ページへのリンクがあれば最低限の用は足りてしまいます。 2-3. 検索結果画面の項目の設定とフォーマット 検索結果画面の中に埋め込む変数のうち、いくつかの変数はここで変更することができます。「# ●ヒット項目の表示」を例にしてみます。 begin result 10 ←この行を削除してはいけません。「10」を20に変更すると、ページあたり20件表示するようになります。 <dt>$$resultnum$$. <a href="$$url$$">$$title$$</a> ←何番目の結果か、URL、タイトルが入ります <dd><font size=-1 color=#999999>$$url$$</font><br> ←ファイル名表示がいらなければこの行を削除します <font size=-1>$$summary$$</font> ←ヒットした部分が入ります <p> end ←この行を削除してはいけません ちょっと手を入れてみましょう。cgiと同じディレクトリに「image」ディレクトリがあり、その中に「mark1.gif」が入っているとします。赤字が変更個所です。太字はワンポイント解説です。 begin result 20 ←1ページあたり20行表示するようにしてみました <dt>$$resultnum$$. <a href="$$url$$" target="_blank"><img src="image/mark1.gif" WIDTH="12" HEIGHT="12" ALIGN="BOTTOM" BORDER="0"></a><a href="$$url$$">$$title$$</a> ←別窓で開くようにアイコンを付けてみました <dd><font size=-1 color=#999999>$$url$$</font><br> <font size=-1>$$summary$$</font> <p> end ←この行を削除してはいけません このように、埋め込み変数のデザインも変更が可能です。 2-4. ヘルプ画面のフォーマット こちらはヘルプ画面(初期画面)のデザインです。「2-2. 検索結果画面のフォーマット」と同様、HTMLの中に埋め込み変数が入っています。
スキンの配布:検索結果画面、ヘルプ画面は参考のためで、実際の検索はできません。本家msearchページでもスキンを配布していますので参照してください。
以下のスキンは1.43以降用です。1.4〜1.42では「urldeco」変数をサポートしていないため、動作はしますがurlの表示をしませんのでご注意。
また、1.45をベースにしているため、1.46に用いる場合は$logencoding、$date_format、$encodingがそれぞれデフォルトになってしまいます。これらは1.46で追加されたものです。必要に応じてこの部分を(1.46のconfig.datを参考に)追加してください。
なお、ここで配布しているスキンについてのご質問などは、「マニュアルに書いてない掲示板」へお願いします。
「configset.lzh」をクリックするとダウンロードできます。ページあたり表示件数を指定できたり、簡単検索を実装したりしています。デザインはgooとgoogleを足して2で割ったような(^^;
また、別窓表示用のアイコンなどの画像も含まれていますが、画像はすべてオリジナルです。ご自由にお使いください。
ver.1.4ではスキンの変更だけで簡単検索機能を実装できます。ログを観察して、ユーザーがうまく検索できていないと思ったら導入してみてください。
オリジナルキャラクターmsearch君がいるにぎやか版です。 msearch君や検索アイコン、ホーム、ヘルプアイコンなどはドラッグ&ドロップしてダウンしてください。 「spacer.gif」は1×1ピクセルの透明なgifファイルですので自作してください。
「charecter.ai」をクリックするとAdobe Illustratorのキャラクターデザインファイルもダウンできます。これらの画像はご自由にお使いください。
「config.dat」をクリックして、でてきたテキストを「config.dat」という名前で保存してください。EUC/LFにするのを忘れないでね。
MAC OS XのAQUAインターフェースライクなデザインです。
「image.lzh」または「image.zip」(中身は同じものです)をクリックすると使用している画像がダウンできます。これらの画像はご自由にお使いください。
タイプ5の自分用。MAC OS XのAQUAインターフェースライクなデザインです。簡単検索機能付き。
2002/9/9 ブラウザによっては検索結果が乱れることがあるのでちょっと修正。
ソルトレイクオリンピック期間中ということで、日本デザイン。使う人、いるかな〜(^^;
search.htm 検索対象ページが日本語なのでナンですが、英語ページならちゃんと英語で表示されます。あたりまえか(^^;
このスキンははたのさん(Dissipation of Hawking,TOP←このページで同じスキンを配布しています)の制作です。英語表記についてまっとさんの助言を受けて制作されました。ご厚意でこのページでも配布させていただいています。はたのさん、ありがとうございました。
なお、検索結果画面については問題ありませんが、ヘルプ画面で表示される「インデックスの最終更新日時」、「現在日時」の表記が日本語のままです。 これを修正するには、msearch.cgiに手を入れる必要があります。次の2箇所を変更します。(行数は1.44の場合)
・1126行目 return("$year年$mon月$d日$h時$m分$s秒");
・1139行目 return("$year年$mon月$d日$h時$m分$s秒");
上記の年月日時分秒部分を英語表記に書き換えます。
変更後 return("$mon/$d/$year $h:$m:$s"); ↑月/日/年 時:分:秒という並びになるはずです。
「config.dat」のうち、検索結果画面、ヘルプ画面の「<html>」から「</html>」までをそれぞれコピーして保存します。これをHTMLエディタで開いて画面をデザインします。できあがったらHTMLを「config.dat」に書き戻してやります。「#」で始まるコメントは、じゃまならとってしまって良いでしょう。
config.datは必ず漢字コードEUC、改行コードLFにしてください。漢字コードがsjisだと文字が化けますし、改行コードが違っているとエラーがでます。
このあたりは見てもらえればわかると思いますのでさわりだけ。
ここに記述されている変数はcgi本体にも書かれています。これがデフォルト値です。デフォルト値から変数を変更したい場合、cgi本体をいじらずに、config.datに書かれている変数を有効にして値を書き換えればよい仕組みになっています。
基本的に行頭に#があると、その行はコメントとして無視されます。変数も行頭に#が付けられていて、最初はcgi本体内のデフォルト値を使うようになっています。変数を有効にするには、変数行の行頭の「#」を削除します。間違って説明行の「#」まで削除しないでね。バッチリエラーがでます。
説明行があって、次に変数行があるという構成になっていますから、どれが変数行かはすぐにわかると思います。 変数は「set命令 $変数名 = 変数の値」というふうに記述されていますので、変数の値だけを書き換えます。間違って変数名まで書き換えると役に立ちません。
・検索結果のハイライトを<b>タグから赤い文字に変更する
# マッチキーワードのハイライトの書式(デフォルト=<b>) ←説明行。「#」は削除しちゃダメ #set $highlight_deco=<font color=red> ←変数行。ブルーの部分が変数の値。 という部分の「#」を削除して # マッチキーワードのハイライトの書式(デフォルト=<b>) set $highlight_deco=<font color=red> にします。もちろん「<font color=red>」を変えれば他の色にも変更できます。
# マッチキーワードのハイライトの書式(デフォルト=<b>) ←説明行。「#」は削除しちゃダメ #set $highlight_deco=<font color=red> ←変数行。ブルーの部分が変数の値。
という部分の「#」を削除して
# マッチキーワードのハイライトの書式(デフォルト=<b>) set $highlight_deco=<font color=red>
にします。もちろん「<font color=red>」を変えれば他の色にも変更できます。
・検索ログを出力したい。
# ログを出力するか(デフォルト=0(しない)) ←説明行。「#」は削除しちゃダメ #set $log=1 ←変数行 という部分の「#」を削除して # ログを出力するか(デフォルト=0(しない)) set $log=1 にします。デフォルトでは「」というファイルに出力されますが、ログファイルの名前を変更したい場合は次の行も変更してやります。 # ログファイルのファイル名(デフォルト=msearch.log) set $logfile=new.log ←行頭の「#」を取って、好きな名前にする。
# ログを出力するか(デフォルト=0(しない)) ←説明行。「#」は削除しちゃダメ #set $log=1 ←変数行
# ログを出力するか(デフォルト=0(しない)) set $log=1
にします。デフォルトでは「」というファイルに出力されますが、ログファイルの名前を変更したい場合は次の行も変更してやります。
# ログファイルのファイル名(デフォルト=msearch.log) set $logfile=new.log ←行頭の「#」を取って、好きな名前にする。
いよいよ画面デザインの変更部分です。デフォルトのまま使う人が多いようですが、せっかく手軽に変更できるようになったので、ぜひ自分らしいデザインに変更して使いましょう。
画面のデザインはHTMLで記述します。お手持ちのHTMLエディタで変更可能です。ただ、中には埋め込み変数を書き換えてしまうようなお節介なHTMLエディタがあるかもしれませんので、その点は注意してください。
HTMLエディタで画面をデザインし、できあがったHTMLファイルをテキストエディタで開き、埋め込み変数を入れていくと効率的に作業ができると思います。
msearch.cgiは、ここで記述されたHTMLにしたがって検索画面・初期画面を出力します。このとき、例えば検索結果を出力したいところに「$$result$$」と書いておくと、msearchはこの部分に検索結果を出力してくれます。これが埋め込み変数です。
ここでは検索結果画面のデザインをHTMLで記述します。画面をデザインして埋め込み変数を後ではめ込んでいくという方法でも、デフォルトデザインを元に変更するという方法でも好きなように変更してください。
理解の助けになるように解説してみます。検索結果画面のデザインは必ず「begin page」で始まり、「end」で終わる必要があります。
埋め込み変数は必ずすべて使わなくてはならないということはありません。formの中に埋め込む変数と、$$result$$、前後ページへのリンクがあれば最低限の用は足りてしまいます。
検索結果画面の中に埋め込む変数のうち、いくつかの変数はここで変更することができます。「# ●ヒット項目の表示」を例にしてみます。
ちょっと手を入れてみましょう。cgiと同じディレクトリに「image」ディレクトリがあり、その中に「mark1.gif」が入っているとします。赤字が変更個所です。太字はワンポイント解説です。
このように、埋め込み変数のデザインも変更が可能です。
こちらはヘルプ画面(初期画面)のデザインです。「2-2. 検索結果画面のフォーマット」と同様、HTMLの中に埋め込み変数が入っています。
ver1.3まではログの出力をしませんでしたが、1.4からは設定の変更だけでログを出力するようになりました。大変嬉しいです(^_^) ここでは「ログって何?」という方のために利用法を書きます。 ログを見ると次のようなことがわかります。 1日あたり何件くらいの検索があるのか。 検索された件数を日付ごとに集計すればすぐに判ります。利用頻度の目安になります。 時間帯で集計すると、何時頃がピークとなるのかもわかります。 ちゃんと必要なページにたどり着けているのか。 これが達成できていないと検索CGIの意味がありません。何件ヒットしたのかを見るとだいたい見当がつくでしょう。 正しく検索されているのか。 よく綴り違いで検索されたりしています。「bessa」というカメラを延々「vessa」で検索(どちらもベッサと読める)してヒットしない人とか(^_^) 僕の場合、このように目的のページにたどり着けない人向けに検索FAQページを作りました。たどり着けないパターンとしては次のようなものがあったので、検索FAQで注意を促しています。 「綴りが違う」 「長い単語で検索している(京セラTプルーフ → 京セラ Tプルーフ に分割するとヒットする)」 「見当違いの内容を検索している(コンパクトカメラのデータしかないのになぜかデジカメを検索したり)」 また、できるだけ検索をしやすく、たどり着きやすくするために、キーワードの一部をメニューから選択できる「簡単検索」機能を付けるアイディアもログを見ていて思いつきました。 検索単語を分解・集計すると、どんな単語で検索されているのかもわかります。 検索機能は、ユーザーが必要なページに簡単にたどり着つけることを目的に設置するものだと思います。ちゃんとたどり着けているのか、確認するのがログといえます。 もし「ヒット件数0」という結果が多いようなら、目的のページにたどり着けていないということですから、何らかの対策を施すべきです。でないとせっかくの検索機能が宝の持ち腐れになります。ログを大いに活用しましょう。
ver1.3まではログの出力をしませんでしたが、1.4からは設定の変更だけでログを出力するようになりました。大変嬉しいです(^_^)
ここでは「ログって何?」という方のために利用法を書きます。
ログを見ると次のようなことがわかります。
検索機能は、ユーザーが必要なページに簡単にたどり着つけることを目的に設置するものだと思います。ちゃんとたどり着けているのか、確認するのがログといえます。 もし「ヒット件数0」という結果が多いようなら、目的のページにたどり着けていないということですから、何らかの対策を施すべきです。でないとせっかくの検索機能が宝の持ち腐れになります。ログを大いに活用しましょう。
●以下、ver.1.4の僕の改造例を示します。赤字で示した部分が追加・書き換えなどの部分です。つーかですね、以下はぼくの改造記録で、備忘録のようなものです。改造を施す場合は、オウンリスクでお願いします。 また、この改造について、作者のKatsushi Matsudaさんに問い合わせするなど、ご迷惑のかかることはくれぐれもしないようにお願いします。 下からコピー&ペーストするときは改行コードに注意してください。cgiの改行コードは必ずLFに統一してくださいね。 ver.1.3xの改造例を見たい場合は、このページのトップにある1.3の解説ページを見てください。 ログ出力のフォーマットを変更したい。 EXELなどで集計処理などを行う場合、1検索1行にデータがまとまっていた方が楽です。また、ソートしやすいように日付の出力形式も変更してあります。赤字は追加・変更部分、青字は解説で必要ありません。 ver.1.46 ●オリジナルのログ(1件あたり3行で出力されます) 2002年1月22日11時9分46秒 hostname(127.0.0.1) Mozilla/4.79 (Macintosh; U; PPC) 5件 t:シー・アンド・シー ・CGIのオリジナル(1526行目) # ログの書き出し $str = "$v_nowdate $remote\n $ua\n $v_total件 $v_query\n"; if($f_logencoding eq "shift_jis") { &jcode::convert(\$str,"sjis"); } elsif($f_logencoding eq "iso-2022-jp") { &jcode::convert(\$str,"jis"); } print LF "$str"; ●改造後のログ(タブ区切りで1行になります。また、日時の形式が異なります) 2002/01/22 12:00:34 hostname(127.0.0.1) Mozilla/4.79 (Macintosh; U; PPC) 24件 現行品 t:ペンタックス 135フィルム ・CGIの変更部 # ログの書き出し (my $v_nowtime) = getnowtime(); # 日付取得 # $str = "$v_nowdate $remote\n $ua\n $v_total件 $v_query\n"; ←行頭に#をつけてオリジナルをつぶす $str = "$v_nowtime\t$remote\t $ua\t $v_total件\t$v_query\n"; ←必要のない変数は省いてください。下記※参照 if($f_logencoding eq "shift_jis") { &jcode::convert(\$str,"sjis"); } elsif($f_logencoding eq "iso-2022-jp") { &jcode::convert(\$str,"jis"); } print LF "$str"; ※変数の意味は次の通りです。 $v_nowtime 日時。オリジナルと同じでよければ$v_nowdateとします。次の追加ルーチン(ログ用日時生成)も必要ありません。 $remote ホスト名 $ua ブラウザの種類 $v_total ヒット件数 $v_query 検索キーワード ・CGIに追加するルーチン。一番最後にでも追加すると良いでしょう。 # ログ用日時生成・水沢追加 sub getnowtime { my ($s, $m, $h, $d, $mon, $year); ($s,$m,$h,$d,$mon,$year) = localtime(time + $f_tzdiff * 3600); $year += 1900; $mon += 1; return(sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year, $mon , $d, $h, $m, $s,)); }
●以下、ver.1.4の僕の改造例を示します。赤字で示した部分が追加・書き換えなどの部分です。つーかですね、以下はぼくの改造記録で、備忘録のようなものです。改造を施す場合は、オウンリスクでお願いします。 また、この改造について、作者のKatsushi Matsudaさんに問い合わせするなど、ご迷惑のかかることはくれぐれもしないようにお願いします。
下からコピー&ペーストするときは改行コードに注意してください。cgiの改行コードは必ずLFに統一してくださいね。
ver.1.3xの改造例を見たい場合は、このページのトップにある1.3の解説ページを見てください。
ver.1.46
●オリジナルのログ(1件あたり3行で出力されます)
2002年1月22日11時9分46秒 hostname(127.0.0.1) Mozilla/4.79 (Macintosh; U; PPC) 5件 t:シー・アンド・シー
・CGIのオリジナル(1526行目)
# ログの書き出し $str = "$v_nowdate $remote\n $ua\n $v_total件 $v_query\n"; if($f_logencoding eq "shift_jis") { &jcode::convert(\$str,"sjis"); } elsif($f_logencoding eq "iso-2022-jp") { &jcode::convert(\$str,"jis"); } print LF "$str";
●改造後のログ(タブ区切りで1行になります。また、日時の形式が異なります)
2002/01/22 12:00:34 hostname(127.0.0.1) Mozilla/4.79 (Macintosh; U; PPC) 24件 現行品 t:ペンタックス 135フィルム
・CGIの変更部
# ログの書き出し (my $v_nowtime) = getnowtime(); # 日付取得 # $str = "$v_nowdate $remote\n $ua\n $v_total件 $v_query\n"; ←行頭に#をつけてオリジナルをつぶす $str = "$v_nowtime\t$remote\t $ua\t $v_total件\t$v_query\n"; ←必要のない変数は省いてください。下記※参照 if($f_logencoding eq "shift_jis") { &jcode::convert(\$str,"sjis"); } elsif($f_logencoding eq "iso-2022-jp") { &jcode::convert(\$str,"jis"); } print LF "$str"; ※変数の意味は次の通りです。 $v_nowtime 日時。オリジナルと同じでよければ$v_nowdateとします。次の追加ルーチン(ログ用日時生成)も必要ありません。 $remote ホスト名 $ua ブラウザの種類 $v_total ヒット件数 $v_query 検索キーワード
# ログの書き出し (my $v_nowtime) = getnowtime(); # 日付取得 # $str = "$v_nowdate $remote\n $ua\n $v_total件 $v_query\n"; ←行頭に#をつけてオリジナルをつぶす $str = "$v_nowtime\t$remote\t $ua\t $v_total件\t$v_query\n"; ←必要のない変数は省いてください。下記※参照 if($f_logencoding eq "shift_jis") { &jcode::convert(\$str,"sjis"); } elsif($f_logencoding eq "iso-2022-jp") { &jcode::convert(\$str,"jis"); } print LF "$str";
※変数の意味は次の通りです。 $v_nowtime 日時。オリジナルと同じでよければ$v_nowdateとします。次の追加ルーチン(ログ用日時生成)も必要ありません。 $remote ホスト名 $ua ブラウザの種類 $v_total ヒット件数 $v_query 検索キーワード
・CGIに追加するルーチン。一番最後にでも追加すると良いでしょう。
# ログ用日時生成・水沢追加 sub getnowtime { my ($s, $m, $h, $d, $mon, $year); ($s,$m,$h,$d,$mon,$year) = localtime(time + $f_tzdiff * 3600); $year += 1900; $mon += 1; return(sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year, $mon , $d, $h, $m, $s,)); }
# ログ用日時生成・水沢追加 sub getnowtime { my ($s, $m, $h, $d, $mon, $year);
($s,$m,$h,$d,$mon,$year) = localtime(time + $f_tzdiff * 3600); $year += 1900; $mon += 1;
return(sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year, $mon , $d, $h, $m, $s,)); }
▲ページトップ
ホーム >HTMLに役立つヒント>msearch導入記