space
テクニック:「Namazu」の導入方法
 
space
Windows環境下における「pnamazu」のインストール方法
  ※検索エンジン「namazu」のCGIモジュールにぜい弱性
   ホームページを作ったら,誰もが自サイト内が検索できるサーチエンジンを設置したいと言う願望に駆られるでしょう。それも,無料で,しかもレンタルサーバーに設置したい!!

  しかし,自サイト内検索システムを構築するためには,数年前までは,数百万円はするような非常に高価な商用全文検索システムを購入するか,あるいはフリーソフトではあるが,非常に低機能な全文検索システムを利用する以外の選択肢しかありませんでした。

  ところが幸いな事に,この数年でフリーの全文検索システムを取り巻く環境は大きく好転し,商用製品と比較しても遜色ないソフトが出てきています。ここで紹介する「Namazu」もその一つです。

  私も,最初の頃は,サーチエンジンとして,比較的簡単に設置できるgrepタイプのものを無料CGI提供サイトからダウンロードして使用していました。しかし,如何せん,検索結果の表示が非常に遅く,実用的には使用に耐えうるものではありませんでした。※参考:「日本語全文検索エンジンソフトウェアのリスト」

  そこで,日本で最も著名であり,かつ,高速検索が期待できるインデックス作成タイプの全文検索システム「Namazu」に挑戦してみた次第です。もっとも,レンタルサーバーでは,「Namazu」を自分のパソコンにインストールした後で,サーチエンジンとして,「pnamazu」を使用します。

  また,自前サーバーならいざ知らず,私のようにレンタルサーバーで「pnamazu」を使えるようにするには色々な手順が必要です。そして,そのサーバーがCGIを使える環境を提供している必要があります。

  幸い,私が使用しているレンタルサーバー「iswebベーシック」は容量300Mと大容量で,しかもCGIも使える環境を提供しています。※レンタル料も年額6,300円と非常に安価です。

  因みに,インストール時の,私の使用OSはWindows XP Professional,使用しているパソコンはSONYのVIOノートPCG-FX55J/Bです。また,書籍は,馬場肇氏の「改訂 Namazuシステムの構築と活用」を参考にしました。

grepタイプと全文検索システム(インデックス作成タイプ)との違い

grepタイプ〜全文を先頭から末尾まで走査して,適合部分を見つけ出す方法。検索対象テキストの最初から最後までを最低1回は読まなければならないため,高速性は期待できない。総じて,プロバイダでの個人サイト向け。

全文検索システム(インデックス作成タイプ)〜コンテンツに対してあらかじめインデックスを作成しておき, Web ブラウザ経由の検索要求に対して CGIがその度にインデックスを直接検索して結果を返すタイプ。高速性が期待できる。現在ではこのタイプが主流になっています。
Namazuのインストール
   WindowsでNamazuを使用するには,Namazu本体以外に次のツールが必要です。しかも,これらはNamazuをインストールする前に,先にインストールしておく必要があります。インストールは
ActivePerl→KAKASI→Namazuの順です。この手順を間違えると最初からやり直さなければいけないので注意して下さい。

Perl   :バージョン5.004以上が必要
              →入手先 ActivePerl-5.6.1.633-MSWin32-x86.msi
KAKASI :日本語分かち書きのためのツール
              →入手先 kakasi-2.3.4.zip
Namzu  :Windows用Namazu
              →入手先 Namazu 2.0.12 for Win32
 
@ActivePerlのインストール
 

 ダウンロードしたファイルをExplorerなどからダブルクリックすると,インストーラが立ち上がるので,手順に従ってインストール。インストールされるディレクトリはデフォルトのC:\Perlのままにしておく。
※インストール進行中,オプションの選択画面では4つのチェック項目の内,上2つにチェックを入れておく。
 インストール後,Perlの実行ディレクトリにPATHを通す必要があります。
