このページでは全文検索エンジンNamazuの索引検索結果ページのデザインのカスタマイズについて初心者/ビギナー向けに解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
全文検索システムNamazuの構築

全文検索エンジンとは

Namazuのインストール

Namazuのファイル構成

Apacheによる公開設定

索引作成のための設定

mknmzによる索引の作成

検索出力のための設定

namazu.cgiによる検索の実行

出力デザインのカスタマイズ

Namazu検索窓の設置

Namazuの運用のポイント


Namazuのページ出力の仕組み

もしも Namazu に求めるものが「便利な全文検索機能」だけならばこのままでも良いかもしれませんが、一般に公開する コンテンツ の機能の一部を担わせたいのであれば、少しはページデザインにもこだわりたいところです。

Namazuの検索ページのデザインは、普通テンプレートファイルを修正して行うことになります。

まずはそのテンプレートファイルの意味と役割について少し説明しましょう。

前にも少し触れましたが、 "mknmz" によって "/var/www/namazudata/db/" 以下に出力されるデータの一覧をご覧ください。

[root@web1 ~]# ls /var/www/namazudata/db/Enter lsコマンドについて
NMZ.body.ja    NMZ.field.subject  NMZ.i         NMZ.slog
NMZ.err      NMZ.field.subject.i NMZ.ii        NMZ.status
NMZ.field.date  NMZ.field.summary  NMZ.log        NMZ.t
NMZ.field.date.i NMZ.field.summary.i NMZ.p         NMZ.tips.ja
NMZ.field.from  NMZ.field.uri    NMZ.pi        NMZ.version
NMZ.field.from.i NMZ.field.uri.i   NMZ.r         NMZ.w
NMZ.field.size  NMZ.foot.ja     NMZ.result.normal.ja NMZ.wi
NMZ.field.size.i NMZ.head.ja     NMZ.result.short.ja
[root@web1 ~]#

これらのファイル群は、 バイナリ 形式の データベース 本体の他に、 テキスト 形式のリストとログファイル、そして 赤字 で示している ページ生成のためのテンプレートファイル で構成されています。

それぞれのテンプレートファイルは、 "namazu.cgi" によってページが出力されるときの部品として利用されます。

具体的にいうと "namazu.cgi" は、

HTML の開始タグから本文の手前までが記述してある "NMZ.head.ja" と、本文の後からHTMLの終了タグまでが記述してある "NMZ.foot.ja" の間に、本文ファイルである "NMZ.result.normal.ja" などを挟み込む形で連結して出力する。」

という動作を行います。

例えば出力結果は以下のようなイメージになります。

Namazuによる通常検索結果ページとテンプレートの役割
Namazuによる通常検索結果ページとテンプレートの役割

もちろん、これらのテンプレートファイルはただ連結されているだけではなく、そのテンプレート内の変数が検索結果の値と置き換えられて出力されるため、このような動的な出力内容となります。

要するに、Namazuの出力結果のページデザインを変更するには、これらのテンプレートファイルの内容を適当に修正すれば良いというわけです。

ページのHTMLデータが分離していることと、中にいくつかの変数が埋め込まれていることを除けば、Namazuの出力ページ形式は普通のHTMLとなんら変わるところはありません。

つまりNamazuはHTMLの書き換えさえできれば、その出力結果のページを通常コンテンツとバランスのよいページデザインに変更することが可能な構造になっているわけです。

実際に、上のリストで表示した 赤字 のテンプレートファイルの内容を書き換えれば、すぐにでもページ出力の結果をカスタマイズすることができます。

しかしここでちょっと注意が必要です。

これらの "/var/www/namazudata/db/" 以下のテンプレートファイルは、その大元のテンプレートファイルの格納場所である、 "/var/www/namazudata/template/" 以下に収められているテンプレートファイルを元に作成されるものです。

従ってカスタマイズを行った "/var/www/namazudata/db/" 以下のテンプレートファイルは、最終的には "/var/www/namazudata/template/" 以下にコピーしておくことを忘れないようにしてください。

