mieki256's diary



2014/10/11() [n年前の日記]

#1 [perl][namazu][hns] hns-lite + pnamazu をローカルで動かしてテスト

hns-lite + pnamazu で検索機能を提供できるかどうか実験中。

手順は、 _ハイパー日記システムでpnamazuを使おう で説明されてる。順にやっていけばどうにか。

仕組みとしては…。 pnamazu は、Perl で書かれた Namazu なので、Perl CGIを動かすことしか許可してないサーバ上でもNamazuが使える、ということらしい。

揃えた環境・ファイル。 :

とりあえず今回は、以下の環境・ファイルで動作確認。

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

:END
hns-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やログファイルが入るフォルダ)の中に、フォルダを作成してファイルをコピー。
  • namazu2\index\ を作成。ローカルで作成したインデックスファイル群をコピー。
  • namazu2\template\ を作成。C:\namazu_hns\template\NMZ* をコピー。
ローカル環境だからコピーしてるけど、サーバが相手なら、各ファイルをftpでアップロードすることになるはず。

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 日分です。

過去ログ表示

Prev - 2014/10 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project