日本語全文検索エンジン"Freya"
Full-text Retrieval Engine for Your Archives


How to Install Freya
Freyaが必要とするソフトウェア
○ g++ (GNU CC) + libg++

現在のところ,Freyaの開発には gcc version 2.7.2 を使用しています。gccversion 2.6.3 でもコンパイルできるように意図して作成していますが,もしかするとうまく動かないかもしれません。残念ながら g++ 以外のC++コンパイラではソースコードの修正が必要となる可能性が高いでしょう。(すくなくともIRIX5.3付属のCCでは大変そうでした)

○ nkf

nkf以外の漢字コード変換ツールでも,フィルタとして利用できれば構いません。が,他のツールではテストしていませんので,特に理由がない限り,nkfを使ったほうが確実でしょう。

/usr/local/bin/nkf 以外を使う場合は,bin/text2fdif, bin/html2fdif, bin/mail2fdif にnkfへのパスと,日本語EUCを出力するためのオプションを書いてください。-m, -Z オプションは必須ではありませんが,あったほうがよいでしょう。このため,nkf 1.5以降(できれば1.6以降)を推奨します。

○ Perl + ライブラリ

Freyaは索引づけする際にPerlを併用します。Perlはバージョン5.004以降を推奨しますが,5.003ならおそらく動くでしょう。5.001や5.002を使用している方はこの機会にバージョンアップすることをお勧めします。jperlである必要はありません。jperlパッチつきでPerl5を作った場合はコマンド名をjperlに*しないで*起動してください。つまり,#!/usr/local/bin/jperl などにはしないでください。

Perl5が /usr/local/bin/perl 以外にインストールされている場合は,bin/text2fdif, bin/html2fdif, bin/mail2fdif, bin/mkicotdic 等の先頭部分を書きかえてください。

また,HTMLを索引づけする場合はlibwww-perl-5 というPerl5用ライブラリも使用します。libwww-perl-5 が,libnet, MIME-Base64, MD5などのPerl5ライブラリを必要とするため,それらもあらかじめインストールしておかねばなりません。これらはたとえば以下のURLから入手できます。

ftp://ftp.lab.kdd.co.jp/CPAN/authors/id/GAAS
ftp://ftp.lab.kdd.co.jp/CPAN/modules/by-module/WWW/
ftp://ftp.lab.kdd.co.jp/CPAN/modules/by-module/MD5/
ftp://ftp.lab.kdd.co.jp/CPAN/modules/by-module/Net/

メールなど,HTML以外のファイルだけ検索できればいいというのであれば,libwww-perl-5は必要ありません(Perl5は必要です)。

FreeBSDやLinuxの場合は,バイナリパッケージからインストールことも可能かもしれませんが,libnetのようにインストール時に設定を必要とするモジュールもあるので,Perl5用ライブラリについては,手動でmakeするほうが確実だと思われます(インストールは簡単ですし)。

LWPが正しくインストールされたかどうかは,lwp-request(1)などを実行することで確かめることができます。

・(おせっかいな)コマンド実行例

FreeBSD2.2では,/usr/bin/perl が Perl version 4,/usr/local/bin/perlが Perl version 5 になっているので,明示的に /usr/local/bin/perl を使って Makefile を作成しています。

% gzip -dc MIME-Base64-2.04.tar.gz | tar xvf -
% cd MIME-Base64-2.04
% less README
% /usr/local/bin/perl Makefile.PL
% make
% make test
% su
# make install
# exit
% cd ..

% gzip -dc MD5-1.7.tar.gz | tar xvf -
% cd MD5-1.7
% less README
% /usr/local/bin/perl Makefile.PL
% make
% make test
% su
# make install
# exit
% cd ..

% gzip -dc libnet-1.0604.tar.gz | tar xvf -
% cd libnet-1.0604
% less README
% /usr/local/bin/perl Makefile.PL
(ホスト名などについて,質問に答える)
% make
% make test
% su
# make install
# exit
% cd ..

% gzip -dc libwww-perl-5.18.tar.gz | tar xvf -
% cd libwww-perl-5.18
% less README
% /usr/local/bin/perl Makefile.PL
% make
% make test
% su
# make install
# exit
% cd ..
Freya本体のインストール(ソースからコンパイルする場合)
○ パッケージを展開する
% gzip -dc freya-?.??.tar.gz | tar xvf -
% cd freya-?.??
○ ソースとMakefileの修正

以下の例では /usr/local/lib/freya にインストールすると仮定します。他の場所にインストールする場合は src/config.h の DEFAULT_MORPHDIC_PATH を書きかえてください。

src/Makefileを編集し,$(CXX)にC++コンパイラを,$(CXXFLAGS)にオプションを指定してください。SunOS4.1でコンパイルする場合のみ -DSUNOS4 をつけてください。他のOSでは特に定義する必要はありません。

