|
【謹告】Version 1.52(U2)以前のバージョンには
セキュリティホールがありますので、
お使いのユーザーは、至急バージョンアップをお願いします。
詳しくはJVN#79925E6Fをご覧ください。
Unicode版msearchとは、
ホームページ内全文検索エンジンmsearchの内部処理をUnicode化することで多言語に対応させたものです。
本家版msearchと比して、以下の特徴があります。
- シフトJIS, JIS, EUC-JPのファイルに加えてUnicodeのファイルも検索可能。
- UTF-8, 16LE, 16BE, 32LE, 32BEエンコードのUnicodeファイルを検索可能。(Unicode 4.0準拠)
- インデックスをUTF-8で作るので, グルジア語, 韓国語など世界の諸言語での検索, 検索結果表示が可能。
- JIS第1・第2水準にない漢字(例:SMAPの草彅剛さん, 文豪・森鷗外)の検索も可能。(Unicode(UTF-8など)形式のファイルのみ)
- UCS-2だけでなくUCS-4領域(ただしU+0010FFFFまで)のUnicode文字も検索可能。
- 文字参照(例:" " " )で記述したUnicode文字も検索可能。
- XML文書も検索可能。DTDで独自定義したUnicode文字も検索可能。
- 諸外国で使われている多彩なエンコード(文字コード)に対応。(全57種類)
- 言語を指定しての検索が可能なので、多言語サイトでの運用に好適。
- ページの最終更新日を指定しての検索が可能。
- 本家版msearchが動作するサーバーであれば、動作可能。
- 誤検索(ミスマッチ)が原理的に発生しない。
- 携帯電話(DoCoMo,au,SoftBank,Disney Mobile,EMOBILEとWILLCOM)に対応。
- もちろん本家版と同様に無料です。
定評のあるmsearchのコードをベースとしていますので、msearchの下記特徴もそのまま受け継いでいます。
- インデックスを作成するので、高速な全文検索が可能。
- 同梱のPerlスクリプトのみで動作し、追加のモジュール・ライブラリ等は一切不要なので、CGIの設置を許可されているサーバーならば、どこにでも設置可能。
- AND検索、OR検索、NOT検索、タイトル検索、URL検索が可能。
- インデックスから除外したいキーワード、ファイルの指定が可能。
- 検索結果画面、検索ヘルプ画面は、HTML、CSSを直接編集することで自由なカスタマイズが可能。
以下のようなデメリットもあります。
- 日本語主体のHPで大半のページの文字コードがシフトJIS, JIS, EUCのいずれかである場合、インデックスのサイズが本家版msearchよりも大きくなる。(約1.5倍)
- 検索窓(検索フォーム)をSJIS, JIS, EUCのページに設置すると, 検索速度がかなり低下する。(検索窓はUnicode(UTF-8など)のページに設置します。)
- インデックス作成時に本家版msearchよりもメモリを大量に消費し、CPUに負荷がかかるので、サイト構成、サーバー環境によってはサーバーでのインデックス作成が行えなくなる可能性がある。(インデックスをローカルで作成する分にはなんら問題ありません。)
- 中国語向けエンコード(Big5, GB2312など), 韓国語向けエンコード(EUC-KRなど)には対応していない。(ただし中国語、韓国語そのものはUnicode(UTF-8など)であれば扱えます。)
- 日本語・英語にはないような文法規則(合成文字, リガチャなど)には対応していない。右から左に表記する言語への対応は不完全である。
本Unicode版msearchはフリーソフトウェアです。本ソフトウェアはKatsushi Matsudaさんの作られたmsearchを改造者(毛流麦花)が改造し、作成者(Katsushi Matsudaさん)の許可のもとで再配布するものです。
ダウンロードするためには以下の利用規定に同意する必要があります。
利用規程に同意してダウンロードした時点で、本ソフトウェアの使用権が作成者から貸与されることになります。
(あくまでも使用許諾であり、使用権が譲渡されるわけではありません。)
- 本ソフトウェア(msearch)はフリーソフトウェアですが,著作権は作成者(Katsushi Matsudaさん)に属します。
- 本ソフトウェアを利用したことによる,いかなる結果,損害,トラブルについて作成者は一切の責任を免れます。
- 有料,無料を問わず,再配布する場合は作成者に連絡して下さい。
- 作成者に許可なく,営利目的での利用(有償でのレンタルや販売,設置代行等)はできません。
- 本ソフトウェアの改造は非営利目的の範囲内で自由にできますが,ソフトウェア内に記述された作成者の著作権表示部分を削除,修正することはできません。
- バグ報告を除き,改造依頼や改造方法については作成者は基本的にお答えできません。
- 設定ファイル(default.cfg)は,作成者に許可なく配布することができます。
- 本ソフトウェアにはUnicode, Inc.の著作物が含まれています。これらは、別項※1の記載に従って再配布を行うものです。
- 改造者(毛流麦花)は本ソフトウェアを使用したことによるいかなる損害、トラブル、損失、結果についても責任を負いません。
- 作成者の許可の下で営利目的の利用、再配布をする場合は、事後報告でかまわないので改造者に報告してください。
- 改造者は本ソフトウェアのバグ(不具合)を修正する義務を負いません。
- 改造者は本ソフトウェアに関する質問・依頼に答える義務を負いません。
※1:Unicode, Inc.の著作物の著作権、及び利用規程は以下のようになっています。
Copyright(C) 1991-2004 Unicode, Inc. All rights reserved.
Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
Permission is hereby granted, free of charge, to any person obtaining a copy of
the Unicode data files and associated documentation (the "Data Files") or
Unicode software and associated documentation (the "Software") to deal
in the Data Files or Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, and/or sell copies
of the Data Files or Software, and to permit persons to whom the Data Files or
Software are furnished to do so, provided that (a) the above copyright notice(s)
and this permission notice appear in all copies of the Data Files or Software,
(b) both the above copyright notice(s) and this permission notice appear
in associated documentation, and (c) there is clear notice in each modified Data File
or in the Software as well as in the documentation associated with the Data File(s)
or Software that the data or software has been modified.
以下の説明は、本家版msearchの導入方法について知識があることを前提としています。
msearchの導入が初めての方は以下の説明を読む前に、
msearchのホームページ(本家サイト)の解説、
penguin-19さんのmsearch導入記を
熟読してください。以下、本家版とは異なる箇所を中心に説明します。
サイト構成によっては、Unicode版ではなく本家版msearchを設置した方がいい場合もあります。
特にUnicode(UTF-8など)のページが皆無のサイトでは、本家版msearchがベストな選択です。
詳しくは、設置してメリットのあるWebサイトをご覧ください。
なおCGIの設置そのものに不慣れな方は, 事前にCGIの設置方法の基礎について学んでおいてください。(Googleにおいて「CGI 初心者」で検索すると, いろいろなサイトが出てきます。)
msearchを設置する前に, アクセスカウンターCGI, 掲示板CGIなどの設置を行って習熟されることを推奨します。
1. 事前確認
msearchを設置する前に確認すべき事項があります。
msearchを設置しようとするサーバーについて、以下の事項を確認してください。
- 自作CGI(カスタムCGI)の設置が認められているか?
- 全文検索CGIの設置が認められているか?
プロバイダ(ホスティング)業者によっては, 業者が用意したCGIの設置しか認めていない場合があります。
また自作CGI(カスタムCGI)の設置を認めている業者であっても, 全文検索CGI(検索系CGI)の設置を認めていない場合があります。
これは, アクセスカウンター, 掲示板などのCGIと比べて, 全文検索CGIはサーバー負荷が高くなる傾向があるためです。
(業者によっては, 全文検索CGIの設置を認めず, その代わりに全文検索機能を提供している場合があります。)
必ず上記事項を事前に確認してください。
2. ファイルのダウンロード
msearchをダウンロードして、解凍します。
必ず利用規定に同意してからダウンロードしてください。
ファイルはLZH形式で圧縮されており、
解凍すると以下のファイルが出てきます。
なおMacintoshをお使いの場合、ファイルの解凍にStuffIt Expanderを使わないでください。
(OSXならDropUnLHa、OSX以前の場合はMacLHAを使ってください。)
| genindex.cgi | サーバーでインデックスを作成するためのCGI |
| genindex.pl | ローカル環境でインデックスを作成するためのPerlスクリプト |
| indexing.pl | インデックス作成ライブラリ |
| msearch.cgi | 検索エンジン本体 |
| default.cfg | 設定ファイルの例(パソコン用) |
| mobile.cfg | 設定ファイルの例(携帯電話用) |
| judgeua.pl | 携帯電話の種類を判定するためのライブラリ |
| jcode.pl | 歌代和正氏作の日本語文字コード変換ライブラリ |
| allow.pl | インデックスと設定ファイルを msearch設置ディレクトリ以外に置くための設定ファイル(上級者用) |
| utfjp.pl | 日本語文字コードとUnicode間の文字コード変換ライブラリ |
| utfjpent.txt | 文字実体参照名とUnicode間のマッピングテーブル |
| utfjpmap.txt | 日本語文字コードとUnicode間のマッピングテーブル |
utfjpsupフォルダ 内のファイル | 各種文字コードとUnicode間のマッピングテーブル |
3. 設定の変更
msearchの各ファイルを編集します。
設定の変更を行うためには、Unicode(UTF-8)及びEUC漢字コードに対応したテキストエディタが必要です。
各ファイルについて、以下の項目を修正します。
| ファイル名 | 修正項目 |
| genindex.cgi | 先頭行のPerlへのパスをサーバーの設定に合わせて書き換えます。 |
| genindex.cgi | 変数$g_passwordの値を書き換えます。インデックス作成時のパスワードです。必ず書き換えます。 |
| msearch.cgi | 先頭行のPerlへのパスをサーバーの設定に合わせて書き換えます。 |
| default.cfg | 「1.変数の設定」の$homeをあなたのホームページのURLに書き換えます。 |
| mobile.cfg | 「1.変数の設定」の$homeをあなたのホームページのURLに書き換えます。 |
基本的にこれだけ修正すれば事足ります。なお本家版msearchで使用していた設定ファイル(default.cfg)を
流用する場合は、本家版からの移行方法を読んで必ず書き換えてください。
(もっとも、本家版の設定ファイルを書き換えるよりも、Unicode版に同梱している設定ファイルを書き換える方が楽だと思います。)
4. サーバーへのアップロード
いよいよmsearchをサーバーへアップロードして、設置します。
まずサーバー上にmsearch設置用のフォルダを作成します。フォルダは他のCGIスクリプトと共有せず、必ずmsearch専用としてください。
なおCGIの設置条件は事前に確認しておいてください。サーバーによっては特定の条件を満たすフォルダにしかCGIを設置できない場合があります。
作成したこのフォルダのパーミッションを設定します。下記表の「msearch.cgiを置くフォルダ」の設定例を参考にしてください。
FTPソフト等を用いて、このフォルダに各ファイル及びutfjpsupフォルダをアップロードします。
アップロード時、FTPソフトで文字コードの変換は行わないでください。
特にFFFTPをお使いの場合、「転送モード:アスキー、ホストの漢字コード:無変換」で転送してください。
FTPソフトによっては、アスキーモードをテキストモードと呼称することもありますが、いずれも同じ意味です。
アップロード後、パーミッションを以下のように設定します。
なお以下のパーミッション設定は一例です。サーバー環境によっては異なる値に設定する必要があります。
特にsuEXEC, もしくはCGIWrapという仕組みを導入しているサーバーの場合、下記設定では動かない可能性が高いです。
どのように設定すればよいのかについては、プロバイダー(ホスティング)業者に問い合わせてください。
ファイル名 もしくはフォルダ名 | エディタで編集・保存する時の | FTPソフトの 転送モード | パーミッション |
| 文字コード | 改行コード |
msearch.cgiを 置くフォルダ | - | - | - | 644 |
| genindex.cgi | EUC | LF | アスキー | 755 |
| genindex.pl | EUC | LF | アップロードする必要はありません。 |
| indexing.pl | EUC | LF | アスキー | 644 |
| msearch.cgi | EUC | LF | アスキー | 755 |
| default.cfg | UTF-8 | LF | アスキー | 644 |
| mobile.cfg | UTF-8 | LF | アスキー | 644 |
| judgeua.pl | EUC | LF | アスキー | 644 |
| jcode.pl | 変更しないでください。 | アスキー | 644 |
| allow.pl | EUC | LF | 通常はアップロードする必要はありません。 必要な場合のみ 「アスキー 644」でアップロードしてください。 |
| utfjp.pl | EUC | LF | アスキー | 644 |
| utfjpent.txt | EUC | LF | アスキー | 644 |
| utfjpmap.txt | EUC | LF | アスキー | 644 |
| utfjpsupフォルダ | - | - | - | 644 |
utfjpsupフォルダ 内のファイル | EUC | LF | アスキー | 644 |
5. 動作チェック、インデックス作成、初めての検索、インデックス管理
サーバーに設置したmsearchをさっそく動作させてみます。
本家版msearchと同じなので、説明を省略します。
詳しい説明は本家サイトの解説もしくはpenguin-19さんの解説ページを読んでください。
以下、注意事項・制限事項を説明します。
genindex.cgiを用いてのインデックス作成(サーバー上でのインデックス作成)は失敗する可能性が高いです。
(例えばアット・ニフティのサーバーでは、たいていの場合失敗します。)
失敗した場合はインデックスの小分け作成、逐一モードでの作成などを試みてください。
逐一モードで作るときはデバッグモードにもチェックを入れてください。なお、逐一モードで作ったインデックスを補助ツールで結合しても問題ありません。
これらの方法で成功しない場合はサーバー上でのインデックス作成を潔くあきらめ、
ローカルでインデックスを作成し、サーバーへアップロードするようにしてください。
(ローカルで作成したインデックス(ファイル名の拡張子は.idxです)をサーバーへアスキーモード(テキストモード)でアップロードします。)
手順等の詳細については、ローカルサーバーのページをご覧ください。
検索対象ファイルがひとつ残らず全てUnicode(UTF-8など)化されていれば、
genindex.cgiでのインデックス作成(サーバー上でのインデックス作成)が成功する可能性は本家版と同等です。
インデックス作成時、非インデックス対象キーワードにUnicode固有文字(SJIS, JIS, EUCにない文字)を
含めることはできません。
6. 検索窓を付ける
既存のWEBページからmsearchの検索機能を使えるようにします。
検索窓(検索フォーム)の設置には2通りの方法があります。
HTMLのFORMタグを使って記述・設置する方法と、Flashを使って制作・設置する方法です。
FORMタグを使って記述・設置する場合、Unicode(UTF-8など)のページにしか設置できないという制約があります。
(シフトJIS, JIS, EUCのページに設置すると, 検索速度が極端に低下します。)
FORMタグを使って設置する方法はFAQに書いてありますので、そちらをご参照ください。
Flashを使って制作・設置する場合、特に制約はありません。
検索窓のFlashコンテンツをシフトJIS, JIS, EUCのページに設置しても問題ありません。
ただし当該Flashコンテンツはバージョン6以降としてパブリッシュし、当該Flashコンテンツの表示にはバージョン6以降のFlash Playerが必要になります。
Flashを使って制作・設置する方法については、準備中です。
7. 設置報告のお願い
Unicode版msearchを設置されましたら、ぜひともメールで設置報告をお願いします。
公序良俗に反するようなサイトでない限り、できるだけ「導入サイト一覧」からリンクを張らせていただきたく考えています。
この設置報告は義務ではありませんが、脆弱性発見時など緊急のお知らせをWebmasterに一斉通知する場合に備えて、
ぜひとも報告をお願いします。
1. 言語を指定した検索を使うために
Unicode版msearchでは、検索オプションで検索対象言語を指定して検索することができます。
この機能を使うためには、検索対象ファイルに言語情報を記述する必要があります。
インデックス対象のHTML, XML(含 XHTML)ファイルについては、下記方法で言語コードを記すようにしてください。(朱書き箇所)
アルファベットの大文字・小文字は区別されません。
なおどの方法で指定する場合でも言語コードはカンマで区切って複数指定してもかまいません。(RFC-3282で規定されています。)
言語コードを複数指定した場合、すべての言語コードを認識します。(検索対象言語がいずれであっても検索対象になります。)
以下の表に掲げる複数の方法で同時に言語が指定された場合の優先順位は、<meta>タグ、<html>タグ、xml:lang属性です。
なお、記すのはRFC-1766("Tags for the Identification of Languages" 現在はRFC-3066)準拠の言語コードです。
言語コードのリストは言語コード表のページにあります。
| 指定方法 | 記述例 |
| <meta>タグ |
HTML, XHTMLで利用可能です。 (Content-Languageも含め、必ず"で囲んでください。)
<meta http-equiv="Content-Language" content="ja">
|
<html>タグの lang属性 |
HTML, XHTML1.0で利用可能です。(必ず"で囲んでください。)この属性はXHTML1.1では利用できません。
<html lang="ja,sv">
|
任意のタグの xml:lang属性 |
XML(含 XHTML)で利用可能です。
任意のタグに指定できます。
複数のタグで指定されている場合、最初の指定のみが有効になります。
<文書 xml:lang="ja">
<html xml:lang="ja-JP,sv-SE">
XMLで使う場合でDTDでの宣言が必要な場合は、 XML 1.0仕様書の"2.12 Language Identification"を参考にしてください。
|
2. 文字コードの指定
各検索対象ファイルには文字コードを必ず記述するようにしてください。
特に日本語以外のファイル(ISO8859など)では記述されていないと正しく検索できません。
文字コード毎に満たすべき条件を以下に記します。
この条件を満たさないファイルについては、検索結果表示時に文字化けするか、
もしくは検索されない(ヒットするはずなのにヒットしない)可能性があります。
| 文字コード | 条件 |
| Shift_JIS |
HTMLの場合:
<meta>タグで文字コードを指定してください。(必ず"で囲んでください。)
<meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS">
XHTML,XMLの場合:
XML宣言で文字コードを指定してください。
<?xml version="1.0" encoding="Shift_JIS" ?>
間違ってShift-JISとしないように注意してください。 (ハイフンではなくアンダーバーです。)
|
| JIS |
HTMLの場合:
<meta>タグで文字コードを指定してください。(必ず"で囲んでください。)
<meta http-equiv="Content-Type" content="text/html;charset=ISO-2022-JP">
XHTML,XMLの場合:
XML宣言で文字コードを指定してください。
<?xml version="1.0" encoding="ISO-2022-JP" ?>
|
| EUC-JP |
HTMLの場合:
<meta>タグで文字コードを指定してください。(必ず"で囲んでください。)
<meta http-equiv="Content-Type" content="text/html;charset=EUC-JP">
XHTML,XMLの場合:
XML宣言で文字コードを指定してください。
<?xml version="1.0" encoding="EUC-JP" ?>
間違ってEUC_JPとしないように注意してください。 (アンダーバーではなくハイフンです。)
|
| UTF-8 |
HTMLの場合:
<meta>タグで文字コードを指定してください。(必ず"で囲んでください。)
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
XHTML,XMLの場合:
XML宣言で文字コードを指定してください。
<?xml version="1.0" encoding="UTF-8" ?>
|
UTF-16LE Unicode |
BOM付きで保存されていること。
HTMLの場合:
<meta>タグで文字コードを指定してください。(必ず"で囲んでください。)
<meta http-equiv="Content-Type" content="text/html;charset=UTF-16LE">
XHTML,XMLの場合:
XML宣言で文字コードを指定してください。
<?xml version="1.0" encoding="UTF-16LE" ?>
|
UTF-16BE Unicode(big endian) |
BOM付きで保存されていること。
HTMLの場合:
<meta>タグで文字コードを指定してください。(必ず"で囲んでください。)
<meta http-equiv="Content-Type" content="text/html;charset=UTF-16BE">
XHTML,XMLの場合:
XML宣言で文字コードを指定してください。
<?xml version="1.0" encoding="UTF-16BE" ?>
|
UTF-32LE Unicode |
BOM付きで保存されていること。
HTMLの場合:
<meta>タグで文字コードを指定してください。(必ず"で囲んでください。)
<meta http-equiv="Content-Type" content="text/html;charset=UTF-32LE">
XHTML,XMLの場合:
XML宣言で文字コードを指定してください。
<?xml version="1.0" encoding="UTF-32LE" ?>
|
UTF-32BE Unicode(big endian) |
BOM付きで保存されていること。
HTMLの場合:
<meta>タグで文字コードを指定してください。(必ず"で囲んでください。)
<meta http-equiv="Content-Type" content="text/html;charset=UTF-32BE">
XHTML,XMLの場合:
XML宣言で文字コードを指定してください。
<?xml version="1.0" encoding="UTF-32BE" ?>
|
| 上記以外 |
HTMLの場合:
<meta>タグで文字コードを指定してください。(必ず"で囲んでください。)
<meta http-equiv="Content-Type" content="text/html;charset=Windows-1252">
XHTML,XMLの場合:
XML宣言で文字コードを指定してください。
<?xml version="1.0" encoding="Windows-1252" ?>
|
3. 特定の領域を検索対象から外す
<msearch>タグを使うと、HTML, XHTML文書の特定の領域をインデックス化されないようにすることができます。
サンプルを以下に記します。
<html>
<body>
<p>インデックス化される文章です。</p>
<msearch><p>インデックス化されない文章です。</p></msearch>
<p>インデックス化される文章です。</p>
</body>
</html>
<msearch>タグで囲まれた領域はインデックス化対象から除外されます。上記例では、
「インデックス化されない文章です。」はインデックス化されません。
「インデックス化される文章です。」はインデックス化されます。
<msearch>タグを挿入しても、Webブラウザの表示に影響を及ぼすことはありません。(「インデックス化されない文章です。」も表示されます。)
タグの挿入個数に制限はありませんが、タグの入れ子関係を崩さないように挿入してください。
4. 検索フォーム(検索窓)を記述する
msearch.cgiの引数の一覧を記します。
| 引数名 | 説明 |
| query |
検索式(検索窓に入力した文字列)はこの引数に与えます。
query引数に空でない文字列を与えてmsearch.cgiを実行すると検索を行います。
query引数に空の文字列を与える、もしくは引数そのものを与えなかった場合は、検索オプション(ヘルプ)画面を表示します。
query引数に与えられた文字列は検索実行後にフォーマット変数$$query$$に引き継がれるので、設定ファイルの検索結果画面HTMLに記述することで次の検索へ引き継ぐことができます。
|
| num |
検索結果画面で1ページに表示する検索結果の件数を定めます。
num引数を省略した場合はデフォルト値(10)が使われます。0を与えると全件表示になりますが、これは設定しない方が無難でしょう。(ヒット件数が何百件にもなった時大変なので。)
num引数に与えられた値は検索実行後にフォーマット変数$$rpp$$に引き継がれるので($$num$$でないことに注意)、設定ファイルの検索結果画面HTMLに記述することで次の検索へ引き継ぐことができます。
|
| set |
検索結果画面の何ページ目を表示させるのかを定めます。
先頭ページは1です。
|
| index |
どのインデックスファイルで検索を行うのかを定めます。
例えばsweden.idxなるインデックスファイルで検索する場合は、"sweden"を与えます。(拡張子.idxが付かないことに注意)
index引数に空の文字列を与える、もしくは引数そのものを与えなかった場合は、デフォルトのインデックスファイル(default.idx)で検索を行います。
index引数に与えられた文字列は検索実行後にフォーマット変数$$index$$に引き継がれるので、設定ファイルの検索結果画面HTMLに記述することで次の検索へ引き継ぐことができます。
ファイル名に使える文字は英数字のみです。記号類は使えません。
本引数を使う場合、次節「インデックスと設定ファイルの切替機能を使う」も参照してください。
|
| config |
どの設定ファイル(拡張子.cfg)で検索結果画面・検索オプション画面表示を行うのかを定めます。
例えばsweden.cfgなる設定ファイルを使う場合は、"sweden"を与えます。(拡張子.cfgが付かないことに注意)
config引数に空の文字列を与える、もしくは引数そのものを与えなかった場合は、デフォルトの設定ファイル(default.cfg)を使います。
config引数に与えられた文字列は検索実行後にフォーマット変数$$config$$に引き継がれるので、設定ファイルの検索結果画面HTMLに記述することで次の検索へ引き継ぐことができます。
ファイル名に使える文字は英数字のみです。記号類は使えません。
本引数を使う場合、次節「インデックスと設定ファイルの切替機能を使う」も参照してください。
|
| hint |
文字コード判定を間違いなく確実に行うためのヒント文字列を与えます。
検索を行う場合この引数は必ず与えてください。(検索オプション(ヘルプ)画面を表示する場合は省略可能)
与える文字列は必ず「ひらがなが連続で4文字以上」(清音, 濁音, 半濁音, 拗音, 促音, 撥音のみ。長音は不可。)にしてください。
長くしても意味がないので、必要最小限の「ひらがな4文字」でかまいません。
|
| lang |
検索対象とする言語の言語コードと検索結果画面に表示する言語名を与えます。
言語名は設定ファイルの検索結果画面のフォーマット変数$$langname$$に入ります。
例えば「日本語のページを対象として検索し、検索結果画面に言語名を『日本語』と表示する」のであれば、
"ja;日本語"を与えます。("ja"と"日本語"を半角セミコロンで区切って並べます。)
複数の言語コードを記述する時は半角カンマで区切ります。(与える言語コードの数に制限はありません)
例えば「日本語とスウェーデン語のページを対象として検索し、検索結果画面に言語名を『日本語とスウェーデン語』と表示する」のであれば、
"ja,sv;日本語とスウェーデン語"を与えます。
lang引数に空の文字列を与える、もしくは引数そのものを与えなかった場合は、
全言語を対象とした検索を行います。この場合の検索結果画面に表示する言語名は設定ファイルのフォーマット変数$alllangに従います。
"all;全言語"を与えた場合も、全言語を対象とした検索を行います。(もちろん言語名は『全言語』以外でも可能)
lang引数に与えられた文字列は検索実行後にフォーマット変数$$lang$$に引き継がれるので、設定ファイルの検索結果画面HTMLに記述することで次の検索へ引き継ぐことができます。
なお記すのはRFC-1766("Tags for the Identification of Languages" 現在はRFC-3066)準拠の言語コードです。
言語コードのリストは言語コード表のページにあります。
|
| period |
今日を起点として何日以内に更新されたファイルを検索するのか、及び検索結果画面に表示する検索対象期間名を与えます。
検索対象期間名は設定ファイルの検索結果画面のフォーマット変数$$periodname$$に入ります。
例えば「7日以内に更新されたファイルを対象として検索し、検索結果画面に検索対象期間名を『7日以内に更新された』と表示する」のであれば、
"7;7日以内に更新された"を与えます。("7"と"7日以内に更新された"を半角セミコロンで区切って並べます。)
更新日時に関係なくすべてのファイルを検索するには負数を与えます。例えば"-1;更新日時に関係なく"を与えます。
本日のみを対象とする場合はゼロを与えます。例えば"0;本日更新された"を与えます。
period引数に空の文字列を与える、もしくは引数そのものを与えなかった場合は、
更新日時に関係なく検索を行います。この場合の検索結果画面に表示する検索対象期間名は設定ファイルのフォーマット変数$allperiodに従います。
period引数に与えられた文字列は検索実行後にフォーマット変数$$period$$に引き継がれるので、設定ファイルの検索結果画面HTMLに記述することで次の検索へ引き継ぐことができます。
|
5. インデックスと設定ファイルの切替機能を使う
インデックスと設定ファイルを複数使う場合、
msearch.cgiの引数indexでインデックスを指定し、
引数configで設定ファイルを指定するわけですが、
インデックスと設定ファイルはmsearchを設置したディレクトリにしか置くことができません。(Version 1.52(U1)以降のみ。セキュリティ上の理由による。)
msearch設置ディレクトリ以外に置きたい場合は、
以下のようにする必要があります。
(本家サイトの高度な設定も参照してください。)
1. msearch.cgiをエディタで開き、323行目(Version 1.52(U1)の場合)付近を見る。
### インデックスと設定ファイルを確定する
#require './allow.pl';
identifyindex();
こうなっているのを以下のように修正する。(requireが記述された行の行頭の#を削除する。)
### インデックスと設定ファイルを確定する
require './allow.pl';
identifyindex();
2. allow.plをエディタで開き、以下のような箇所を探す。
### インデックスと設定ファイルを置くことを許可するディレクトリの一覧
### 必ず,"/"で終了して下さい.
@g_allow = (
"./", # これは必ず残しておいて下さい
"testdir/",
);
インデックスと設定ファイルを置くディレクトリを
msearch.cgi設置ディレクトリからの相対パスで上記箇所に記します。
以下のような場合を考えてみます。
■msearch.cgi設置ディレクトリ
/cgi-bin/msearch/engine/msearch.cgi
■インデックス
/cgi-bin/msearch/engine/other/other.idx
/cgi-bin/msearch/scandinavia/sweden.idx
/cgi-bin/msearch/scandinavia/norway.idx
■設定ファイル
/cgi-bin/msearch/engine/other/other.cfg
/cgi-bin/msearch/scandinavia/sweden.cfg
/cgi-bin/msearch/scandinavia/norway.cfg
この場合はallow.plに以下のように記します。
### インデックスと設定ファイルを置くことを許可するディレクトリの一覧
### 必ず,"/"で終了して下さい.
@g_allow = (
"./", # これは必ず残しておいて下さい
"other/",
"../scandinavia/",
);
上記設定でmsearch.cgi?index=swedenという呼び出しを行うと、
最初に"./"ディレクトリ(=msearch.cgi設置ディレクトリ)でsweden.idxを探し、
次に"other/"ディレクトリ(=/cgi-bin/msearch/engine/other/)でsweden.idxを探し、
最後に"../scandinavia/"ディレクトリ(=/cgi-bin/msearch/scandinavia/)でsweden.idxを探します。
設定ファイルの探し方はインデックスの場合と異なります。
msearch.cgi?index=swedenという呼び出しを行った場合、sweden.idxが見つかったディレクトリ内にsweden.cfgがある場合のみ、その設定ファイルを読み込みます。
もしもそのディレクトリ内にsweden.cfgがない場合は、msearch.cgi設置ディレクトリ内にあるdefault.cfgを読み込みます。
msearch.cgi?index=sweden&config=norwayのようにindex引数とconfig引数の両方を指定した場合、
及びmsearch.cgi?config=otherのようにconfig引数のみを指定した場合は、
上記のような動作はせずにallow.plに列挙されたディレクトリへ
config引数で指定された設定ファイルを探しに行きます。
3. 修正したmsearch.cgiとallow.plをサーバーにアップロードする。
修正したmsearch.cgiとallow.plをサーバーにアップロードすれば作業は完了です。
本家版msearch 1.50, 1.51, 1.52からの移行方法を記します。
| 修正対象 | 修正箇所 |
インデックス default.idx |
本家版で使用していたインデックスファイルは流用できません。削除してから、新規に作成し直してください。
|
設定ファイル default.cfg |
Ver. 1.50, 1.51, 1.52で使用していた設定ファイルは
以下の修正を行えば、流用可能です。(そのままでは使用できません。)
ただし流用よりも、Unicode版に同梱している設定ファイルを修正する方を推奨します。
1.変数の設定
配布アーカイブの中に入っているdefault.cfgを参考にして、以下の修正を行ってください。
- ログファイルの漢字コード($logencoding)は行頭に#を付けてコメントアウトしてください。(UTF-8で固定です。)
- HTML出力漢字コード($encoding)は行頭に#を付けてコメントアウトしてください。(UTF-8で固定です。)
- マッチ部分の抽出文字数($extract_f, $extract_b)は現在の半分の値にしてください。(バイト数ではなく文字数として扱われます。)
- resultフォーマット(begin result~end)に最終更新日時, ファイルサイズのフォーマット変数を追加してください。(mtyear, mtmonth, mtday, mthour, mtminute, mtsecond, filesize)
- noresultフォーマット(begin noresult~end)を追加してください。
2.検索結果画面のフォーマット
フォーマット変数 langname periodname lang period を追加します。これらに関連して<lang>タグ、<period>タグを追加します。
<noresult><period>$$periodname$$</period><lang>$$langname$$のページを検索し,</lang>$$total$$件ヒットしました.
$$from$$件目から$$to$$件目を表示します.</noresult>
検索フォームの<form>セクション内に<input>タグを追加します。(朱書き箇所)
なおvalueは必ず「ひらがなが連続で4文字以上」(清音, 濁音, 半濁音, 拗音, 促音, 撥音のみ。長音は不可。)にしてください。
<form action="$$msearch$$" accept-charset="$$encoding$$">
検索<br>>>
<input type="text" size="40" name="query" value="$$query$$">
<input type="submit" value="検索">
<a href="$$msearch$$?index=$$index$$&config=$$config$$">検索オプション</a>
<input type="hidden" name="hint" value="ひらがな">
<input type="hidden" name="index" value="$$index$$">
<input type="hidden" name="config" value="$$config$$">
</form>
0件ヒット時に表示させたくない文字列、フォーマット変数を<noresult>タグと</noresult>タグとで
囲んでください。
<td bgcolor=#3366cc align=left>
<font size=-1 color=white><noresult> $$total$$件ヒットしました.
$$from$$件目から$$to$$件目を表示します.</noresult></font>
</td>
<td bgcolor=#3366cc align=right>
<font size=-1 color=white><noresult>検索にかかった時間$$cputime$$秒 </noresult></font>
</td>
3.ヘルプ画面(初期画面)のフォーマット
検索結果画面のフォーマットの修正で行った<input>タグの追加を行ってください。
4.保存形式の変更
文字コードをUTF-8に変更し、改行コードがLFになっていることを確認して保存してください。
BOMは有っても無くても、問題ありません。(BOMの有無を選択できる場合のみ)
|
| 検索フォーム |
検索フォームを設置しているWebページには以下の修正を行ってください
1.<meta>タグの修正
文字コードをUTF-8に変更してください。(朱書き箇所)
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
2.<form>タグの修正
検索フォームの<form>タグのaccept-charsetをeuc-jpからutf-8に変更してください。(朱書き箇所)
<form action="/cgi-bin/msearch.cgi" accept-charset="utf-8">
3.<input>タグの追加
検索フォームの<form>セクション内に<input>タグを追加します。(朱書き箇所)
なおvalueは必ず「ひらがなが連続で4文字以上」(清音, 濁音, 半濁音, 拗音, 促音, 撥音のみ。長音は不可。)にしてください。
<form action="/cgi-bin/msearch.cgi" accept-charset="utf-8">
検索<br>>>
<input type="text" size="40" name="query" value="">
<input type="submit" value="検索">
<a href="/cgi-bin/msearch.cgi">検索オプション</a>
<input type="hidden" name="hint" value="ひらがな">
<input type="hidden" name="index" value="">
<input type="hidden" name="config" value="">
</form>
4.保存形式の変更
文字コードをUTF-8に変更して保存してください。
|
検索対象ファイル *.html *.shtml *.xml など |
検索対象Webページには以下の修正を行ってください
1.文字コードの指定
検索対象ページは必ず<meta>タグで文字コードを指定してください。
また属性値(下の例では「Content-Type」「text/html;charset=Shift_JIS」)は必ず"で囲んでください。
<meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS">
|
2つあります。両方に目を通してください。
FAQ(第1) FAQ(第2)
文字コードの判定は以下の手順で行われます。
- UTF-16LE, 16BE, 32LE, 32BEについては、BOMの有無で判定します。
- それ以外については、まずHTMLの<meta>タグのエンコーディングを探します。
- 見つかれば、その結果を返します。
- 見つからない場合は、XML宣言のエンコーディングを探します。
- 見つかれば、その結果を返します。
- 見つからない場合は、UTF-8のBOMの有無を調べます。
- UTF-8のBOMが有れば、UTF-8であると判定します。(※1)
- UTF-8のBOMが無い場合は、ひらがなもしくは全角カタカナが連続で4文字出現する箇所があるかどうかを調べます。(ひらがな・カタカナいずれか一方のみの4文字でもよいし、両者が混在して4文字でもよい。)
- 該当箇所が有る場合は、UTF-8であると判定します。(※2)
- 該当箇所が無い場合は、ひらがなもしくは全角カタカナが連続で3文字出現する箇所が4箇所以上あるかどうかを調べます。(ひらがな・カタカナいずれか一方のみの3文字でもよいし、両者が混在して3文字でもよい。)
- 該当した場合は、UTF-8であると判定します。(※2)
- 該当しなかった場合は、jcode.plの判定結果をそのまま返します。
※1:この判定を行っているため、「鏤身」(注:ルシン、もしくはロウシンと読みます。)などの「鏤」で始まる字句が
ファイルの先頭にあるEUC-JPのファイル(非マークアップのテキスト)をUTF-8であると誤判定する可能性があります。
※2:この判定は簡易的なものです。Shift_JISにおいては、
「絆」、「罠」、「羞恥」、「飛翔」、「胚芽」などの
1バイト目が0xE3の文字を含む字句が多く出現するファイル(非マークアップのテキスト)、
EUC-JPにおいては、
「祭祀」、「齋藤」、「稟議」、「改竄」などの
1バイト目が0xE3の文字を含む字句が多く出現するファイル(非マークアップのテキスト)、
などをUTF-8であると誤判定する可能性があります。この種の誤判定を防止したい場合は、
当該ページをHTML化した上で、<meta>タグで文字コードを指定してください。
本ソフトウェアは、再配布を快諾してくださった著作権者様のご好意で成り立っています。
この場を持ちまして、Katsushi Matsudaさん、Unicode, Inc.に御礼申し上げます。
リンク集のページをご覧ください。
|