オレのオレによるオレのためのNamazu講座

注;現在うちのサイトではセキュリティーからみでNAMAZUを動かしておりません。ご了承のほど。

誰がなんて言おうと、オレさまのオレさまによるオレさまのためのnamazu講座。またの名を、備忘録兼勉強。

以下、namazu設置用のURLがいくつか出てきますが、その時の気分で書いています。もし、ご自分のサイトに同様なものを設置する際は、XREAの場合ですと、ユーザIDと、サーバ名を自分のものに変えるのをお忘れなく。



目次(のようなもの)

 

Namazuとは

Namazuとは、非常に高機能な日本語全文検索システムです。

このNamazu、フリーで使えてかつ高機能と言うこともあってXREAではデフォルトで使えるようになっています。が、その詳細な説明はなかったりします。

と言うわけで。自分の日記を検索するためツールとして導入するにあたり、いろいろ調べたことをメモ程度に残しておこうと思います。逆に言えばいろいろ調べたらこれ以上の情報はあっちこっちに眠っていますので、ここで物足りない方は本格的な説明サイト・説明本などを参考にしてください。ある意味、初心者XREAユーザーのみ向けの文章となっています。

準備するもの

  • FTPクライアントソフト(当然持ってるはず)
    e.g. FFFTP、Fetchなど。
  • EUCの編集できるエディタ
    e.g. 秀丸エディタ、Jeditなど。

 

インデックスの作成

もともとXREAはNamazuを使用できる環境にありますので、特にインストール作業は必要ではありません。

しかしながら、高速な検索環境を実現するために、Namazuを使用する前にインデックスを作成しておく必要があります。インデックスとは、その名の通り索引のことで、検索対象となっている文書に対し、適当(適切?)なキーワードを設定、それらの出現をまとめたものです(多分。中身見てないのでどんなのかはホントはよく知らない)

というわけで、インデックスの作成です。

ふつうのシステムでは、mknmz(めいくなまず)とか言うコマンドでインデックスを作るらしいのですが、初心者にはムリ!(いや、要するに私本人が初心者な訳で)ということで、XREA support boardからスクリプトを引用しました。

手順
ディレクトリ「/public_html/namazu」を作成します。
下のスクリプトをメモ帳等にコピー。make-index.cgiと名前を付け、先ほど作ったディレクトリnamazuの中にアップロードします。さらに、パーミッションの設定を700としておきます。

#!/bin/sh
echo "Content-type: text/html
< HTML><BODY>
Make index...<HR>
< TEXTAREA COLS=80 ROWS=30>
"
echo 'Index /virtual/userID/namazu' > .namazurc
echo 'Template /virtual/userID/namazu' >> .namazurc
echo 'Replace /virtual/userID/public_html http://userID .s1.xrea.com' >> .namazurc
echo 'Logging on' >> .namazurc
echo 'Lang ja' >> .namazurc
echo 'MaxHit 10000' >> .namazurc
echo 'MaxMatch 1000' >> .namazurc
cp -uf /usr/local/libexec/namazu.cgi ./;chmod 700 *;
cd /virtual/userID/namazu/
/usr/local/bin/mknmz -V --media-type='text/html' --indexing-lang=ja /virtual/userID/public_html/ > /virtual/userID/namazu/make_index.log
cat /virtual/userID/namazu/make_index.log
echo "</TEXTAREA><HR>Finished!! </BODY></HTML>"
exit

アップロードが終了したら、http://userID.s1.xrea.com/namazu/make-index.cgiをアクセスすればインデックスの作成が終了します。

なお、インデックスはその性質上頻繁に更新されるべきものです。更新したい時にはこのmake-index.cgiをアクセスすれば良いわけですが、このままでは誰でもアクセスできる状態ですので.htaccessでパスワードの設定をしておきましょう。

 

.htaccessでのパスワード設定

さて。私、.htaccessの事を殆ど知りません。と、いうわけでこれまたXrea+tDiary+Namazuと、ゴールデンドラゴンの神殿を参考にしつつユーザ認証設定をしていきましょう。ここまで誰に向かって喋ってるんだ、私。

まず、パスワードファイルを用意します。以下のような1文をエディタで作成し、.htpasswdと言う名前で保存します。パスワードはここで暗号化したものを使用しましょう(ひとさまのサイトですが)。

user_name:暗号化したパスワード
(user_nameは自分で決めてね)

.htpasswdを保存し終わったらnamazuディレクトリにアップロードしておきます。さらに、.htaccessファイルとして以下のような文章を入れたテキストファイルを作り、これまたnamazuディレクトリに入れておきましょう。あ、アップロードは.htpasswd、.htaccessともにアスキーモードでないとちゃんと動きません。

< Files make-index.cgi>
AuthName "Please input username and password for make-index"
AuthType Basic
AuthUserFile /virtual/UserID/public_html/namazu/.htpasswd
Require user user_name
< /Files>
< Files ~ "^.(htpasswd|htaccess)$">
deny from all
< /Files>

詳しい説明は省きますが(出来ねーんだろっていうツッコミ不可)、上のような.htaccessファイルを設置することで、前半はmake-index.cgiに対してパスワードを設置、後半はhtpasswd、htaccessにアクセスできないようにしています。

と、ここまでで前準備は完了しました。

 

検索実行

インデックスの作成が終了していれば、public_html/namazuディレクトリにnamazu.cgiが出来ているはずです。これで、http://userID.s1.xrea.com/namazu/namazu.cgiにアクセスすれば検索画面が出てきます。このcgiにアクセスするとデフォルトでは簡単な検索方法についての記載がありますので、それに従って検索してみてください。