XPでは「マイコンピュータ→コントロールパネル→システム→詳細設定→環境変数」と開き,ユーザ環境変数の新規をクリックして,変数名に「Path」,変数値に「C:\perl\bin;%Path%」と入力する。
ここが間違いやすい!「C:\perl\bin;%Path%」は「C:¥perl¥bin;%Path%」です。binと%の間に「;」を入れる。
 MS-DOSプロンプトを立ち上げ,「perl -v」と入力。画面が正常に表示されればインストール完了です。
※MS-DOSプロンプトは,スタート→すべてのプログラム→アクセサリ→コマンドプロンプトで開きます。

AKAKASIのインストール
   ZIP形式のアーカイブを展開。KAKASIディレクトリが作成されるので,これをExplorerなどを使ってC:\の直下にコピーする。
 KAKASIの実行ディレクトリにPATHを通す。ActivePerlの時と同じく,システム環境変数,新規で変数名「Path」,変数値「C:\kakasi\bin;%Path%」と入力する。
ここが間違いやすい! ※binと%との間の「;」も忘れずに!
 MS-DOSプロンプトを立ち上げ,「kakasi -h」と入力,画面が正常に表示されればインストール完了です。
ここで,パソコンを再起動して,システム設定変更を反映させて下さい。ようするに,再起動するだけです。
BNamazuのインストール
   再起動後に,ダウンロードしたnmz2012.exeをダブルクリックする。ダイヤログボックスが開くので,展開先フォルダはC:\のままにしてインストールする。
 DOSプロンプトが表示され,「Do you wish to proceed?」と聞かれるので「Y」と入力する。後の質問も殆ど「Y」で間違いないようです。 ファイルはC:\namazu以下にインストールされます。
インストールが済みましたら,再度,パソコンを再起動して下さい。
 再起動後,MS-DOSプロンプトを立ち上げ,「mknmz」と入力,画面が正常に表示されればインストール完了です。
  ▲Page Top
pnamazuの導入
   Perl版(pnamazu)はバージョン2.0xのアーカイブには入っていません。プロバイダのホームページでPerl版を使いたい場合は以下のリンク(Perl版の作者古川令さんのページ)からダウンロードして下さい。
 → pnamazuの入手先
pnamazu.cgiの最新バージョンはpnamazu-2002.11.16です。

 ダウンロード,解凍したら,名前を「pnamazu.cgi」から「namazu.cgi」に変更して下さい。名前を変更した「namazu.cgi」を秀丸などのエディタで開き,Perlのパスをサーバーに合わせて,
「#!usr/local/bin/perl」,「#!usr/bin/perl」などのように書き換えます。
 書き換えが終了したらサーバーの指定するCGIが使えるサイトにアップロードします。例えば
「cgi-bin」や「user-cgi」など。アップロード後,パーミッションは「755」に変更して下さい。
 次に,C:\namazu\etc\namazuにある「namazurc」を同じディレクトリにアップロードして下さい。パーミッションの変更は必要ないです。
ここが間違いやすい! ただし,このままではURLが正しく表示されませんので,「namazurc」をエディタで開き,次の様に変更して下さい。

Index home/public_html/namazu ※namazu.cgiがおいてあるディレクトリの指定
#Template C:\namazu\share\namazu\template
Replace /C\|/homepage/ http://www.foo.bar.jp/~foo/ ※homepageの箇所は,あなたのパソコン内にのアップロードしたファイルがあるディレクトリ,http://以下はあなたのURLを記入。
#Logging off Lang ja_JP.SJIS
#Scoring tfidf
EmphasisTags "<strong class=\"keyword\">" "</strong>"

以下は私の例です,ご参考までに。
Index cgi-bin/namazu ※cgi-binディレクトリにnamazu.cgiをおいています。
#Template C:\namazu\share\namazu\template
Replace /D\|/tko/ http://tko.web.infoseek.co.jp/ 
※D:\tko以下にアップロードしたホームページのファイルを格納しています。そして,次にhttp://以下に私のURLを記入しています。
#Logging off Lang ja_JP.SJIS
#Scoring tfidf
EmphasisTags "<strong class=\"keyword\">" "</strong>"

  これで「pnamazu」を使用できる環境ができました。

