« 玄関ドア | メイン | バリゴ社の温湿度計 »
Namazuによる全文検索導入
2004年09月29日
今日、とあるところででちょっとした検索をするという話がでました。
Namazuを使うというので、ためしに使ってみようかと突如思いつきました(笑)。

遠い昔にインストールしたような記憶があるのだけれど...すっかり忘れています。
つい2ヶ月ほど前に起動不可能になって立ち上げなおした、このサーバーには入っていない...

..のはずが...
/usr/bin下に、namazuとmknmzが存在。ついでにkakasiもいました。

$ which namazu
/usr/bin/namazu
$ which mknmz
/usr/bin/mknmz
$ which kakasi
/usr/bin/kakasi

#インストール時にNamazuを選択した記憶も、その後インストールした記憶もないのだけれど?

mknmzコマンドでblogのアーカイブ以下のインデックスを作って、namazuコマンドで検索してみて、今更ながら感激。

mknmzの結果↓
インデックスを書き出しています...
[基本]
日付:                Tue Sep 28 22:27:40 2004
追加された文書の数:  89
サイズ (bytes):      1,728,459
合計の文書数:        89
追加キーワード数:    10,693
合計キーワード数:    10,693
わかち書き:          module_kakasi -ieuc -oeuc -w
経過時間 (秒):       74
ファイル/秒:         1.20
システム:            linux
Perl:                5.008001
Namazu:              2.0.12

さて、昨日のエントリの玄関ドア。キーワード"玄関ドア"で検索してみます。


$ namazu "玄関ドア" ./

検索結果

参考ヒット数:  {  [ 玄関: 4 ]  [ ドア: 8 ]  :: 4 }

検索式にマッチする 4 個の文書が見つかりました。

1. megu's blog: 2004年09月 アーカイブ (スコア: 11)
著者: 不明
日付: Tue, 28 Sep 2004 01:58:49
megu's blog なにがなんだかわからないまま自宅サーバーにMTをいれてしまいました。こ
れからどーなるか...? « 2004年08月 | メイン 玄関ドア 2004ॲ
0;09月28日 我が
/home/blog/public_html/archives/2004/09/index.html (109,226 bytes)

---- (中略)----

現在のリスト: 1 - 4

ありゃりゃん、htmlに対して検索かけてるから余計なものまでくっついて来ちゃいました(笑)。
まぁいっか。

「さぁ!Webから検索しなくっちゃ...(ついでにmt-search.cgiとの比較も...うっしっし)」

なぁんて思いながらnamazu.cgiを探すも...

『ない、ないっ、ない~っ!!』

ルートディレクトリ(/)から下全部、findかけたけれど見つかりませんでした。とほほ。

#なんだ、がっかり。

すでに入っていたnamazuのバージョンは、Namazu 2.0.12。
Namazuのサイトでは、2.0.13が公開されているので、どーせだから新たにインストールすることにしました。


(インストール手順のメモ)

(1)Namazuのサイトから2.0.12をダウンロード
$ wget http://www.namazu.org/stable/namazu-2.0.13-1.tar.gz

(2)解凍します。
$ tar xvfz namazu-2.0.13-1.tar.gz

(3)
$cd namazu-2.0.13
$./configure

っとやってみたら
configure: error: you need to install the included File-MMagic first
    The simplest way to install File-MMagic is:

      % cd File-MMagic
      % perl Makefile.PL
      % make
      % su
      # make install

     Then, simply run configure again.
      % cd ..
      % ./configure

だって~~~!!

...ここは素直に従います。

(4)File-MMagicをインストール
やり方は、上記./configure時に言われたとおりです。


(5)再度namazuのmakeにチャレンジ
$ ./configure
$ gmake
※ここに「make には GNU make の使用を推奨します。」と書いてあるので、GNU makeを使用しました。

(6)rootになってインストール
# gmake install

(7)確かめてみる。
$ which namazu
/usr/local/bin/namazu
$ namazu -v
namazu of Namazu 2.0.13

(8)namazu.cgiをblogサイトへコピーしてくる。
$ cp /usr/local/libexec/namazu.cgi .

(9).namazurcの設置
$ cp /usr/local/etc/namazu/namazurc-sample .namazurc
$ vi .namazurc
 ・Indexを編集
    Index         /home/blog/hogehogenamazu ←索引を作成したディレクトリ
 ・Replace文を編集
    Replace  /home/blog/public_html/   http://blog.kiyo.com/
 ・Lang jaのコメントをはずす
 ・ContentTypeを編集
    ContentType     "text/html; charset=euc-jp"

(10)テンプレートの編集
/usr/local/share/namazu/templateの下に各種テンプレートがあります。
今回は、ほぼそのまんま...NMZ.foot.jaのメールアドレスだけ修正してみました。

(11)新しいmknmzで索引の作り直し。
ところが、下記のようなエラーになります。
Run mknmz with the environment variable PERL_HASH_SEED=0