残念ながら g++/libg++ 以外のC++コンパイラではうまくコンパイルできない可能性が高いと思われます。

nkf が /usr/local/bin にない場合はbin/text2fdif,bin/html2fdif,bin/mail2fdif,bin/mkicotdicの先頭部分を修正してください。

○ makeする

src ディレクトリで make します。make depend は必要ありません。うまくいけば fsearch fsearch.cgi findex fmerge fmkmorphdic という5つの実行ファイルができ上がるはずです。

成功すれば,make install してください。make install は上記の5つの実行ファイルを strip し,../bin と ../cgi-bin にコピーするだけです。もし install(1)がなければ,手動で strip(1) して,コピーしてください。この時点ではまだ su する必要はないでしょう。

% make
% make install
% make clean
○ ICOT形態素辞書の準備

Freyaは索引づけの際に形態素辞書を援用します。kakasiやChasenは不要ですが,日本語の単語のデータだけは必要です。

ここではパブリックドメインの形態素辞書として公開されている「ICOTフリーソフトウェア『形態素辞書』」を使用することにします。Freyaは形態素辞書を補助的な情報としてのみ使用するため,辞書の収録語数や品質にはさほどこだわる必要がありません。

ICOT形態素辞書には,辞書を高速に検索するためのTRIEライブラリも添付されていますが,Freyaが使うのは辞書データ(テキストファイル)だけです。品詞情報も一切使わないので,見出し語のみを抽出し(bin/mkicotdic),バイナリファイルに変換します(bin/fmkmorphdic)。

% mkdir morphdic
% gzip -dc morphdic.tar.gz | tar xvf - - C morphdic
% cd freya-?.??
% bin/mkicotdic ../morphdic/src/dictdata/*.sort | bin/fmkmorphdic - dict/icot.dic

1.6MB程度の辞書ファイル(dict/icot.dic)が作成されます。この作業が成功すれば,もう morphdic は必要ありませんので,他の用途に使う予定がなければ,削除してもよいでしょう。

% cd ..
% rm -fr morphdic.tar.gz morphdic
○ インストール先に移す

特権ユーザになって,インストール先ディレクトリに移動させます。srcディレクトリは消しても構いません。

% su
# mv freya-?.?? /usr/local/lib/freya

さて,これで実行形式のファイルはすべて /usr/local/lib/freya/bin にあることになります。これをパスに加えるか,/usr/local/bin などからsymboliclinkを張ります。実際にコマンドラインから頻繁に使うのは findex,fsearch, text2fdif, html2fdif, mail2fdif くらいでしょう。

# cd /usr/local/bin
# ln -s ../lib/freya/bin/findex .
# ln -s ../lib/freya/bin/fsearch  .
# ln -s ../lib/freya/bin/text2fdif .
# ln -s ../lib/freya/bin/html2fdif .
# ln -s ../lib/freya/bin/mail2fdif .
○ 動作テスト

基本的なインストールはここまでです。使用方法とCGIの設定はMANUAL.jaを御覧ください。

Freya本体のインストール(バイナリパッケージを使用する場合)

バイナリパッケージを使う場合も,libwww-perl-5, nkf等はあらかじめインストールしておく必要があります。それらがすでに用意されているのであれば,あとはパッケージを展開して,インストール先ディレクトリに移動するだけです。標準の形態素辞書ファイルはバイナリパッケージに含まれていますので,ICOT形態素辞書(morphdic.tar.gz)は不要です。

nkf が /usr/local/bin にない場合はfreya/bin/{text2fdif,html2fdif,mail2fdif}の先頭部分を修正してください。

% gzip -dc freya-x.xx-i386-freebsd.tar.gz | tar xvf -
% su
# mv freya /usr/local/lib
ヒントとトラブルシューティング
・/usr/local/lib/freya 以外にインストールする場合
src/config.h に findex がデフォルトで使用する形態素辞書を指定します。/usr/local/bin/nkf 以外を使う場合は bin/html2fdif 等のPerlスクリプトの先頭部分を変更します。
・make できない
使用しているOS,コンパイラ等について教えてください。 32bit UNIXでg++を使えばだいたい大丈夫だと思っているのですが…。
・icot.dicがうまく作れない

Perlスクリプト bin/mkicotdic は morphdic.tar.gz:src/dict/*.sort の内容をsort(1)を使ってマージソートしています。sort(1)が -m オプションを持っていない場合はこれらを他の方法でマージソートし,日本語EUCに変換してください。

実は fmkmorphdic は入力がソートされていなくても正しく動作します。ただ,同じ語を二度登録しようとすると警告が出るので,あらかじめsortとuniqをしようというだけです。

←インデックスに戻る。

原田昌紀 <harada@ingrid.org>