全文検索 namazu

必要な環境

形態素解析プログラム

形態素解析とは文を単語に分けることと考えてよいと思います. namazuが対応している形態素解析プログラムには以下のものがあります。

kakasiは辞書にない語はインデックス化できないので、 専門用語などで検索する必要がある場合は、 専門用語辞書などを追加で入れることが勧められています。 chasenではその必要がないので、ここでは デフォルトのkakasiではなくchasenを使ってみることにします。

その他

日本語の文字コード変換のnkfやperlが必要です。

namazuのインストール

chasen

まず、 茶筌のホームページからchasen-2.2.3.tar.gzを入手します。 入手したら以下のように make してください.

% tar zxvf chasen-2.2.3.tar.gz
% cd chasen-2.2.3
% ./configure
% make
# make install

ipdic

次にchasenで使う辞書 ipdic をインストールします。パッケージは chasenの配布ページから入手したipadic-2.4.2.tar.gzを使いました. makeは以下のようにして行えます.

% tar zxvf ipadic-2.4.2.tar.gz
% cd ipadic-2.4.2
% make
# make install
# cd /usr/local/share/chasen/dic/ipadic
# sh
# for i in chadic.* *.cha chasenrc
# do ln -s `pwd`/$i /usr/local/etc/$i
# done

chasenが正しく動いているかテストするには、

% nkf -e data.txt |chasen

のようにしてchasenを動かしてみてください。 正しく形態素解析が行われているか確認することができます

namazu

そして、namazuのftpサイトから namazu-2.0.5.tar.gzを入手して、以下のようにmakeします。

% tar zxvf namazu-2.0.5.tar.gz
% cd namazu-2.0.5/File-MMagic
% perl Makefile.PL
% make
% su
# make install
% cd ..
% ./configure
% make
% make check
# make install

全文検索のページの作り方

インデックスの作成

namazuを使うには,事前に検索語をインデックスに登録しておかなければ なりません。これを行うスクリプトを以下のように作ります.

#!/bin/sh
export PERL_BADLANG=0
export LANG=ja
mknmz -O index \
--replace='s#/usr/local/apache/htdocs/#http://www.fc-lab.com/#' \
/usr/local/apache/htdocs

"--replace"の部分にはホームページの内容が格納されているディレクトリと、 URLが書き換えられるように指定してください。 このコマンドでは/usr/local/apache/htdocs 以下のすべてのページの 内容からインデックスを作り、indexというディレクトリの保存します.

このスクリプト(以下ではこの名前をmake_indexとしておいたものとしています) を適当な場所に置いて

# mkdir index
# ./make_index

と実行すると、インデックスが作られます.すべてを作り直したい場合は index以下の内容をすべて消去して、もう一度上のコマンドを実行してください。

うまくできたかを確認するには、上のコマンドを実行した ディレクトリで

# namazu '検索語' index

と実行して正しく検索結果が得られればOKです。

検索ページの作成

namazuをインストールするとnamazu.cgiが/usr/local/libexec/ に置かれます.これをホームページのエリアのどこかから シンボリックリンクを張るかコピーします。 そして、そのシンボリックリンクが存在するフォルダに ".namazurc"というファイルを作り以下のような内容を収めます.

Index         ./index
Lang          ja

このIndexのところには,インデックスの作成の処理で作った インデックスが入っているフォルダへのパスを指定します. そして http://www.fc-lab.com/cgi-bin/namazu.cgi のように namazu.cgiをブラウザから呼びだせば全文検索のページが表示されます。 (cgi-bin/にnamazu.cgiへのリンクを張った場合)

正しく動作しない場合は httpd.conf で namazu.cgi が正しく cgiとして実行されるように設定されていない可能性がありますので、 確認してください。

特定のページにこのCGIを呼び出すフォームを挿入するには、 次のような内容をページに入れてください.

<form action="/namazu/namazu.cgi" method=get>
<input name=query size=20>
<input type=submit value=検索>
</form>

検索ページのカスタマイズ

インデックスが入っているディレクトリの以下のファイルを書き換えると 表示をカスタマイズすることができます。
NMZ.head.ja検索結果の冒頭部分
NMZ.foot.ja 検索結果の末尾部分
NMZ.body.ja 検索式の説明。キーワードが与えられなかったときに表示される内容
NMZ.tips 検索のコツ。検索に何もヒットしなかったときに表示される内容
参考ページ:namazuの公式サイト

FC Labのホームへ Copyright(c) 2001 Takeshi FUJIKI All rights reserved.