PERL_HASH_SEED環境変数を0にセットするようにして、再度トライしました。
 $ vi .bash_profile
export  PERL_HASH_SEED=0
 $ source .bash_profile
 $ mknmz ~/public_html/archives


やっと、やっと....検索できるようになりました。

もう夜中じゃないの~!

サイドバーに、Namazuによる検索も追加しましたので、試してみてみてくださいねっ!

っとここまで書いて試してみたら、日本語(UTF-8)が化ける事に気付きました(泣)。
インデックスはEUCで作成されているのですが..(システムの環境変数とシームレスだから)
blogサイトがutf-8で書かれているので、そのままPOSTするとEUCに変換されずに、検索処理に入ってしまうようです。

さて、どうしよう...
そこで「Javascriptで、文字コードの変換はできないかな?」っとサーチしたところ、
複数の文字コードをformからCGIへ送信する方法を発見。

一筋縄ではいかなかったけれど、無理やりどうにかこうにか設置にこぎつけたのでした。
『Submit直前にcharasetを変更するなんて...』
下記のようなスクリプトを仕込みました。

これは、上記のサイトを見るとわかるのですが、もうどうしようもなくて....
別Windowを開くことになってしまいました。え~ん、IEめっ....!!

function submitNamazu(){
	document.charset='EUC-JP';
	swin=window.open("","swin","");
	namazuform.target="swin";
	namazuform.submit(); 
	swin.focus();
	document.charset='UTF-8';
}

ところがどっこい、fireFoxを含めてMozillaで調べてみると、このスクリプトが思惑通り動いてくれていない様子...
#出てきた画面がまっしろけ

でも、IE以外では、Accept-charsetが使えるようなので、ここはuserAgentでも調べて分岐させるのがいいのでしょうか....。
結局、nabigator.appNameからブラウザを判断、IEの場合のみ別Windowで対処することにしました。
(Namazu検索のForm生成部分)
<form method="get" name="namazuform" action="/namazu.cgi" Accept-charset="euc-jp">
<a href="http://www.namazu.org">Namazu</a>による検索<br />
    <input type="text" name="query" size="20">
    <script type="text/javascript">
    <!--
    if( navigator.appName.indexOf("Microsoft") != -1 ) {
        document.write('<input type="button" onClick="submitNamazu();return;"value="検索" />
            ※Windowが開きます。');
    }else{
        document.write('<input type="submit" value="検索" />');
    }
    // -->
    </script>
</form>

(感想)
今回はなんだか「やりなおし」が多かったです。
File-MMagicをインストールにしても、PERL_HASH_SEED環境変数にしても...

しかもまた文字コードで困るの図....(って、いつも同じじゃん!)

投稿者 megu : 2004年09月29日 01:44

コメント

window.openとは…、アクセシビリティが犠牲になってしまいましたね。UTF-8で完結した世界ならnamazuじゃなくてestraierを使う方法もあります。

あと私はmt-search.cgiで、googleやyahooへの検索用URLを生成しています。なんだかんだいってこれが一番便利。

投稿者 (o) [TypeKey Profile Page] : 2004年09月30日 18:40

ogawaさん、こんにちは!
いつもヒントをありがとうございます。
estraier、恥ずかしながら知りませんでした。
これは調べておかないと...

yahooやgoogleでの検索、いいですねっ。
oagawaさんのサイトなら、すごく有効に使われるんじゃないかと思います。

投稿者 megu : 2004年10月01日 12:48

さきほど、サイン・インしても、サイン・インしても...
メールアドレスなど引き継がれなくてエラーになってしまいました。
今は大丈夫です。

いったい何が起きたのでしょう??
#ふたつのブラウザから試してみたのですが、さっきは確かに両方駄目だったんです!

投稿者 megu [TypeKey Profile Page] : 2004年10月01日 12:55

はじめまして。お詫びとお礼です。
お詫び:TBを2回してしまいました。
 最近CMS(Blogzine)の調子が今ひとつのようで、
 TB成功してるのに、TB窓に残ったままになることがあります。
 それで微修正後に保存すると2回目のTBが送信され...。
 すみません。
お礼:大変参考になりました。
 IEのsubmit()問題、window.openのレスポンス、
 なんとかなるといいなと思う今日この頃です。

投稿者 gooroo [TypeKey Profile Page] : 2005年06月12日 14:35

☆goorooさん、はじめまして!
トラックバックどうもありがとうございます*^^*
(すぐに削除できますので、気になさらないでくださいな。)
IEにはいろいろクセがあって本当に困りますね。Submitの問題ははやくなんとかして欲しいです。
あと、文字コード問題。
どこへ行っても、何をやってもネックになりますね。
私もいつも困っています。

投稿者 megu [TypeKey Profile Page] : 2005年06月13日 12:46

コメントしてください




保存しますか?