なお,「pnamzu」を使うにはインデックスを作成する必要があります。
MS-DOSプロンプトから次のように入力して下さい。

  mknmz -O c:\namazu\var\namazu\index c:\**: ※c:\***はあなたがインデックスを作りたいディレクトリです。あなたがd:\以下にインデックスを作りたいファイルを格納されているのでしたら,私のように mknmz -O c:\namazu\var\namazu\index d:\tkoなどのように指定して下さい。

c:\namazu\var\namazu\indexはc:\namazu\var\namazu\tkoなど,ディレクトリはc:\namazu\var\namazu以下に色々作成できます。ホームページを多数作成している方はお試し下さい。

ここが間違いやすい! mknmz -OのOは数字の0ではありません。ローマ字の大文字Oです。私もだいぶ間違えました,数字の0とローマ字の大文字O,見分けがつきにくいですね!

 C:\namazu\var\namazu\index以下にできた総てのNMZファイルを,先にアップロードしたCGIディレクトリにそのままアップロードして下さい。
※私の場合,c:\namazu\var\namazu\tko以下にできたNMZファイル総てをcgiが使える<cgi-bin>以下のディレクトリにアップロードしています。

 インターネットを立ち上げ,アドレスにhttp://tko.web.infoseek.co.jp/cgi-bin/namazu.cgiと入力すると全文検索システム「Namazu」が表示されます。
このURLをあなたのホームページに設置すればサーチエンジンが使用できるようになります。

最後に,NMZ.head.jaNNZ.result.normal.jaNMZ.foot.jaをカスタマイズすることにより検索画面を変更する事ができます。※上述の「改訂 Namazuシステムの構築と活用」に詳しく載っていますので参考にして下さい。
 また,検索窓の変更なども自由にカスタマイズできます。下記の「Namazu(Perl版)設置ノウハウ」に詳しく説明されていますので,参考にして下さい。
関連リンク
  ・全文検索システム Namazu
・全文検索システム Namazu for Win32
・namazu 検索プログラム perl 版 (pnamazu) 説明書
・Namazu(Perl版)設置ノウハウ
検索エンジン「namazu」のCGIモジュールにぜい弱性に関する件
 

Namazu Projectは12月15日,オープンソースの日本語語全文検索ソフトウエアnamazuのCGIモジュール「namazu.cgi」に,クロスサイト・スクリプティングのセキュリティ・ホールがあることを公表した。影響を受けるのはNamazu 2.0.13以前(2.0.13を含む)に含まれるnamazu.cgi。対策は,最新版2.0.14にバージョン・アップすることなど。
 クロスサイト・スクリプティングとは,攻撃者が,自分のサイトではなく第三者のWebサーバーまたはWebアプリケーションを介して,他のユーザーに悪意あるスクリプトなどを送り込める問題。複数のサイトを経由していることからクロスサイトと呼ばれる。これによりCookieを盗まれたり,サイトを偽装されフィッシングに悪用されたりする恐れがある。
 namazu.cgiではクロスサイト・スクリプティング対策として,入力データに含まれるスクリプトを無効化(サイニタイジング)する処理を行っている。しかし今回,タブ文字(%09)から始まる検索文字列を指定すると,検索文字列がサニタイズされなくなり,クロスサイト・スクリプティングが実行されてしまうことが判明した。
  最新版Namazu 2.0.14は,Namazu Projectのサイトからダウンロードできる。また同プロジェクトのサイトでは,タブ文字を無効化するスクリプトを紹介している。namazu.cgiの代わりにこのスクリプトを使うことも回避策になる。

追伸
  「日本語語全文検索ソフトウエアNamazu」はWindows Vista,7環境下でも使用可能です。
 

「Namazu検索システム」を利用した作者拙作のホームページ

 
return