そうしておかないと、 "mknmz" による索引データベースの作り直しを行う際に、折角カスタマイズしたページデザインが、カスタマイズされていないテンプレートファイルで上書きされてしまうことになります。

このページの先頭へ↑

テンプレートファイルの編集方法について

テンプレートファイルは テキスト ファイルですから、適当なエディタで書き換えを行うことができます。

ちょっとした修正や変更程度なら、 構築中のLinuxサーバー 上で直接nanoエディタ nanoエディタについて を使って行うのが簡単です。

しかしnanoエディタは基本的に日本語処理に対応していないので大幅な書き換えなどには不向きです。

本格的にテンプレートファイルの書き換えを行うには、 FTPクライアント を使ってテンプレートファイルを一旦 クライアント機 ダウンロード し、 クライアント 上で編集を行ってから 構築中のLinuxサーバー アップロード するようにします。

WindowsOS MacOS9 以前の場合は S-JIS MacOSX では UTF-8 が標準の文字セットですので、実際にはほとんどのケースで文字セット変換などが必要になります。

テンプレートファイルは EUC で記述されていますので、お使いのクライアント機の 文字セット 環境がEUCではない場合には、文字セットを変換してダウンロード/アップロード可能なFTPクライアントや、EUCを扱うことのできるHTML編集 アプリケーション やテキストエディタなどを利用する必要があります。

テンプレートファイル格納用ディレクトリ "/var/www/namazudata/template/" は、所有 ユーザーアカウント "tanaka" に設定していますので テンプレートファイルディレクトリのパーミッション設定 vsFTPd の設定で "tanaka" からの FTP 接続に対して上位ディレクトリの参照が許可されていれば vsFTPdの上位ディレクトリの参照許可設定について 、FTPクライアントから接続してサーバー上の参照ディレクトリを移動するだけで、直接テンプレートファイルのダウンロード/アップロードができます。

ただし、修正したテンプレートファイルをアップロードしても、それだけではホームページデザインの変更は反映されません。

なぜなら、 "namazu.cgi" が参照するのは "/var/www/namazudata/template/" 以下のテンプレートファイルではなく、これらのファイルをベースに "mknmz" により出力される "/var/www/namazudata/db/" 以下のテンプレートファイルだからです Namazuの索引データベースの作成

つまり、テンプレートファイルのアップロードを行ったら、一度 "/var/www/namazudata/db/" 以下のファイルを削除し、 "mknmz" を使って索引データベースの作成作業を行わなければ、修正したテンプレートファイルの内容は反映されないわけです。

「それって、ちょっと面倒くさいなぁ。」

と思われる方は、 "/var/www/namazudata/db/" 以下のファイルを、 chown コマンド を使って所有者を "tanaka" に変更すれば、直接ダウンロード/アップロードが可能になりますから、編集作業中はそのようにしておいたほうが良いかもしれません。

ただし最終的には、同じテンプレートファイルを "/var/www/namazudata/template/" 以下にコピーしておくことを忘れないようにしてください。

これを忘れると、 "mknmz" で索引データベースの作成をやりなおしたとき、せっかく編集した "/var/www/namazudata/db/" 以下のテンプレートファイルが、 "/var/www/namazudata/template/" 以下のテンプレートファイルで上書きされてしまう可能性が高いからです。

このページの先頭へ↑

テンプレートファイルの役割について

以下に、 Namazu の日本語出力用テンプレートファイルの役目について説明します。

テンプレートファイルの書き換えによるページデザインのカスタマイズの方法は、要するに " HTML ソース の修正" に他なりません。

というわけでこのパートでは、この修正に関する一般的な説明を行いますが、具体的な記述方法については触れません。

もちろん、それなりにHTMLとスタイルシートの記述の知識が必要になりますから、この部分はHTMLの解説書などを参考に別途勉強してみてください。

この コンテンツ に設置しているNamazuも、メインページのデザインにあわせてカスタマイズされています。何でも構いませんから、試しに下の検索窓から検索を実行してみてください。

