Unicode版msearch

Unicode版msearchとは、Webサイト(ホームページ)にサイト内検索(検索窓)を設置するためのウェブアプリケーション(CGI)です。 日本語を含む世界中の多言語に対応しています。 (Unicode edition of msearch is web application that enables full text search on multilingual web site.)

【New!】Perl 5.22/5.24対応のVersion 1.52(U5)を公開中です。

【謹告】Version 1.52(U1)までのバージョンには セキュリティホールがありますので、 お使いのユーザーは、至急バージョンアップをお願いします。 詳しくはJVN#79925E6Fをご覧ください。

目次

概要

Unicode版msearchとは、Webサイト(ホームページ)にサイト内検索(検索窓)を設置するためのウェブアプリケーション(CGI)です。

動作例(実際に検索できます)
>> 検索オプション

本CGIは、ホームページ内全文検索エンジンmsearchをベースに、 日本語を含む世界中の多言語に対応しており、以下の特徴があります。

  1. UTF-8のファイルを検索可能。シフトJIS, JIS, EUC-JPのファイルも検索可能。
  2. フィーチャーフォン(ガラケー)、タブレット、スマートフォン(スマホ)に対応。
  3. インデックスをUTF-8で作るので, 世界中の諸言語・諸文字での検索, 検索結果表示が可能。
  4. シフトJISで扱えない漢字(例:SMAPの草彅剛さん, 𠮟(U+20B9F), 剝(U+525D))の検索も可能。
  5. 文字参照(例:" " " )で記述したUnicode文字も検索可能。
  6. 本家版msearchが動作するサーバーであれば、動作可能。
  7. もちろん本家版と同様に無料です。

定評のあるmsearchのコードをベースとしていますので、msearchの下記特徴もそのまま受け継いでいます。

  1. インデックスを作成するので、高速な全文検索が可能。
  2. サーバーによってはインデックスの自動更新が可能なので、Googleカスタム検索並みに手間のかからない運用が可能。
  3. 同梱のPerlスクリプトのみで動作し、追加のモジュール・ライブラリ等は一切不要、root権限も不要なので、CGIの設置を許可されているサーバーならば、どこにでも設置可能。
  4. AND検索、OR検索、NOT検索、タイトル検索、URL検索が可能。
  5. インデックスから除外したいキーワード、ファイルの指定が可能。
  6. 検索結果画面、検索ヘルプ画面は、HTML、CSSを直接編集することで自由なカスタマイズが可能。

以下のようなデメリット、制限事項もあります。

  1. 日本語主体のWebサイト(ホームページ)で大半のページの文字コードがシフトJIS, JIS, EUCのいずれか(もしくは混在)である場合、インデックスのサイズが本家版msearchよりも大きくなる。(約1.5倍)
  2. 検索窓(検索フォーム)をSJIS, JIS, EUCのページに設置すると, 検索速度がかなり低下する。(検索窓はUnicode(UTF-8など)のページに設置します。)
  3. インデックス作成時に本家版msearchよりもメモリを大量に消費し、CPUに負荷がかかるので、サイト構成、サーバー環境によってはサーバーでのインデックス作成が行えなくなる可能性がある。(インデックスをローカルで作成する分にはなんら問題ありません。)
  4. 中国語向けエンコード(Big5, GB2312など), 韓国語向けエンコード(EUC-KRなど)には対応していない。(ただし中国語、韓国語そのものはUnicode(UTF-8など)であれば扱えます。)
  5. 日本語・英語にはないような文法規則(合成文字, リガチャなど)には対応していない。右から左に表記する言語への対応は不完全である。

ダウンロード

本Unicode版msearchはフリーソフトウェアです。本ソフトウェアはKatsushi Matsudaさんの作られたmsearchを改造者(毛流麦花、モールバッカと読みます)が改造し、作成者(Katsushi Matsudaさん)の許可のもとで再配布するものです。 ダウンロードするためには以下の利用規定に同意する必要があります。 利用規程に同意してダウンロードした時点で、本ソフトウェアの使用権が作成者から貸与されることになります。 (あくまでも使用許諾であり、使用権が譲渡されるわけではありません。)

  1. 本ソフトウェア(msearch)はフリーソフトウェアですが,著作権は作成者(Katsushi Matsudaさん)に属します。
  2. 本ソフトウェアを利用したことによる,いかなる結果,損害,トラブルについて作成者は一切の責任を免れます。
  3. 有料,無料を問わず,再配布する場合は作成者に連絡して下さい。
  4. 作成者に許可なく,営利目的での利用(有償でのレンタルや販売,設置代行等)はできません。
  5. 本ソフトウェアの改造は非営利目的の範囲内で自由にできますが,ソフトウェア内に記述された作成者の著作権表示部分を削除,修正することはできません。
  6. バグ報告を除き,改造依頼や改造方法については作成者は基本的にお答えできません。
  7. 設定ファイル(default.cfg)は,作成者に許可なく配布することができます。
  8. 本ソフトウェアにはUnicode, Inc.の著作物が含まれています。これらは、別項※1の記載に従って再配布を行うものです。
  9. 改造者(毛流麦花)は本ソフトウェアを使用したことによるいかなる損害、トラブル、損失、結果についても責任を負いません。
  10. 作成者の許可の下で営利目的の利用、再配布をする場合は、事後報告でかまわないので改造者に報告してください。
  11. 改造者は本ソフトウェアのバグ(不具合)を修正する義務を負いません。
  12. 改造者は本ソフトウェアに関する質問・依頼に答える義務を負いません。

※1:Unicode, Inc.の著作物の著作権、及び利用規程は以下のようになっています。

Copyright(C) 1991-2016 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 1.52(U5)のダウンロード(ZIP圧縮 250KByte)
[SHA-256 Checksum of ms152u5.zip] 97B4999797322D6D54E428FA5DF091D3F37FB1AD11DAE08010DD4BCDB8358560

更新履歴

2016/05/08
msearch Version 1.52 Unicode edition release 5 正式版 (Ver. 1.52(U5))
Version 1.52(U4)からの改善項目
  1. Perl 5.22で動作しない不具合への対応。 (1)添付スクリプトのうち、jcode.plがPerl 5.22非互換の機能(defined(%hash))を 使用していたので、Perl 5.22でも動作するように修正した。 なおPerl 5.22以前のバージョンでも問題なく動作する。 (2)全スクリプトについてwarningレベルのものも含めて文法チェックをしていたところ、 utfjp.plに(動作には影響しないものの)誤記があったので、修正した。
  2. genindex.cgiについて、 Content-type出力時にcharsetも出力するようにした。 最近のブラウザ(モダンブラウザ)は、昔のブラウザと比べてエンコードの判定を簡略化(?)しているのか、 開くとほぼ確実に文字化けするので。 なおmsearch.cgiについては、最初期のバージョンからContent-type出力時にcharsetも出力しており、問題ない。
  3. 配布ZIPファイルについて、 ダウンロードするためのリンクに加えて、 SHA-256ハッシュ値(チェックサム)を Web上に表示するようにした。 Webサーバーの常時SSL化と併せた、セキュリティ対策(ZIPファイルが改竄されていないことの確認用)ということで。
  4. 1.52(U4)からのバージョンアップは genindex.cgi genindex.pl jcode.pl msearch.cgi utfjp.pl をサーバーにアップロードすることで完了。
2016-01-11
ツール(Unicode文字ツール)を追加。 本家UnicodeサイトのUnihan Database Lookupを使っていて 使いづらく感じたので、自分で作成した。 自分が欲しい機能、あったらいいなと感じた機能は すべて盛り込んだつもり。
2015-12-05
Webサーバーの常時SSL化(正確には常時TLS化。フルSSL、常時HTTPS、Always-On SSLなど、さまざまな表記がある)を行うとともに、 サイトをHTML5+CSS3で全面リニューアルした。 Unicode版msearchを公開開始した2004年以来、 初のサイト全面リニューアル。 公開開始した当時と比べて、 コンピューター、インターネットの進化に驚くとともに、 Unicode版msearchをここまで続けてこられたこと、 および現在でも使ってくださっている方がいることに感謝。
2012/01/29
msearch Version 1.52 Unicode edition release 4 正式版 (Ver. 1.52(U4))
Version 1.52(U3)からの改善項目
  1. 検索結果画面でのハイライト表示方法(太字 or 赤文字)を端末毎にきめ細かく適切に設定できるようにした。 日本語フォントの太字が効く端末は太字で、太字が効かない端末は赤文字にするという原則は従来通り。 フィーチャーフォンのフルブラウザからのアクセス時に赤文字にならない等、従来漏れていた 端末を網羅するため、下記手順で設定するようにした。
    (1)judgeua.pl内でユーザーエージェント判定時に太字可否を判断。
    (2)msearch.cgiは太字可否の情報をフォーマット変数($$fontbold$$)で端末に渡す。
    (3)端末はJavaScriptを用いて$$fontbold$$の内容に応じて、CSSを書き換える。
    フォーマット変数$$fontbold$$は検索結果画面、検索オプション画面の両方で利用可能。 添付のdefault.cfg, sphone.cfgは上記内容で修正済み。 (mobile.cfgはCSS, JavaScript未使用につき、ハイライト表示法は赤文字で固定なので 実質的な内容の変更はないものの、$$fontbold$$についてコメント欄に追記したので、 ファイル自体は更新されています。)
    judgeua.plはv1.06に更新。 前述通り、日本語フォント太字可否の判断を行うようにした。 これ以外の変更として、 WILLCOM-PHSのフルブラウザの判定をより厳密に行うようにした(つもり)
  2. default.cfgとsphone.cfgについて 検索対象言語に特定の言語が含まれている場合 JavaScriptを用いてハイライト表示法を赤文字にするようにした。 (特定の言語において当該言語のフォントの太字が効かないことがあるため。) 韓国語とタイ語の場合に赤文字にするようにしたので、 対象言語はお使いの環境に併せて修正ください。 日本語オンリーで使う場合はそのまま修正せずに使ってかまいません。
  3. utfjp.pl内のHTMLのmetaタグから文字コードを抽出する箇所を HTML5に対応できるように修正した。
  4. IPv6対応。(というほど、たいしたことはしていない。) msearch.cgi内のgethostname()内でIP逆引きを している箇所があるので、IPv6の時には逆引きしないように 修正した。ちなみに、IPv4からのアクセス時とIPv6からのアクセス時とで 違いを付ける(何か演出する)ことはしていません。あしからず。
  5. 1.52(U3)からのバージョンアップは msearch.cgi utfjp.pl judgeua.pl default.cfg mobile.cfg sphone.cfgをサーバーにアップロードすることで完了。
2012/1/22
msearch Version 1.52 Unicode edition release 3 正式版 (Ver. 1.52(U3))
【2012/01/24 改訂あり。下部参照】
Version 1.52(U2)からの改善項目
  1. judgeua.plをv1.04に更新。
    iOS端末(iPhone/iPodTouch/iPad),Android端末, WindowsPhoneおよびBlackBerry およびゲーム機のブラウザ(任天堂DSシリーズ/ Wii/ソニーPlayStationシリーズ)に対応した。 任天堂については、DSi/DSiLL/3DS/Wiiはスマホ扱い、 その他(DS/DSLiteなど)は携帯電話扱い。 PlayStationについては、PS Vitaはスマホ扱い、 その他(PlayStation3/PSPなど)は携帯電話扱い。 HP TouchPad, EMOBILE H31IA/H12HW/H11HW, Android用Firexfox,Opera Mini/Mobile,NetFrontにも いちおう対応したつもり。 設定ファイルは従来からあるdefault.cfg(PC用)、mobile.cfg(携帯電話用)に加えて sphone.cfg(スマートフォン用)を追加した。 タブレット端末からのアクセスはすべてパソコン扱いにしているため タブレット端末用のcfgファイルは添付していない。
  2. cfgファイル内の一部のフォーマット変数(pset,nset)について 出力時に行末の改行を出力しないように変更したため 1.52(U2)で使用していたcfgファイルを利用した際に レイアウト崩れが発生した場合は cfgファイル内の下記個所を修正する必要がある。 下記朱書き個所のように、行末に&nsbp;を追記する。 begin〜end間に複数行ある場合は、各行の行末について追記する。

    begin pset 5
    <a href="$$seturl$$">[$$setnum$$]</a>&nbsp;
    end

    begin nset 5
    <a href="$$seturl$$">[$$setnum$$]</a>&nbsp;
    end

    添付のdefault.cfg mobile.cfgは上記修正済み。
  3. 配布形式を従来のLZH形式からZIP形式に変更した。
  4. msearch.cgi呼び出し時、config引数の指定がある場合は そちらの指定を優先し、ユーザーエージェントに基づく判定を無視するようにした。 スマホ用画面からパソコン用画面へ移動できるようにするため。
  5. 1.52(U2)からのバージョンアップは msearch.cgi judgeua.pl sphone.cfg (default.cfg) (mobile.cfg)をサーバーにアップロードすることで完了。 (1.52(U2)で使用していたdefault.cfg mobile.cfgについては、 1.52(U3)の検索結果画面が問題なく表示できれば、そのまま流用しても問題ありません。)
【2012/01/24 改訂】judgeua.plをv1.05に更新
ドコモ携帯(FOMA)のフルブラウザとスマートブラウザに対応した。
au携帯(3G)のPCサイトビューアーに対応した。
SoftBank携帯(3G)のPCサイトブラウザに対応した。
WILLCOM(PHS)のフルブラウザに対応した。
EMOBILE携帯(3G)のH11Tのフルブラウザに対応した。
(H31IA/H12HW/H11HWのフルブラウザには未対応)
2005/09/22
msearch Version 1.52 Unicode edition release 2 正式版 (Ver. 1.52(U2))
【2008/02/29 改訂あり。下部参照】
Version 1.52(U1)からの改善項目
  1. msearch.cgiのlang引数とperiod引数における
    クロスサイトスクリプティング脆弱性(XSS)に対応した。
    本脆弱性はUnicode版特有であり、本家版msearchには存在しない。
    問題の詳細はJVN#79925E6Fを参照のこと。
    発見者のインターナショナル・ネットワーク・セキュリティ(株)さんに感謝。
  2. 携帯電話に対応した。
    対応機種:DoCoMoのFOMA, WILLCOMの京ぽん, auとTU-KAのWAP2.0対応機(PCサイトビューアー等のUTF-8対応ブラウザを搭載している機種のみ), Vodafone(3G)(含 J-N51, V601N, V801SH, V801SA)
  3. 1.52(U1)からのバージョンアップは
    msearch.cgi mobile.cfg judgeua.plをサーバーにアップロードすることで完了。
【2008/02/29 改訂】judgeua.plをv1.03に更新
EMOBILEに対応した。

【2008/02/25 改訂】judgeua.plをv1.02に更新
SoftBank(3G), Disney Mobileに対応した。

【2005/10/01 改訂】judgeua.plをv1.01に更新
WILLCOM WX300K/WX310K/WX310SA/WX310Jに対応した。
Javaベースのブラウザ(jig browser/Scope)に対応した。
PDAに搭載されたNetFrontに対応した。
2005/03/08
msearch Version 1.52 Unicode edition release 1 正式版 (Ver. 1.52(U1))
Version 1.51(U1)からの改善項目
  1. msearch.cgiにおけるディレクトリトラバーサル脆弱性に対応した。 本脆弱性は本家版msearchで発見されたものであるが、 Unicode版でも影響を受ける。 問題の詳細は、msearch脆弱性への対応JVN#8BAAAB4Eを参照のこと。
  2. 1.51(U1)からのバージョンアップは msearch.cgiを新しいものに差し替えるだけで完了。 (この作業だけで脆弱性解消。)
  3. 今回の対応により、インデックスファイルと設定ファイル(スキンファイル)は msearchを設置したディレクトリにしか置けなくなった。 他のディレクトリに置きたい場合は、 allow.plを使う必要がある。(機能詳説を参照のこと。)
  4. インデックスファイルと設定ファイルのファイル名に英数字以外の文字を使用できなくなった。(記号類は使用できない。)
2004/04/15
msearch Version 1.51 Unicode edition release 1 正式版 (Ver. 1.51(U1))
β1からの改善項目
  1. 旧式ブラウザ(IE4.01SP2, NC4.78)に対応するため、msearch.cgiの出力をUTF-8N(BOM無し)に変更した。
2004/03/10
msearch Version 1.51 Unicode edition release 1 (Ver. 1.51(U1)-β1)
本家版msearch Ver. 1.51をUnicodeに対応させたもの。最初のUnicode版msearch。再配布を快諾してくださったまっとさんとUnicode, Inc.に感謝。本家版に以下の機能を付加した。
  1. Unicodeファイル(UTF-8,16LE,16BE,32LE,32BE)をインデックス化できるようにした。
  2. インデックスをUTF-8形式で作成するようにした。
  3. 全Unicode文字(U+0000からU+10FFFFまで)での検索・検索結果表示に対応した。
  4. iso-8859-1, Windows-1252などのSBCS系各種エンコーディングに対応した。
  5. default.cfgのHTMLをHTML 4.01 Transitionalに準拠するように書き換えた。(<table>タグのalign属性, <td>タグのnowrap属性を除けば, HTML 4.01 Strict準拠。)
  6. 0件ヒット時の冗長なメッセージ出力を抑制できるようにした。
  7. 検索結果画面にファイルサイズ, 最終更新日時を表示できるようにした。
  8. 検索対象ページの言語, 更新日を指定しての検索が行えるようにした。
  9. インデックス作成に「逐一モード」を追加した。

謝辞

本ソフトウェアは、再配布を快諾してくださった著作権者様のご好意で成り立っています。 この場を持ちまして、Katsushi Matsudaさん、Unicode, Inc.に御礼申し上げます。

ページのトップへ戻る