全文検索システムnamazuの設定
2020.04.01
2016.05.03
Feb 2003
日本語の全文検索をする場合、文章を正確に単語に分解してからインデックスを作成しておくという前処理をします。英文なら単語間に空白があるので
単語の区別がつきますが、日本語の文章は単語間に空白がないので分解する精度が問題になります。
1 インストール
namazuをインストールするには次のパッケージが必要です。
apt-get パッケージ名
でインストールします。
nkf Kanji code conversion
Filter
sjis <--> euc などコード変換するプログラム
libnkf-perl - Network Kanji code
conversion Filter for Perl
kakasi
KAnji KAna Simple Inverter
libtext-kakasi-perl KAKASI interface for scripting
language Perl.
namazu2 Full
text search engine (namazu binary and cgi)
namazu2-index-tools Full text search engine (Tools for
index handling)
2 設定
(1)/etc/namazu/namazurc
#
検索インデックスの出力場所 ほんとはコメントアウトしておくほうがよい
# ここではサイト内検索専用にしか使わないので下のように固定
Index
/home/karappi/public_html/namazu_index
#日本語指定
Lang
ja
|
(2)/etc/namazu/mknmzrc
#
HTML、ドキュメントの拡張子
$HTML_SUFFIX = "html?|[ps]html|html\\.[a-z]{2}";
# インデックス対象のファイルの拡張子の指定
$ALLOW_FILE = ".*\\.(?:$HTML_SUFFIX)|.*\\.txt" .
# HTML, plain text
# インデックスを作成しないファイルの拡張子を指定
$DENY_FILE =
".*\\.(gif|png|jpg|jpeg)|.*\\.tar\\.gz|core|.*\\.bak|.*~|\\..*|\x23.*";
|
3 Indexの作成
インデックスファイルは沢山できるので適当なディレクトリで作成を行います。
mknmz オプション 対象ディレクトリ
です。例えば、/home/usr/ 以下のディレクトリのインデックスを作成するには
mknmz /home/usr/
とします。(オプションは省略)
utf8のコードを使っている場合
mknmz 検索対象ディレクトリ -o インデックスを出力するディレクトリ |& nkf -w
サイト内がutf8なので次のようにインデックスをeucで出力する (標準出力へのコメントは
nkf -w を後ろにつけてutf8で表示させる)
mknmz --indexing-lang=ja_JP.eucJP
/home/karappi/public_html |& nkf -w
|
(2) 検索方法
namazu 検索したい文字列 インデックスのあるディレクトリ
例
「Unix」という単語のあるドキュメントを探すには カレントディレクトリを
インデックスのあるディレクトリに移動し、
namazu Unix .
とします。 最後のドット . はカレントディレクトリの意味です。
or や and も使えます。
namazu 'Unix or Linux' .
またワイルドカード(任意の文字列)は * です。
次のようにすると「入門Unix」 「Unix活用]などが検索できます。
namazu '*Unix*' .
utf8を使っている場合は(インストールという文字列の検索)
namazu 'インストール' インデックスのあるディレクトリ |& nkf -w
(3)参考
以下の文章フィルターによってテキスト形式以外のドキュメント内も
検索できるようになる。
ファイル形式 |
必要なフィルター(コマンド) |
gzipで圧縮されたドキュメント
|
gzip
|
bzipで圧縮されたドキュメント
|
bzip2
|
PDF ファイル
|
pdftotext
|
Microsoft Word
|
wv
|
Microsoft Excel
|
xlhtml
|
Microsoft PowerPoint
|
|
一太郎
|
|
4 Webサイトでnamazuを使うには
例として
/home/karappi/public_html/以下のドキュメントを
検索できるようにします。
インデックスは/home/karappi/public_html/namazu_index/
にします。
(1)まず、/usr/lib/cgi-bin/namazu.cgi
を/home/karappi/public_html/namazu_index/
にコピーします。
(2)おなじくそのディレクトリ内に .namazurc ファイルを作成します。
.namazurc
Index /home/karappi/public_html/namazu_index
Template /home/karappi/public_html/namazu_index
Replace /home/karappi/public_html/
http://karappi.minidns.net/
|
もし、3行目のReplaceの行が無いと検索結果のファイルをクリックしてもリンクが正しく
張られず何も表示されません。
(3)インデックスを作成します。
mknmz --indexing-lang=ja_JP.eucJP
/home/karappi/public_html |& nkf -w
(4)アクセスしてみます。
http://サーバアドレス/nmz_index/namazu.cgi
無事成功したならcronで一定間隔でIndexを更新するようにします。
(5)crontabによるインデックスの自動更新の方法
crontab -e を実行すると登録のエディタ(vi と同じ)が起動する。
登録は 「分 時間 日 月 曜日 コマンド」の順である。
毎週、日曜日(0が日、1が月、2が火、・・6が土)、夜中の3時 0分に実行するには
0 3 * * 0 /usr/bin/mknmz
/home/karappi/public_html/
|
となる。
5 追記
2020.04.01
echo $LANGコマンドで言語を確認。もし日本語になっていなかったら
#dpkg-reconfigure locales でja_JP.UTF-8とデフォルトのLANGを設定
※これをやらないとnamazu2のnamazu.cgiがうまく動かない