が、見た目は地味!

というわけで、カスタマイズの方法を、以下に若干説明しますね。

 

カスタマイズ(テンプレートファイルをいじる)

基本です。王道です。むしろこれしかあり得ません。

上に表示したmake-indexを使うと、namazuディレクトリにテンプレートファイルが生成されます。デフォルトでは表示言語として日本語を選択していますので、表示に用いるテンプレートファイルは以下の6種類という事になります。

  • NMZ.head.ja
  • NMZ.body.ja
  • NMZ.foot.ja
  • NMZ.tips.ja
  • NMZ.result.normal.ja
  • NMZ.result.short.ja

ちなみに、表示言語として英語を選択している場合は上記ファイルに.jaがついていないものをテンプレートファイルとして使用します。

通常、namazu.cgiを呼ぶと、NMZ.head.ja-NMZ.body.ja-NMZ.foot.jaが繋がったファイルでhtmlファイルが出力されます。また、検索の実行結果はNMZ.result.normal.jaあるいはNMZ.result.short.jaを使用しますので、その点を押さえながらテンプレートファイルをいじっていくことになります。

テンプレートファイルは通常のテキストで記述されていますが、EUCで書かれていますので、EUCが編集可能なエディタでないとさっぱり何が書いてあるか分かりません。EUCの編集できるエディタを用意しましょう。

まず、ヘッダをいじりましょう。

検索を実行するコアになる部分です。ここをちゃんとしないと見た目どうこう以前に検索できなくなってしまいますので、手を抜かずに行きましょう。まあ、手抜きしたい人は最初から弄らないでしょうけど。見たら分かるとおり、 strict宣言してあります。実は私、strict htmlは苦手だったりしますが、ここは我慢です。Strictということなので、文字書式等はcssで書けば問題ないんでしょうね。(実際そうなってます)

さて、ファイルをつぶさに見てみると、コメントに囲まれた部分が幾つかあります。

  • < !-- LINK-REV-MADE -->****<!-- LINK-REV-MADE -->
  • < !-- FILE -->**** <!-- FILE -->
  • < !-- KEY -->******<!-- KEY -->
  • < !-- DATE -->*********<!-- DATE -->

等、ですね。これらのコメントで囲まれた部分はインデックスを作成すると自動で変換される部分らしいです。また、これらのコメントは大文字で書かないとちゃんと機能しないという噂です。と言うことを念頭に置きつつ手を入れましょう。

また、cgiが呼ばれた際に変換される文字列として{cgi}があります。この部分にはインデックスを作成した時に出来るcgiファイルへのパスが自動的に挿入されますので、この部分はちゃんとしておきましょう。

さらに、下の方にコメントアウトされた部分がありまして、そこは『検索対象』の文字が見えます。これは一体何かというと、インデックスを作成する際に、オプションとして最初から検索対象別のインデックスを作成する方法があるらしいのです。ええ、あるらしいと書いたところで分かっていただけたかと思いますが、やり方は知りません。勉強不足でごめんなさい。

ヘッダと同様に、ボディー、フッタ、結果も弄りましょう。やり方は全く同じなので略させてもらいます。はっきり言って、ヘッダを弄ったら終わりのようなものです。

 

カスタマイズ(formのみ設置)

邪道ですが、らくちんです。

以下の文章をどっかページの隅っこに入れておきましょう。(Xrea support boardのdayanさんのコードを引用)

< TABLE cellSpacing=0 cellPadding=3 border=0>
<TBODY>
<TR>
<TD><A href="http://sample.s1.xrea.com/namazu/namazu.cgi">高度な検索</A></TD>
<TD>
<FORM action="http://sample.s1.xrea.com/namazu/namazu.cgi">
<INPUT name=query>
<INPUT type=hidden value=0 name=whence>
<INPUT type=hidden value=20 name=max>
<INPUT type=hidden value=normal name=result>
<INPUT type=hidden value=score name=sort>
</FORM>
</TD>
</TR>
</TBODY>
< /TABLE>

結局の所、cgiを呼びに行ってるだけなので、検索結果はNMZ.head.ja-NMZ.results.*.ja-NMZ.tips.ja-NMZ.foot.jaの形で出力されます。このフォーマットにげんなりな方は、やっぱりテンプレートファイルを弄ってください。

 

参考リンク集

なんか、微妙に尻切れトンボ感がありますが、私の文章力ではこの程度が限界です(マジ。というわけで、詳しい話をお知りになりたい方は下のリンクの方を辿ってみてください。何か発見があるでしょう。いや、あるはずです。

それでは皆様。良い検索ライフを!ってどんなやねん。

(順不同・おおくは使用した順)
Namazu official site
http://www.namazu.org/

Xrea support board
http://sb.xrea.com/showthread.php?threadid=4540
http://sb.xrea.com/showthread.php?s=&threadid=4543

Xrea+tDiary+Namazu
http://home2.highway.ne.jp/mutoh/tools/etc/xrea_tdiary_namazu.html

ゴールデンドラゴンの神殿
http://goldendragon.xrea.org/page1.html

パスワード暗号化
http://bluedragon.s3.xrea.com/x/cgi-bin/bpcl/bpcl.cgi

ミケネコのhtaccessリファレンス(認証編)
http://www.mikeneko.ne.jp/~lab/web/htaccess/auth.html

取り敢えずの検索窓
高度な検索

トップへ戻る