ブログ移設しました。

bloggerから記事を移設しました。


HUGOで記事を書いてみると思いのほか書きやすかったので移動。

火曜日, 2月 20, 2007

namazuのインストールについて

namazuとは


 namazuというのは、日本語の全文検索システムとして広く利用されているものです。
検索する時にできる検索方法は、AND検索、OR検索、NOT検索、、グループ化、フレイズ検索、部分一致検索、正規表現検索などです。

一例を示しておきますと。

AND


ある単語とある単語の両方を含む文書を検索します。
例:cat and god
andはこのとき省略することができます。 普通にスペースを入れるとand検索になります。

OR



ある単語とある単語のどちらかを含む文書を検索します。3つ以上の単語を指定することができます。
例:cat or dog or mixi

NOT



ある単語を含みある単語を含まない文書を検索します。
また、1つは最低でも含むという指定をしなくてはいけないようです。

グループ化



AND検索、OR検索、NOT検索を括弧でグループ化できます。括弧の両隣には空白を入れる必要があります。
例:( god and cat ) and Mixi

フレイズ検索



2語以上からなる複合語を検索します。namazuのフレイズ検索はたまに間違えることがあるようです。(くせ者ですね)
例:{GNU Emacs}

部分一致検索

前方一致、中間一致、後方一致の3種類があります。
前方一致
*test
後方一致
+test
中間一致
*test*

正規表現検索

検索するキーワードを正規表現で指定します。正規表現は/../などのようにスラッシュ記号で囲みます。正規表現のエンジンにはrubyのコードを利用しています。正規表現の書式はperlとほぼ一緒です。
/コ[レ]?ガ/

参考サイトURL:
Namazu: a Full-Text Search Engine
http://search.net-newbie.com/cgi-bin/namazu.cgi


調べてみるとどうやら全文検索するときにkakasiかchasenなどを利用するようです。
まぁ、makeする時に必要なパッケージ書いておきます。

perl
nkf
kakasi
Text::Kakasi
Chasen
Text::Chasen
gettext
File-MMagic

と、上記のようになっております。

ライブラリ等はこちらを参照しました。
Namazu 2.0入門/make
ライブラリについては、使いたい言語などで違うと思いますが、まずは、入れておいてください。テストのために今回はText::ChaSenなども入れました。

OSごとのインストール解説


OSが違えばもちろんインストール方法だって違ってきます。 BSDでは、一般的にPortsLinuxではyum,apt-getなどになります。MacOSXには、darwin portsがありますね。
yumであれば

yum install namazu

apt-getであれば

apt-get install namazu

darwin portsであれば

ports install namazu


おそらく、この3つのパッケージマネージャにはGUI環境があるやつもあると思いますが、それについてはおのおの違うと思うので割愛させていただきます。
詳しいわけではないのでコンパイルオプションとかは自分でお調べください。 

そして、最後にパッケージマネージャで入れる際は、何が入っているのかをログをはかせるようにしてください。ログがない状態でインストールを完了すると、何が入ったのかわからない状態でサーバが動く状態になりますから。

一応使うのは、chasen、File-MMagic、Text::Chasenという感じで行こうと思います。
本当であればruby版で見せたいのですが自信が無いので今回は説明書通りにということで。

インストール


さて、まずはインストール
portsでnamazuをインストールさせてもらいます。

結果は下記のようになりました。