お便利サーバー.com管理人はあまりHTMLには詳しいほうじゃないので、これを作るのは本当に苦労しました。

このように、頑張れば結構思い通りのデザインができます。

NMZ.head.ja

"namazu.cgi" を使って出力される、すべてのページに共通して利用されるヘッダ部分の記述です。

HTML の開始タグである "<html>" で始まり、ヘッダタグの開始から終了までの "<head>〜</head>" 、そして本文の開始タグ "<body>" から検索条件入力のためのフォームタグ "<form>〜</form>" までが記述されています。

デフォルトのNMZ.head.jaの表示部分
デフォルトの"NMZ.head.ja"の表示部分

メタタグを始めとしたHTMLファイルの基本的なプロフィールの他、スタイルシートもこの "NMZ.head.ja" に記述します。

出力されるページ全体に影響を及ぼすタグを記述したいときは、この "NMZ.head.ja" には開始タグだけを記述しておき、それと対になる終了タグは後述する "NMZ.foot.ja" に記述します。

Namazuの解説書です

例えば、テーブルを使ってレイアウトを行いたい場合、 "<table><tr><td>" までを "NMZ.head.ja" に記述しておき、 "</td></tr></table>" "NMZ.foot.ja" に記述すれば、本文は "<td>〜</td>" の中の一つのセルの内容として扱うことができるようになります。

"<form>〜</form>" の中は、検索語入力と表示設定のためのメソッドの記述ですが、例えばテキストボックスの長さや表示件数や表示方法の初期値などを変更することが可能です。

NMZ.foot.ja

"namazu.cgi" を使って出力される、すべてのページに共通して利用されるフッタ部分の記述です。

ページ末尾の記述に始まり、本文の終了タグ "</body>" HTML の終了タグである "</html>" で構成されています。

デフォルトのNMZ.foot.jaの表示部分
デフォルトの"NMZ.foot.ja"の表示部分

一般的に連絡先や著作権表記など、注目してもらう必要はないけれども、すべてのページに表記すべき内容はここに記述しておきましょう。

出力されるページ全体に影響を及ぼすタグを記述したいときは、この "NMZ.foot.ja" には終了タグだけを記述し、それと対になる開始タグは前述の "NMZ.head.ja" に記述します。

NMZ.result.normal.ja

"namazu.cgi" での検索によってヒットしたページリストを、 通常形式 で出力するときのテンプレートです。

必ず "NMZ.head.ja" の下に連結されます。

デフォルトのNMZ.result.normal.jaの表示部分
デフォルトの"NMZ.result.normal.ja"の表示部分

このように、 "NMZ.result.normal.ja" は、ヒットしたページの件数に応じて複数のテンプレートが繋ぎ合わされ、最後には必ず "NMZ.foot.ja" が連結されて出力されます。

NMZ.result.short.ja

"namazu.cgi" での検索によってヒットしたページリストを、 簡潔形式 で出力するときのテンプレートです。

デフォルトのNMZ.result.short.jaの表示部分
デフォルトの"NMZ.result.short.ja"の表示部分

表示のための構造は "NMZ.result.normal.ja" と同じです。

NMZ.body.ja

検索語が指定されていない状態で "namazu.cgi" が実行されたときに表示される 検索方法表示用 のテンプレートです。

"NMZ.head.ja" [検索方法] リンクをクリックしたときも表示されます。

デフォルトのNMZ.body.jaの表示部分
デフォルトの"NMZ.body.ja"の表示部分

必ず "NMZ.head.ja" "NMZ.foot.ja" に上下を挟まれて表示されます。

NMZ.tips.ja

検索語にヒットするページが見当たらなかったとき、検索方法についてのTipsを表示するための 検索方法表示用 のテンプレートです。

デフォルトのNMZ.tips.jaの表示部分
デフォルトの"NMZ.tips.ja"の表示部分

必ず "NMZ.head.ja" "NMZ.foot.ja" に上下を挟まれて表示されます。

このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
www.centos.org - The Community ENTerprise Operating System