日本語全文検索ソフト namaze2 設置

 サイト内検索をしたいと思い、以前使ったことのある namazu を使ってみます。namazu の最新版は以下のサイトにあるようですが、今回はパッケージを利用します。
Namazu のブログ

インストール

$ sudo apt-get install -y namazu2 namazu2-index-tools kakasi libtext-kakasi-perl

設定

 https://www.bigbang.mydns.jp/namazu-fedora-x.htm を参考に設定していきます。

 設定ファイルは、/etc/namazu にあります。 まず、インデックスを作成する mknmz コマンドの mknmzrc の編集をします。

$ sudo vi /etc/namazu/mknmzrc

 検索対象に php ファイルを追加し、検索しない拡張子に cgi や css を追加します。また、nkf コマンドのパスも設定します。

$ALLOW_FILE = ".\.(?:$HTML_SUFFIX)|.\.php";
$DENY_FILE = ".\.(gif|png|jpg|jpeg|cgi|pl|log|dat|txt|css|vsd)|.\.tar\.gz|core|.\.bak|.~|\..|\x23.";
$NKF = "/usr/bin/nkf";

 mknmz を実行したときに大量にメッセージが出てしまうので、出ないように mknmz コマンドを書き換えます。

$ sudo vi /usr/bin/mknmz

 ただ単純に 1 行目の -w オプションを削除するだけです。

#! /usr/bin/perl -w

 ↓

#! /usr/bin/perl

インデクスの作成

 mknmz コマンドでインデックスを作成します。検索するディレクトリとインデックスを作成するディレクトリを指定して実行します。–exclude= は検索対象にしないパスを書きます。

 mknmz コマンドは標準出力が UTF-8 ではないので nkf で UTF-8 にします。作成先のディレクトリは作成しておきます。

$ sudo mkdir /var/lib/namazu/index/sirius10
$ sudo mknmz /var/www/sirius10 -O /var/lib/namazu/index/sirius10 --exclude="MailForm|blog/wordpress" | nkf
:
:
インデックスを書き出しています…
[基本]
日付: Sat Apr 3 14:28:05 2021
追加された文書の数: 611
サイズ (bytes): 3,519,726
合計の文書数: 611
追加キーワード数: 14,973
合計キーワード数: 14,973
わかち書き: module_kakasi -ieuc -oeuc -w
経過時間 (秒): 59
ファイル/秒: 10.36
システム: linux
Perl: 5.028001
Namazu: 2.0.21

 これでインデックスが作成されました。CGI で使うため、ヘッダに文字コードを設定しておきます。

$ sudo vi インデックスを作成したディレクトリ/NMZ.head.ja

head の直後に次の行を追加します。

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=euc-jp">

namazu.cgi の設置

 cgi が動作するディレクトリへ namazu.cgi のシンボリックリンクを作成します。

 しかし、namazu.cgi が見つかりません。えー、ソースからコンパイルしないといけないの? たしか依存がすごくて昔、苦労してコンパイルした記憶が・・・。cgi を探してみました。

$ sudo find / -name 'namazu*’
:
/usr/lib/cgi-bin/namazu.cgi
:

 ありました。サイトの方へリンクを貼ります。

$ sudo ln -s /usr/lib/cgi-bin/namazu.cgi CGI を動かすディレクトリ/namazu.cgi

 namazu.cgi のシンボリックリンクを作成したディレクトリへ設定ファイルをコピーして編集します。

$ cd namaz.cgi のシンボリックリンクのあるディレクトリ
$ sudo cp /etc/namazu/namazurc .namazurc
$ sudo vi .namazurc

 次の 4 個があれば大丈夫でしょう。

Index /var/lib/namazu/index/sirius10
Template /var/lib/namazu/index/sirius10
Replace /var/www/sirius10/ https://sirius10.dip.jp/
Lang ja_JP.EUC-JP

検索用のフォームの作成。

 html 内に検索用のフォームを作成します。namazu が euc なので、form にaccept-charset 属性を付けています。

<form accept-charset="EUC-JP" method="get" action="cgi-bin/namazu.cgi">
<div>このサイト内の検索</div>
<input type="hidden" name="max" value="50″>
<input type="hidden" name="result" value="normal">
<input type="hidden" name="sort" value="score">
<input type="text" name="query" size="25″>
<input type="submit" name="submit" value="検索">
</form>

インデックスの更新をcron に登録する。

 あとは、インデックスの更新を cron に登録すれば OK です。

$ sudo vi /etc/cron.daily/mknmz

#!/bin/bash

mknmz /var/www/sirius10 -O /var/lib/namazu/index/sirius10 –exclude="MailForm|blog/wordpress"

 保存したら実行権を付けます。

$ sudo chmod +x /etc/cron.daily/mknmz

web サイト

Posted by sirius