|目次|手順 0|1|2|3|A|B|C|D|E|F|G|H| I |J|K|L|M|N|O|P|Q|
作成日:2003年02月07日、更新日:2006年02月11日 作成:鷹の巣自宅サーバーに全文検索システムを導入した経過とNamazu for Win32を導入した時の覚書です。
Windows 2000の自宅WWWサーバー(AN HTTPD)において、自サイト内の文書を検索可能にしました。検索システムには、応答が良好でインストールが極めて簡単な全文検索システム Namazu for Win32を導入しました。インストールは、参考になるページを見て、設定を行いました。有用なフリーソフトと設定Webページをご提供して頂き、ありがとうございました。このWebページでは、インストールや検証方法以外での追加事項を主に説明していますので、補足的に読んで下さい。
目次
私のサイトは、サイト開設当初、何も考えずに、ご訪問客帳(ゲストブック)と自宅サーバー掲示板とを設置しました。そして、そのまま現在に至っております。しかし現在、前者の掲示板は、私個人との会話用であるのに対して、後者の掲示板が嬉しいことに、ご投稿数が1000を越えFAQ形式に近いものとなりました。これを何とか検索できるようにし、再利用を可能にするため、全文検索システムを導入しました。
以下は、私が行った全文検索システムの経過と、導入の検討に当たって読んだ参考URLと、導入後に行った内容について、説明しています。
この方法は、検索エンジンサイトに自サイト内の文書検索を行ってもらう方法です。貴方のサイトが自宅サーバーで、自分のドメイン名のURL(http://www.example.com/)やダイナミックDNSのサブドメイン名のURL(http://example.hn.org/)の様な形であれば、Googleのsite検索が使用出来ます。サイト単位ですから、サイト内のディレクトリや~(チルダ)を含んだユーザディレクトリは、対象外となります。詳細は、結城浩さんのサイト内の検索にGoogle.comを使う方法をご参照下さい。以下に設置した例を示しましたので、「当サイト内検索」ボタンを試しに押してみて下さい。1ヶ月以内の最新の内容の検索は、できませんが十分使用出来るはずです。
ただし、確実に自サイトのWebページをロボットに収集してもらわなければなりません。Web マスターのための Google情報などを1つの基準として、1ページあたりのリンク数は100未満のロボット(クローラ)用のリンクページを作成し、トップページから階層的にリンクさせる必要があります。尚、作成したリンクページは、Perlが使用出来る環境にあるのなら、検索エンジンへのURL自動登録用Perlスクリプト(IO::Socketモジュール使用)を起動して、一気に登録します。
前項の方法では、Googleのロボット(クローラ)が、Webデータを収集することが前提になります。Google以外のロボット(クローラ)でも同じですが、今回、目的とする掲示板などのCGIが作成する動的なWebデータは、一般的には収集されません。
私の使用している掲示板は、KENT WEBさんのWeb ForumのCGIでURLは、
http://www.example.com/cgi/bbs/wforum.cgi?mode=allread&no=XXXX&page=0
というような形になっています。Windowsで言う拡張子が「.cgi」になっていたり、「?」の右に引数(ひきすう)注)1があると、クローラは、出口の見当たらないクローラトラップ(罠)に入らないようにこのURLを読まないようです。従って、クローラにCGIデータを収集してもらう様にするため、以下の何れかの対策を行う必要があります。
CGIのデータをあらかじめ、HTMLファイルに変換し、静的なHTMLファイルにする。勿論、静的なクローラ用HTMLファイルより各HTMLファイルに対して、全てリンクを書く必要があります。注)2
Webサーバーのデフォルトファイル名のindex.htmlにindex.cgiを加えて、CGIの出力するURLを
http://www.example.com/cgi/bbs/XXXX/
とするようにCGIを改造する。(動的にディレクトリURLを出力)
ApacheのようなオープンソースのWebサーバーでしたら、mod_rewriteモジュールを使用したり、ソースを改造して、CGIのURLを
http://www.example.com/cgi/bbs/XXXX.html
に書き換える。(動的にHTMLファイルのURLを出力)注)3
上記の項a以外は、ロボット(クローラ)やロボット検索からアクセスする人は、必ずCGIでの処理になり、サーバーに負担をかけることになります。また、項のbとcについては、クローラを終わりのないトラップ(罠)にはめたり、同じURLを何度も収集させることになったりします。もともと、クローラが収集を嫌がっているのですから、お薦めできません。自宅サーバーでしたら、Web容量はGbyte単位のはずですから、迷うことなく項aを選択しましょう。もし私と同じ掲示板をご使用でしたら、「質問A902.KENT WEBさんの掲示板(WEB FORUM)の過去ログファイルから、htmlファイルを作成するには?」をご参照の上、ダウンロードしてご使用願います。
検索エンジンサイトに自サイト内の文書検索を行ってもらう方法で述べましたが、この方法の欠点は、1ヶ月以内に作成された最新の文書が検索できないことです。また、全ての文書が登録され検索できるという検証が困難なことです。文書が増えるに従って、やはり自サイト専用の全文検索システムを導入することにしました。Windows 2000の自宅WWWサーバー(AN HTTPD)での全文検索システム用ソフトウェアの検討と選定にあたっては、以下のサイトを参考にしました。
結局、Perlで書かれた「とほほのWWW入門」さんの「WwwSearch利用メモ」とC言語で書かれた「全文検索システムNamazu for Win32」が残り、最終的には、Namazu for Win32にしました。
Namazu 2.0.14 for Win32 (β版) は、Active perl 5.8に対応し、Webページの文字コードがUTF-8でも索引の作成ができる様になりました。また、MSIパッケージ化され、インストールが驚くほど簡単になりました。
ところで、Namazuは、普通に設定しますと、Webサーバーから、http://www.example.com/cgi-bin/Namazu.cgi.exeというWindowsの実行ファイル形式で実行しなければなりませんので、セキュリティ上、そのまま使用することは、危険だと判断しました。従って、Namazu.cgi.exeというファイル名をNamazu.ccgiというファイル名に変更し、これを実行ファイルとして実行するように設定しました。(AN HTTPDでは、「一般」タブの拡張子の「.exe」を「.ccgi」に変更するだけ)
導入した結果論ですが、「全文検索システムNamazu for Win32」とインデックスキーを作成する「わかち書き」用辞書の「kakashi」のインストールは、極めて簡単であり、応答も極めて良好で満足のいくものでした。並びかえられたインデックスキーを2分検索(Binary Search)するわけですから、インデックスキーが2倍の量になったとしても、今後も応答速度の低下は、体感できないでしょう。
インストールについては、「全文検索システムNamazu for Win32」のサイトの参考になるページを見て、設定を行いました。有用なフリーソフトと設定Webページをご提供して頂き、ありがとうございました。同じことを書いてもムダですので、上記のサイトを読んでインストールして検証して頂きたいのですが、このWebページでは、簡単なインストールの流れと私が変更したり、追加した事項を中心に説明します。
ダウンロード
ActivePerl 5.8.6.811は、既にインストール済で、かつ動作検証済であるということを前提としています。「全文検索システム Namazu for Win32」のサイトの「ダウンロード」の項から、「nmz2014beta.exe(1,480,992 byte)」をダウンロードします。また、「必要なソフト」の項から、「kakasi-2.3.4.zip (約 1,058KB)」をダウンロードします。(2005年2月2日現在)
ダウンロードしたファイルの解凍とインストール
ダウンロードした「kakasi」をシステムドライブ以外のDドライブのルートであるD:\にて解凍します。するとD:\kakashiという場所にフォルダが生成されます。異なった場所に解凍した場合は、このフォルダに移動させて下さい。
また、ダウンロードした「Namazu」をシステムドライブ以外のDドライブのルートであるD:\にて解凍実行します。するとD:\namazuという場所にフォルダが生成され、インストールされます。インストール時には、Cドライブとなっているドライブを全てDドライブに変更します。
環境変数の確認と変更
Windows 2000では、デスクトップの「マイコンピュータ」というアイコンを右クリックして、「プロパティ」を左クリックし、「詳細設定」タブの「環境変数」ボタンをから、環境変数の設定と変更が出来ます。
| 環境変数 | 値 | 備考 |
|---|---|---|
| HOME | D:\namazu | 追加して作成しなければならなかった。 |
| ITAIJIDICTPATH | D:\kakasi\share\kakasi\itaijidict | システムドライブのCになっていたので、変更した。 |
| KANWADICTPATH | D:\kakasi\share\kakasi\kanwadict | 同上。 |
| LANG | ja_JP.SJIS | - |
| MKNMZRC | D:\namazu\etc\namazu\mknmzrc | - |
| NAMAZULOCALEDIR | D:\namazu\share\locale | - |
| NAMAZURC | D:\namazu\etc\namazu\namazurc | - |
| Path | D:\namazu\bin;D:\Perl\bin\;C:\WINNT;他 | D:\namazu\bin;というパスが追加されていることを確認のこと。 |
CGIで実行するための追加作業
下表に、インターネットWebサーバーとnamazuのフォルダ配置例を示します。WebサーバーがAN HTTPDの場合は、セキュリティと応答速度を意識したWWWサーバー(AN HTTPD)設定例も合わせてご参照願います。
追加作業は、「D:\namazu\share\namazu\template.jp」というフォルダを作成して、templateフォルダより、拡張子が「.ja」のファイルをコピーすることと、実行パス下に「namazu.ccgi」を設置するだけです。WebサーバーがAN HTTPDの場合は、「一般」タブの拡張子の「.exe」を「.ccgi」に変更して、拡張子「.ccgi」が実行ファイルとして実行可能にして下さい。「--self--」で実行することになります。
| 番号 | WebページのURL(URI)他 | 主たるファイルのローカルパス |
|---|---|---|
| 1 | (AN HTTPDをD:\www\httpdにインストール) | D:\www\httpd\httpd.exe |
| 2 | (Active PerlをD:\Perlにインストール) | D:\Perl\bin\perl.exe |
| 3 | (kakasiをD:\kakasiにインストール) | D:\kakasi\share\kakasi\kanwadict |
| 4 | (namazuをD:\namazuにインストール) | D:\namazu\libexec\namazu.cgi.exe |
| 5 | (namazuの検索結果表示用テンプレート画面用初期フォルダ) | D:\namazu\share\namazu\template |
| 6 | (同上から、拡張子が「.ja」のファイルをコピーしたフォルダを作成) | D:\namazu\share\namazu\template.jp |
| 7 | http://www.example.com/index.html | D:\www\public_html\index.html |
| 8 | http://www.example.com/cgi/namazu.ccgi | D:\www\cgi-bin\namazu.ccgi |
(2006.02.11追記)PDFファイルをインデックスに追加する作業
PDFを検索対象にとYet Another Namazu セットアップメモ□pdfを参考に設定を行いました。
#----- begin Japanese support package (2004-jul-27) cidToUnicode Adobe-Japan1 D:/namazu/bin/japanese/Adobe-Japan1.cidToUnicode unicodeMap ISO-2022-JP D:/namazu/bin/japanese/ISO-2022-JP.unicodeMap unicodeMap EUC-JP D:/namazu/bin/japanese/EUC-JP.unicodeMap unicodeMap Shift-JIS D:/namazu/bin/japanese/Shift-JIS.unicodeMap cMapDir Adobe-Japan1 D:/namazu/bin/japanese/CMap toUnicodeDir D:/namazu/bin/japanese/CMap #displayCIDFontTT Adobe-Japan1 /usr/..../kochi-mincho.ttf #----- end Japanese support packageここで、指定するパスは、絶対パスでなければなりません。絶対パスの「D:/namazu/bin/japanese/」を相対パスの「./japanese/」と書いていると、パスワードなしのPDFファイルでも「Unable to convert pdf file (maybe copying protection)」というエラーが発生したり、「未対応の形式 (application/pdf)無視します」というエラーが発生して、namazuのインデックスの作成に失敗します。
(2006.02.11追記)AUTO CADのJWGファイルをインデックスに追加する作業
詳細は、ダウンロードした同梱のreadme.txtに掲載されていました。
大規模な検索エンジンと同様にnamazuもあらかじめ索引(インデックス)を作成します。簡単に言いますと、この索引は検索対象文書の検索語となる単語1つ1つに対して、どの文書に何語使用されているかを記録したデータです。日本語の検索対象文書は、英語等の単語と単語の間が半角スペース等で区切られている文書と同様に処理するために、分かち書き(単語と単語の間に半角スペース等の区切り符号を挿入)という処理が必要になります。
ユーザーがnamazuで検索する場合は、上記の索引(インデックス)にアクセスして、その結果と検索対象となる文書へのリンクを表示します。Webサーバーで検索サービスを提供するのに必要なファイルは、本例では、検索エンジン[ namazu.cgi.exe ]とその環境設定ファイル[ D:\namazu\etc\namazu\namazurc ]と索引(検索結果表示用HTMLファイルを含む)ファイルだけです。従って、クライアント機にサーバー側と同じ文書が存在する場合は、クライアント機で索引(インデックス)ファイルを作成することも出来ます。
前項のフォルダ配置例で、
namazuの索引(インデックス)作成用環境設定ファイル[ D:\namazu\etc\namazu\mknmzrc ]
と
検索エンジンnamazu用環境設定ファイル[ D:\namazu\etc\namazu\namazurc ]
の基本設定ファイルの変更を行います。下記に私の行った設定例を示します。
索引(インデックス)作成コマンド(mknmz.bat)用環境設定ファイル(mknmzrc)の編集
(2004年06月15日 追記)$ADDRESSは、必ず変更して下さい。ここを変更しないと、文書数やキーワード数やインデックスの最終更新日が更新されません。
namazuの索引(インデックス)作成用環境設定ファイル[ D:\namazu\etc\namazu\mknmzrc ]
のコメント部分を省略した内容(初期状態は、同じフォルダ内のmknmzrc-sample.win32と同じ内容)
package conf; # Don't remove this line! # $ADDRESS = 'webmaster@foo.bar.jp'; $ADDRESS = 'webmaster@example.com'; # <--- 必ずサイト管理者のメールアドレスを記載して下さい。2004.06.15 追記。 # $HTML_SUFFIX = "html?|[ps]html|html\\.[a-z]{2}"; # $ALLOW_FILE = ".*\\.(?:$HTML_SUFFIX)|.*\\.txt" . # HTML, plain text # "|.*\\.gz|.*\\.Z|.*\\.bz2" . # Compressed files # "|.*\\.pdf|.*\\.ps" . # PDF, PostScript # "|.*\\.tex|.*\\.dvi" . # TeX, DVI # "|.*\\.rpm|.*\\.deb" . # RPM, DEB # "|.*\\.doc|.*\\.xls|.*\\.ppt" . # Word, Excel, PowerPoint # "|.*\\.j[sabf]w|.*\\.jtd" . # Ichitaro 4, 5, 6, 7, 8 # "|\\d+|[-\\w]+\\.[1-9n]"; # Mail/News, man # $DENY_FILE = ".*\\.(gif|png|jpg|jpeg)|.*\\.tar\\.gz|core|.*\\.bak|.*~|\\..*|\x23.*"; # $EXCLUDE_PATH = undef; # $DIRECTORY_INDEX = ""; # $REMAIN_HEADER = "From|Date|Message-ID"; # $SEARCH_FIELD = "message-id|subject|from|date|uri|newsgroups|to|summary|size"; # $META_TAGS = "keywords|description"; # %FIELD_ALIASES = ('title' => 'subject', 'author' => 'from'); # $NON_SEPARATION_ELEMENTS = 'A|TT|CODE|SAMP|KBD|VAR|B|STRONG|I|EM|CITE|FONT|U|'. # 'STRIKE|BIG|SMALL|DFN|ABBR|ACRONYM|Q|SUB|SUP|SPAN|BDO'; # $ON_MEMORY_MAX = 5000000; # $FILE_SIZE_MAX = 2000000; # $TEXT_SIZE_MAX = 600000; # $WORD_LENG_MAX = 128; # %Weight = # ( # 'html' => { # 'title' => 16, # 'h1' => 8, # 'h2' => 7, # 'h3' => 6, # 'h4' => 5, # 'h5' => 4, # 'h6' => 3, # 'a' => 4, # 'strong' => 2, # 'em' => 2, # 'kbd' => 2, # 'samp' => 2, # 'var' => 2, # 'code' => 2, # 'cite' => 2, # 'abbr' => 2, # 'acronym'=> 2, # 'dfn' => 2, # }, # 'metakey' => 32, # for <meta name="keywords" content="foo bar"> # 'headers' => 8, # for Mail/News' headers # ); # $INVALID_LENG = 128; # $MAX_FIELD_LENGTH = 200; # $NKF = "module_nkf"; # $KAKASI = "module_kakasi -ieuc -oeuc -w"; # $CHASEN = "chasen -j -F '\%m '"; # $CHASEN_NOUN = "chasen -j -F '\%m %H\\n'"; # $WAKATI = $KAKASI; $LIBDIR = 'D:/namazu/share/namazu/pl'; $FILTERDIR = 'D:/namazu/share/namazu/filter'; $TEMPLATEDIR = 'D:/namazu/share/namazu/template.jp'; # <--- 注1
注1.インデックス作成時、このフォルダ内のテンプレート用ファイルにインデックス作成日やインデックス文書数などが埋め込まれて、検索結果表示用HTMLファイルの一部が作成されます。
このファイルは、基本的に$ADDRESS以外は、そのまま使用しても構わないようで、多分何も変更しなければ、コメントになっている内容通りの設定になっていると考えます。念のため、赤字の部分の#を消して、再定義しました。再定義した変数は、$ON_MEMORY_MAXと$FILE_SIZE_MAXと$TEXT_SIZE_MAXと$WORD_LENG_MAXと$INVALID_LENGと$MAX_FIELD_LENGTHと$KAKASIと$WAKATIです。
検索エンジンnamazu用環境設定ファイル(namazurc)の編集
検索エンジンnamazu用環境設定ファイル[ D:\namazu\etc\namazu\namazurc ]
のコメント部分を省略した内容(初期状態は、同じフォルダ内のnamazurc-sample.win32と同じ内容)
Index D:\namazu\var\namazu\index #Template D:\namazu\share\namazu\template # ↓ 文書数やキーワード数や更新日を表示する場合、上記のIndexやNamazuMakeKey.batで作成した索引を指定すること。←2004年06月15日 追記 Template D:\namazu\var\namazu\index\past ←2004年06月15日 追記 #Replace /home/foo/public_html/ http://www.foo.bar.jp/~foo/ /D\|/WWW/public_html/ / #Logging off Lang ja_JP.SJIS #Scoring tfidf #EmphasisTags "<strong class=\"keyword\">" "</strong>" #MaxHit 10000 #MaxMatch 1000 #ContentType "text/x-hdml"
赤字の部分の#を消して、赤字の部分の変更を行いました。再定義した変数は、TemplateとReplaceとEmphasisTagsとMaxHitとMaxMatchです。バーチャルホストを使用していないWebサーバーでは、Replaceで定義するHTMLファイルのドキュメントルートは、「/」と書くだけで良いです。
namazuで検索した結果で表示されるHTMLファイルは、この環境設定ファイルのTemplateで設定したフォルダにあるファイルです。
追加作業は、「D:\namazu\share\namazu\template.jp」というフォルダを作成して、templateフォルダより、拡張子が「.ja」のファイルをコピーすることと、WWWサーバーの実行パス下に「namazu.ccgi」を設置するだけです。WebサーバーがAN HTTPDの場合は、「一般」タブの拡張子の「.exe」を「.ccgi」に変更して、拡張子「.ccgi」が実行ファイルとして実行可能にして下さい。「--self--」で実行することになります。
| 番号 | WebページのURL(URI)他 | 主たるファイルのローカルパス | 備考 |
|---|---|---|---|
| 1 | (D:\namazuにインストールしたインデックスフォルダ) | D:\namazu\ver\namazu\index | 索引(インデックス)用フォルダ |
| 2 | Webデータ用の検索キーを格納するフォルダ | D:\namazu\ver\namazu\index\web | Webページの索引用フォルダ |
| 3 | 掲示板過去ログ用の検索キーを格納するフォルダ | D:\namazu\ver\namazu\index\past | 掲示板過去ログの索引用フォルダ |
| 4 | http://www.example.com/index.html | D:\www\public_html\index.html | Webページとして検索対象にする。 |
| 5 | http://www.example.com/img/baner.gif | D:\www\public_html\img\baner.gif | 検索対象にしない。 |
| 6 | http://www.example.com/BBS/BBSXX.html | D:\www\public_html\BBS\BBSXX.html | 過去ログとして検索対象にする。 |
| 7 | http://www.example.com/temp/OldFile.html | D:\www\public_html\temp\OldFile.html | 検索対象にしない。 |
| 8 | http://www.example.com/cgi/namazu.ccgi | D:\www\cgi-bin\namazu.ccgi | 検索CGI実行ファイル本体。 |
上記のフォルダ配置例で、下記に私の作成したバッチファイルを紹介します。このバッチファイルは、どこに設置しても動作します。勿論、デスクトップに設置しても可能です。
NamazuMakeKey.batの内容
@echo off D: cd \www\cgi-bin\bbs echo ***過去ログHTMLファイルを生成します。*** perl PastList.pl echo . echo ***生成した過去ログHTMLファイルをドキュメントルート下のフォルダにコピーします。*** xcopy D:\www\cgi-bin\bbs\past D:\www\public_html\BBS /D /E /V /Q /Y del D:\www\public_html\BBS\*.cgi /Q echo . echo ***namazuの検索キーを更新します。*** call mknmz -O D:\namazu\var\namazu\index\past D:\WWW\public_html\BBS call mknmz -O D:\namazu\var\namazu\index\pub D:\WWW\public_html --exclude="(img|temp|BBS)" echo . pause 処理がすべて終了しました。
検索画面の変更は、今までのフォルダ配置例と設定ファイルでは、D:\namazu\share\namazu\template.jpフォルダ内のファイルを編集して行います。ファイルの編集には、EUC(拡張UNIXコード)で編集しなければなりませんので、注意して下さい。多機能な新しいソフトをインストールして、操作を覚えたくない方には、Windows 95/98/Me/NT4.0/2000/XPに対応しているメモ帳++で、直接編集されることをお薦めします。
下記のテンプレートファイルは、Webページ検索と掲示板の過去ログ検索に対応した私のサイトで使用しているHTML4.01strict形式のファイルです。
NMZ.head.ja(全ての画面のヘッダ部分です。変更箇所:掲示板の過去ログの別検索とGoogleのサイト内検索を追加。)
Namazu による全文検索システム最新の内容の検索は、できませんがGoogleでも当サイトの文書(****文書)が検索できます。 現在、<!-- FILE --> 0 <!-- FILE --> の文書がインデックス化され、 <!-- KEY --> 0 <!-- KEY --> 個のキーワードが登録されています。 インデックスの最終更新日: <!-- DATE --> date <!-- DATE --> |
NMZ.body.ja(検索式の説明部分です。変更箇所:説明部分を字下げ。)
検索式単一単語検索
AND検索
OR検索
NOT検索
グループ化
フレイズ検索
部分一致検索
正規表現検索
フィールド指定の検索
特記事項
|
NMZ.tips.ja(検索のコツ表示部分です。変更箇所:文法上の書式変更。)
検索のコツ検索がうまくいかないときは、次の点を確認してください。
|
NMZ.result.normal.ja(検索結果の「標準」表示部分です。変更箇所:日付と著作表示を消去。)
|
NMZ.result.short.ja(検索結果の「簡易」表示部分です。変更箇所:文法上の書式変更。)
|
NMZ.foot.ja(全ての画面のフッタ部分です。変更箇所:文法上の書式変更。)
|
この全文検索システムはNamazu v2.0.14 によって構築されています。 webmaster@example.com |
上記のテンプレートファイルで宜しければ、Namazu 2.0.14 for Win32用のテンプレートファイルRev.1.03をダウンロードして、ご使用して下さい。この圧縮ファイルには、説明書(README.txt)とHTML4.01strictとXHTML1.0strict形式の2種類のテンプレートファイルとおまけ(Shift_JISコードのNamazu.html)が含まれます。HTMLファイルの文法検査は、Another HTML-lint gatewayにて確認しました。
ちょっと戸惑うかもしれませんが、テンプレートファイルは、EUC(拡張UNIXコード)で書きますが、namazu.cgi.exe が出力するHTMLファイルのコードは、Shift_JISコードだということです。
これが原因でブラウザが誤動作するとは思えないので、気にならない場合は、XHTML1.0strict をご使用下さい。
この解凍したテンプレートフォルダNamazuTemplate103をX:\namazu\share\namazuに移動し、namazuの索引(インデックス)作成用環境設定ファイル[ D:\namazu\etc\namazu\mknmzrc ]の下記の行を
#Template D:\namazu\share\namazu\template
Template D:\namazu\share\namazu\NamazuTemplate103\templateHTML401
と変更すれば、テンプレートの追加設定は、終了します。
本例では、NamazuMakeKey.batによるインデックス作成時、このtemplateHTML401というフォルダ内のテンプレートファイルにインデックス作成日やインデックス文書数などが埋め込まれて、D:\namazu\var\namazu\index\pastのフォルダ内に検索結果表示用テンプレートファイルが作成されます。
Webページへnamazuの検索窓を設置する場合、通常のnamazu検索画面の様な配置では場所をとるため、簡易的な検索にならざるをえません。基本的には、以下の様な「検索キーの入力欄」と「検索の実行ボタン」の2点にして、そのinputタグのほとんどは、hidden属性にすることになります。
Webページのnamazuの検索窓のタグ
<!--Namazu による全文検索システム-->
<form action="/cgi-bin/namazu.ccgi" method="get">
<p>
<a href="http://www.namazu.org/"><strong>Namazu:</strong></a>
<input name="query" value="123" size="30" accessKey="T" tabIndex="10">
<input type="hidden" name="whence" value="0">
<input type="hidden" name="max" value="20">
<input type="hidden" name="result" value="normal">
<input type="hidden" name="sort" value="score">
<input type="hidden" name="idxname" value="pub,past"> 注)
<input type="submit" value="検索" accessKey="S" tabIndex="11">
[<a href="/cgi-bin/namazu.ccgi">説明</a>]
</p>
</form>
注)<input type="hidden" name="idxname" value="pub">
<input type="hidden" name="idxname" value="past">
という様に2行に分けて書くと文法エラーになります。
上記の検索ボタンを押しますと、
として、検索が実行され、URLは以下の様になって結果が表示されます。
http://sakaguch.com/cgi/namazu.ccgi?query=123&whence=0&max=20&result=normal&sort=score&idxname=pub&idxname=past
HTMLタグを書く要領がわかれば、簡単ですから、Webページの中にも簡易的なnamazu検索窓を是非、設置しましょう。
当サイトのWebページの文字コードは、UTF-8です。クライアント機にミラーサイトを作成していますので、Namazu 2.0.14を使用して、クライアント機で索引の作成を行っています。ただし、検索する文字コードは、まだUTF-8に対応されていない様なので、Webページの文字コードがUTF-8の場合は、検索文字の文字コード変換Perlスクリプト(Encodeモジュールを使用)の様な文字コードの変換CGIが必要となります。詳細は、Webページの検索文字コードをUTF-8からeuc-jp(Shift_JIS)にする方法をご参照願います。
クライアント機にミラーサイトを作成して、クライアント機で作成した索引データをサーバーにアップロードする場合、サーバー側には、索引データとNamazu 2.0.14 for Win32 (β版) 同梱のnamazu.cgi.exeと検索エンジン用環境設定ファイル(namazurc)だけで検索が可能です。 従って、Namazuが更新されても、索引データの構造に変更がなければ、サーバー側は、namazu.cgi.exeとnamazurcの更新だけで済みます。
全文検索システムの導入を検討し始めたのは、Webページの文書の量が50ページ以上になった2001年末頃から、考えていました。(掲示板のデータの検索の方は、全く考慮していませんでした。)この時点で考えていた検索システムは、Perlで書かれた「とほほのWWW入門」さんの「WwwSearch」でした。この時点の状況は、
でした。(WwwSearchに決めていた理由は、NamazuのCGIが拡張子が「.exe」の実行ファイルであったからです。セキュリティ上から、インターネットWebサーバーへの導入が、ためらわれました。)
2002年10月よりLAN内でのみの実験運用を行い、2003年1月28日に、「鷹の巣」の自宅サーバーに「全文検索システム Namazu for Win32」を導入しました。この時点の状況は、
でした。もし、私のサイトの掲示板がこんなにも利用されなかったら、私はPerlで書かれたWwwSearchを何の躊躇もなく導入していたでしょう。しかし、今後もこの調子で掲示板の過去ログが増大して行くと仮定しますと、どうしてもNamazuにしなければなりませんでした。
理屈では、2分検索の素晴らしさをわかっていましたが、改めて再認識しました。今後、掲示板の過去ログが巨大化しても安心です。kakashiも含めて、Namazuは素晴らしい。そして、Namazuの開発者とWindowsサーバーにも移植して頂いた方々と素晴らしく丁寧な導入手順書をWebページに公開して頂いた先達の方々に厚くお礼申し上げます。