cd /usr/ports/databases/namazu2/
greentea# make install clean
=> namazu-2.0.16.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch from http://www.namazu.org/stable/.
namazu-2.0.16.tar.gz 100% of 1157 kB 135 kBps
===> Extracting for namazu2-2.0.16_1
=> MD5 Checksum OK for namazu-2.0.16.tar.gz.
=> SHA256 Checksum OK for namazu-2.0.16.tar.gz.
===> namazu2-2.0.16_1 depends on file: /usr/local/bin/perl5.8.8 - found
===> Patching for namazu2-2.0.16_1
===> namazu2-2.0.16_1 depends on file: /usr/local/bin/perl5.8.8 - found
===> Applying FreeBSD patches for namazu2-2.0.16_1
===> namazu2-2.0.16_1 depends on file: /usr/local/lib/perl5/site_perl/5.8.8/File/MMagic.pm - not found
===> Verifying install for /usr/local/lib/perl5/site_perl/5.8.8/File/MMagic.pm in /usr/ports/devel/p5-File-MMagic
=> File-MMagic-1.27.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch from ftp://ftp.funet.fi/pub/languages/perl/CPAN/modules/by-module/File/.
File-MMagic-1.27.tar.gz 100% of 20 kB 18 kBps
===> Extracting for p5-File-MMagic-1.27
=> MD5 Checksum OK for File-MMagic-1.27.tar.gz.
=> SHA256 Checksum OK for File-MMagic-1.27.tar.gz.
===> p5-File-MMagic-1.27 depends on file: /usr/local/bin/perl5.8.8 - found
===> Patching for p5-File-MMagic-1.27
===> p5-File-MMagic-1.27 depends on file: /usr/local/bin/perl5.8.8 - found
===> p5-File-MMagic-1.27 depends on file: /usr/local/bin/perl5.8.8 - found
===> Configuring for p5-File-MMagic-1.27
Checking if your kit is complete...
Looks good
Writing Makefile for File::MMagic
===> Building for p5-File-MMagic-1.27
cp MMagic.pm blib/lib/File/MMagic.pm
Manifying blib/man3/File::MMagic.3
===> Installing for p5-File-MMagic-1.27
===> p5-File-MMagic-1.27 depends on file: /usr/local/bin/perl5.8.8 - found
===> Generating temporary packing list
===> Checking if devel/p5-File-MMagic already installed
Installing /usr/local/lib/perl5/site_perl/5.8.8/File/MMagic.pm
Installing /usr/local/lib/perl5/5.8.8/man/man3/File::MMagic.3
Writing /usr/local/lib/perl5/site_perl/5.8.8/mach/auto/File/MMagic/.packlist
===> Compressing manual pages for p5-File-MMagic-1.27
===> Registering installation for p5-File-MMagic-1.27
===> Returning to build of namazu2-2.0.16_1
===> namazu2-2.0.16_1 depends on file: /usr/local/bin/perl5.8.8 - found
===> namazu2-2.0.16_1 depends on file: /usr/local/bin/libtool - found
===> namazu2-2.0.16_1 depends on shared library: iconv.3 - found
===> namazu2-2.0.16_1 depends on shared library: intl - found


んー、NKFじゃなくて、ここではどうやらiconv使っているっぽいなぁ。。。。調べてみるとNKFも入っているようなのでiconvもつかえるっていうことでしょう。

[root@greentea /usr/local/etc/namazu]# namazu "てすと" /tmp/index/
Results:

References: [ てすと: 1 ]

Total 1 documents matching your query.

1. test.html (score: 2)
Author: unknown
Date: Tue, 20 Feb 2007 02:35:32 +0900
てすと
/home/luna/public_html/test.html (40 bytes)




Current List: 1 - 1

もっと詳しい使い方はこちら
Namazu User's Manual
http://www.namazu.org/doc/manual.html

文字コードについて


文字コードはLANGで設定しましょう。 AC_ALLなどで設定してしまうと動作する文字コードがかわってしまって大変なことになると思います。

rubyでnamazuを使ってみよう。


最初の状態では、perlでの動作をさせるライブラリのみとなっています。
mknmzというインデックス作成に使うやつもperlで書かれており、perlでnamazuを利用する形です。
rubyでnamazuを使いたい人も多いでしょう。 うちの研究室ではrubyに重きをおいて使っている人が多いのでrubyでnamazuを利用するライブラリを探してみました。
そういうライブラリはrbnamazuというライブラリがあるらしいのですが、バージョン的にも開発中のにおいがします。 このrbnamazuというのを検索してみましたが、ページ自体はありますが、ソースコード自体がないかもしれないです(見つけきれませんでした。)
と、言うことなので、namazuを利用するときは、mknmzから利用してindexを作成し、namazuで検索するようにするのが今現状の使用方法になると思います。

また進展があったら書きます。

追記:まさかと思って調べてみたところ
whereis rbnamazu
rbnamazu: /usr/ports/japanese/rbnamazu
とありましたので、rbnamazuが安定版として提供されているみたいです。他のパッケージマネージャではどうなっているのかはわからないので調べてみてください。

0 件のコメント:

コメントを投稿