2014/10/11(土) [n年前の日記]
#1 [perl][namazu][hns] hns-lite + pnamazu をローカルで動かしてテスト
hns-lite + pnamazu で検索機能を提供できるかどうか実験中。
手順は、 _ハイパー日記システムでpnamazuを使おう で説明されてる。順にやっていけばどうにか。
仕組みとしては…。
mknmzrc.win32 は、C:\namazu\etc\namazu\mknmzrc-sample.win32 をコピーして作成。修正した箇所は以下のような感じ。
以下のbatファイルを作成して呼び出すことにした。
hns-index2.bat
問題は、template をどうやって用意するか。namazu_for_hns-2.0-pl5.tar.gz を解凍して出てくる template を使うべし、ということになってるけれど。namazu_for_hns-2.0-pl5.tar.gz は、シェルスクリプト(.sh)を実行することで template/* 内を自動生成するようになってるので、解凍後の template だけをコピーしてもファイルが足りないわけで。
自分の場合は、既に動かしてる hns から template/* をコピーしてきたけど…。もしかすると仮想PC上でLinuxを動かして namazu_for_hns をセットアップして template だけを取り出す、てな面倒なことをしないといけないのかもしれず。あるいは、*.in を参考にしながら自分で作成していくとか。
もっとも、C:\namazu\share\namazu\template\NMZ* をそのまま使っても、実用上は問題無いような気もするけど。
手順は、 _ハイパー日記システムでpnamazuを使おう で説明されてる。順にやっていけばどうにか。
仕組みとしては…。
- ローカルPC上で、Namazu のインデックスファイルを作成する。
- ftpで、Namazu のインデックスファイルをサーバにアップロードする。
- サーバ上の hns-lite は、pnamazu を呼び出して検索機能を提供する。
◎ 揃えた環境・ファイル。 :
とりあえず今回は、以下の環境・ファイルで動作確認。
Namazuのインデックスファイル作成。
Apacheサーバ側。
_Strawberry Perl for Windows - Releases
_全文検索システム Namazu for Windows
_kakasi-2.3.4.zip
_nkf Network Kanji Filter プロジェクト日本語トップページ - SourceForge.JP
_HyperNikkiSystem Project プロジェクト日本語トップページ - SourceForge.JP
_XAMPP Installers and Downloads for Apache Friends
_hns-lite のインストール
_namazu 検索プログラム perl 版 (pnamazu)
Namazuのインデックスファイル作成。
- Windows7 x64
- Strawberry Perl 5.16.3.1
- nmz2.0.21.001-win32.zip
- kakasi-2.3.4.zip
- nkf-2.1.3.tar.gz
- namazu_for_hns-2.0-pl5.tar.gz
Apacheサーバ側。
- Windows7 x64
- XAMPP 1.8.3 (Apache 2.4.10, Strawberry Perl 7.0.42 Portable)
- hns-lite-2.19.9.lzh
- pnamazu-2006.12.23.tar.bz2
_Strawberry Perl for Windows - Releases
_全文検索システム Namazu for Windows
_kakasi-2.3.4.zip
_nkf Network Kanji Filter プロジェクト日本語トップページ - SourceForge.JP
_HyperNikkiSystem Project プロジェクト日本語トップページ - SourceForge.JP
_XAMPP Installers and Downloads for Apache Friends
_hns-lite のインストール
_namazu 検索プログラム perl 版 (pnamazu)
◎ ローカルPC上でインデックスファイルを作成。 :
- C:\namazu_hns\ というフォルダを作成。中に、template\ フォルダ、mknmzrc.win32 を作成。
- C:\namazu\var\namazu\index\diary\index\ というフォルダを作成。ここにインデックスファイルを作成して保存していく。
mknmzrc.win32 は、C:\namazu\etc\namazu\mknmzrc-sample.win32 をコピーして作成。修正した箇所は以下のような感じ。
package conf; # Don't remove this line! $ADDRESS = 'メールアドレスを記述'; $ALLOW_FILE = '.*.hnf'; $DENY_FILE = ".*\\.(gif|png|jpg|jpeg)|.*\\.tar\\.gz|core|.*\\.bak|.*~|\\..*|\x23.*"; $ON_MEMORY_MAX = 50000000; $KAKASI = "module_kakasi -ieuc -oeuc -w"; $LIBDIR = 'C:/namazu/share/namazu/pl'; $FILTERDIR = 'C:/namazu/share/namazu/filter'; $TEMPLATEDIR = 'C:/namazu_hns/template'; $hnf::hns_version = 2; # hns major version, 2 or 1 $hnf::diary_uri = ""; $hnf::author = 'メールアドレスを記述'; $hnf::alias_file = "conf/alias.txtの場所を記述"; $hnf::grp_hide = 1; # 1 -> don't show GRP section, 0 -> show GRP section $hnf::link_templ = '%year%month%day.html'; # one day$hnf::link_templ は、mod_rewrite を使うこと前提で指定してるので、mod_rewrite を使わないならコメントアウト。
以下のbatファイルを作成して呼び出すことにした。
hns-index2.bat
@rem Namazu for HNS @rem namazu setting @echo off @rem ---------------------------------------- @rem インデックスファイルの作成場所 set NMZIDX=C:\namazu\var\namazu\index\diary\index @rem mknmzに渡す設定ファイル set RCFILE=C:\namazu_hns\mknmzrc.win32 @rem mknmzに渡すtemplate set TEMPLATEDIR=C:\namazu_hns\template @rem hnfファイルが入ってるフォルダ set HNFDIR=C:\home\diary\public_html_new\diary_data @rem ---------------------------------------- @rem Namazu を動かすための環境変数を設定 SET NAMAZUDRIVE=C: SET NAMAZUPATH=\namazu SET NAMAZUHOME=%NAMAZUDRIVE%%NAMAZUPATH% SET KAKASIHOME=C:\kakasi @rem SET CHASENHOME=C:\usr\local @rem SET MECABHOME=C:\usr\local set LANG=ja_JP.SJIS @rem SET LANG=ja_JP.EUC-JP @rem SET LANG=Japanese_Japan.932 SET LANGUAGE=%LANG% SET LC_ALL=%LANG% SET LC_MESSAGES= SET LC_CTYPE= SET NAMAZURC=%NAMAZUHOME%\etc\namazu\namazurc SET MKNMZRC=%NAMAZUHOME%\etc\namazu\mknmzrc SET NAMAZULOCALEDIR=%NAMAZUHOME%\share\locale SET pkgdatadir=%NAMAZUHOME%\share\namazu SET KANWADICTPATH=%KAKASIHOME%\share\kakasi\kanwadict SET ITAIJIDICTPATH=%KAKASIHOME%\share\kakasi\itaijidict @rem SET CHASENRC=%CHASENHOME%\etc\chasenrc @rem SET MECABRC=%MECABHOME%\etc\mecabrc @rem if NOT "x%HOME%" == "x" goto Lable_end_HOME @rem if "x%HOMEDRIVE%" == "x" set HOMEDRIVE=%NAMAZUDRIVE% @rem if "x%HOMEPATH%" == "x" set HOMEPATH=%NAMAZUPATH% @rem set HOME=%HOMEDRIVE%%HOMEPATH% set HOME=%NAMAZUHOME% @rem ---------------------------------------- @rem Strawberry Perl 5.16.3.1、Namazu、Kakasi のパスを、PATHの最初に追加 set PATH=C:/Perls/strawberry-5.16.3.1/c/bin;%PATH% set PATH=C:/Perls/strawberry-5.16.3.1/perl/site/bin;%PATH% set PATH=C:/Perls/strawberry-5.16.3.1/perl/bin;%PATH% set PATH=%NAMAZUHOME%\bin;%PATH% set PATH=%KAKASIHOME%\bin;%PATH% @rem :Lable_end_HOME REM echo HOME=%HOME% REM echo LANG=%LANG% REM echo NAMAZURC=%NAMAZURC% REM echo MKNMZRC=%MKNMZRC% REM echo NAMAZULOCALEDIR=%NAMAZULOCALEDIR% REM echo KANWADICTPATH=%KANWADICTPATH% REM echo ITAIJIDICTPATH=%ITAIJIDICTPATH% REM echo CHASENRC=%CHASENRC% REM echo MECABRC=%MECABRC% REM echo pkgdatadir=%pkgdatadir% REM echo NMZIDX=%NMZIDX% REM echo RCFILE=%RCFILE% REM echo TEMPLATEDIR=%TEMPLATEDIR% REM echo HNFDIR=%HNFDIR% REM echo. if "%1"=="-h" goto HELP if "%1"=="clean" goto CLEANJOB if "%1"=="" goto MAKEIDX :HELP echo hns-index2 --- append index echo hns-index2 clean --- delete all index echo hns-index2 -h --- show this help goto END :CLEANJOB echo on del /q %NMZIDX%\* @echo off goto END :MAKEIDX @echo on mknmz -O %NMZIDX% --include=%RCFILE% --media-type=text/hnf --template-dir=%TEMPLATEDIR% %HNFDIR% @echo off goto END :ENDhns-index2 で、インデックスファイルを作成。2回目からは、追加された .hnf だけ、インデックスを作成・追加してくれる。何かインデックスがおかしくなったら、hns-index2 clean と打ってインデックスファイルを全消去。再度 hns-index2 を実行してインデックス作成。
問題は、template をどうやって用意するか。namazu_for_hns-2.0-pl5.tar.gz を解凍して出てくる template を使うべし、ということになってるけれど。namazu_for_hns-2.0-pl5.tar.gz は、シェルスクリプト(.sh)を実行することで template/* 内を自動生成するようになってるので、解凍後の template だけをコピーしてもファイルが足りないわけで。
自分の場合は、既に動かしてる hns から template/* をコピーしてきたけど…。もしかすると仮想PC上でLinuxを動かして namazu_for_hns をセットアップして template だけを取り出す、てな面倒なことをしないといけないのかもしれず。あるいは、*.in を参考にしながら自分で作成していくとか。
もっとも、C:\namazu\share\namazu\template\NMZ* をそのまま使っても、実用上は問題無いような気もするけど。
◎ Apacheサーバ上で動かす。 :
pnamazu-2006.12.23.tar.bz2 を解凍して、pnamazu.cgi を hns-lite のフォルダにコピーして namazu.cgi にリネーム。
hns-lite のdiary フォルダ(hnfやログファイルが入るフォルダ)の中に、フォルダを作成してファイルをコピー。
hns-lite のフォルダ内に、.namazurc を作成。今回は以下のように修正。インデックスファイルの場所、template の場所、Lang を指定。
config.ph を修正。
hns-lite のdiary フォルダ(hnfやログファイルが入るフォルダ)の中に、フォルダを作成してファイルをコピー。
- namazu2\index\ を作成。ローカルで作成したインデックスファイル群をコピー。
- namazu2\template\ を作成。C:\namazu_hns\template\NMZ* をコピー。
hns-lite のフォルダ内に、.namazurc を作成。今回は以下のように修正。インデックスファイルの場所、template の場所、Lang を指定。
Index ../diary_data/namazu2/index Template ../diary_data/namazu2/template #Replace /home/foo/public_html/ http://www.example.jp/~foo/ #Logging off Lang ja_JP.SJIS #Scoring tfidf EmphasisTags "<strong class=\"keyword\">" "</strong>" #MaxHit 10000 #MaxMatch 1000 ContentType "text/html; charset=EUC-JP" #Suicide_Time 60 #Regex_Search off
config.ph を修正。
$UnagiUse = "ON"; $UnagiURL = "./namazu.cgi";
[ ツッコむ ]
以上、1 日分です。