namazu on FreeBSD

[ Nob's Home | FreeBSD ]

高林 哲さんの「全文検索システム Namazu」をFreeBSD 2.2.2にinstallしてみました。

分かち書きには 馬場 肇さんのpatchを当てたkakasi-2.2.5を使用します。

必要なもの

医学辞書
医学用の辞書としてme-dicを使用しました。 などからgetしてください。

KakasiのInstall
getしたfileは /home/nobにあり、/home/nob/srcに展開します。

  • 馬場さんのpatch kitを展開します。
    $ tar zxvf kakasi-ext.tar.gz -C /home/nob/src
    
  • kakasi-2.2.5を展開し、patchをあてて、辞書を準備して、makeします。
    $ tar zxvf kakasi-2.2.5.tar.gz -C /home/nob/src
    $ cd /home/nob/src/kakasi-2.2.5/src
    $ patch -p1 < /home/nob/kakasi-ext/patch.kakasi-2.2.5
    $ cp kakasidict.940620.gz /home/nob/src/kakasi-2.2.5/src/
    $ gunzip kakasidict.940620.gz
    $ make
    
  • kakasiをinstallします
    $ su
    # mkdir /usr/local/lib/kakasi
    # make install
    

    辞書の追加
    kakasiの辞書はdefaultでは/usr/local/lib/kakasi/kanwadictです。
    これにme-dicを追加します。
    kakasi-2.2.5/src/にme-dicを展開して、
    $ tar zxvf me-dic.tar.z -C /home/nob/src/kakasi-2.2.5/src
    $ cd /home/nob/src/kakasi-2.2.5/src
    # su
    # ./mkkanwa /usr/local/lib/kakasi/kanwadict kakasidict me-dic 
    
    とします。

    namazuのinstall
    ここでは、 /usr/local/www/htdocs/ml/di/ に MHonArcでhtml化されている、
    薬剤情報mailing list(diという名前)を検索できるようにしてみます。

    namazu-103.tar.gzを展開。
    mknmz.plをmknmz-di.plにcpしmknmz-di.plを修正します。

    $ tar zxvf namazu-103.tar.gz -C /home/nob/src
    $ cd /home/nob/src
    $ cp  mknmz.pl  mknmz-di.pl
    $ elvis mknmz-di.pl (mule でもよい)
    	#!/usr/local/bin/perl	(perl5へのpathに)
    	$NKF = "/usr/local/bin/nkf";	(nkfへのpathに)
    	$ADMIN = 'nob@makioka.y-min.or.jp'; (管理人のaddress)
    	$CGIACTION = '/cgi-bin/namazu-di.cgi'; (di用のnamazu-diを使用する)
    	$PROTOCOL = "http://www.y-min.or.jp/ml/di/";
    	$OBJECTFILETYPE = '^msg.*¥.html?$'; (MHonArcでhtml化した msg***.htmlだけを対象とする)
    
    mknmz.plの実行
    namazuが生成するNMZ.*は /usr/local/namazu/di におきます。
    /usr/local/namazu/diでmknmz-di.plを実行します。
    $ su
    # mkdir /usr/local/namazu
    # mkdir /usr/local/namazu/di
    # cp mknmz-di.pl /usr/local/namazu/di
    # cd /usr/local/namazu/di
    # ./mknmz-di.pl /usr/local/www/htdocs/ml/di
    # exit
    
    
    namazu.cgiのmake
    namazu.cgiはdatabase毎に必要なので、namazu-di.cgiとしてmakeしcgi-binへ置きます。
    $ elvis srnmz.c
    	static char *DEFAULTDIR = "/usr/local/namazu/di";
    	KAKASI = "/usr/local/bin/kakasi"
    	CHASEN = "/usr/local/bin/chasen";
    	WAKACHITMPDIR = "/tmp"
    $ gcc -Wall -O2 srnmz.c -o namazu-di.cgi
    $ su
    # cp namazu-di.cgi /usr/local/www/cgi-bin/
    
    検索の実際
    これまでの作成の結果は
    http://www.y-min.or.jp/cgi-bin/namazu-di.cgi
    になりました。

    headerとfooter
    以下のfileを編集して独自のheader/footerを付けています。
    /usr/local/namazu/di/NMZ.head
    /usr/local/namazu/di/NMZ.foot
    
    インデックスの更新
    以下のような/usr/local/bin/updatediを作り、cronで1日1回実行させます。
    #!/bin/sh
    cd /usr/local/namazu/di
    ./mknmz-di.pl /usr/local/www/htdocs/ml/di
    

    mknmz.plの改造
    MHonArcで作成されるlink(<!--X-MsgBody-End-->から後)やReferenceなどを
    検索対象から外す方法を高林さんから教えていただきました。
    
    mknmz.pl の 763 行目あたりに
    
            # <BODY> より上をすべて削除 (<STYLE> や <SCRIPT> への対処)
            $Contents =‾ s/^.*<BODY>//i;
    
    という部分がありますから、ここでついでに
    	<!--X-Subject-Header-End-->  から <!--X-Body-of-Message-->  までと、
     	<!--X-MsgBody-End--> 以下を
    削除してしまえば良いです。
    具体的にはこの行に続いて、
    	$Contents =‾ s/<!--X-Subject-Header-End--> (.|¥n)*<!--X-Body-of-Message-->//;
    	$Contents =‾ s/<!--X-MsgBody-End-->(.|¥n)*//;
    
    という行を挿入します。
    
    高林さん、ありがとうございました。

  • [ Nob's Home | FreeBSD ]
    nob@makioka.y-min.or.jp