Smart -Web Magazine

WEB開発者に嬉しいステキ講座

MENU

検索式を使って自由自在に全文検索

2009年8月6日 コメントの追加

Namazuの検索式をマスターする

単一単語検索

調べたい単語を一つ指定して検索する。

namazu

AND検索

スペースで区切られた複数の単語を含む文書を検索する。スペースの代わりに and を使ってもいい。

Linux and Netscape

OR検索

or で区切った複数の単語うち、どちらかを含む文書を検索する。

Linux or FreeBSD

NOT検索

ある単語を含み、ある単語を含まない文書を検索する。単語と単語の間に not を挿む。

Linux not UNIX

グループ化

AND検索、OR検索、NOT検索をカッコでグループ化できる。カッコの両端のスペースを忘れないようにね。

( Linux or FreeBSD ) and Netscape not Windows

フレーズ検索

2語以上からなる複合語を検索する。 "..." と2重引用符で、あるいは {...} と中括弧で囲む。ところで、フレーズ検索はときどきマッチングで誤ることがあるそうだ。

{GNU Emacs}

部分一致検索

部分一致検索には前方一致、中間一致、後方一致の 3種類がある。

前方一致検索
inter* (inter から始まる単語を含む文書を検索)
中間一致検索
*text* (text を内包する単語を含む文書を検索)
後方一致検索
*net (net で終わる単語を含む文書を検索)

正規表現検索

検索するキーワードを正規表現で指定する。正規表現は /.../ のようにスラッシュ記号で囲むこと。正規表現の書式は Perl とほぼ同じだ。

/<a href="[^"]">/

フィールド指定の検索

Subject:, From:, Message-Id: といったフィールドを指定して検索する。特にMail/News のファイルを扱う際に効果を発揮する。

  • +subject:Linux
    (Subject: に Linuxが含まれる文書)
  • +subject:"GNU Emacs"
    (Subject: に GNU Emacsが含まれる文書)
  • +from:foo@bar.jp
    (From: に foo@bar.jp が含まれる文書)
  • +message-id:<199801240555.OAA18737@foo.bar.jp>
    (Message-Id を指定)

特記事項

  • アルファベットの大文字・小文字の区別はしない。
  • 日本語の複合語は形態素単位に分割し、それらをフレーズ検索する。
  • JIS X 0208 (いわゆる全角文字) の英数字と記号の一部 (ASCIIと重複しているもの) は ASCII (いわゆる半角文字) として処理。
  • 記号を含む語の検索ができます。例: TCP/IP。 ただし、記号の処理は完全ではないので TCP and IP のように分割してAND検索をかけた方が取りこぼしがない(その代わり余計なファイルまでヒットしてしま う可能性がある)。
  • and, or, not を単語として検索したいときはそれぞれ、 "..." と2重引用符で、 あるいは {...} と中括弧で囲む。
このエントリーをはてなブックマークに追加

Namazuの付属ツールは凄い

2009年8月6日 コメントの追加

bnamazuコマンドラインから検索結果をブラウザに出力

bnamazuはコマンドラインから検索して、検索結果をブラウザに表示させるためのツールだよ。bnamazu の使い方は以下のとおり。

% bnamazu [-n] [-b browser] [namazu's options] <query> [index]...

 -b オプション
どのウェブブラウザを使うか指定できる。
 -n オプション
ブラウザが netscape のときのみ有効なオプション。-n を指定すると、新しいウィンドウを開いて検索結果を表示する。

nmzgrep で egep を実行

nmzgrep は検索にヒットした文書に対して、egrep を実行するためのツールだ。このツールの利点は、キーワードがどの行にあるかを表示させることができるんだ。nmzgrep の使い方は以下のとおり。

% nmzgrep [egrep's options] <pattern> [index]...

たとえば、 ~/Namazu/foobar に置かれているインデックスに対して foo で検索し、ヒットした文書に対してさらに egrep をかけるに は、次のように実行する。

% nmzgrep foo ~/Namazu/foobar

gcnmz インデックス内の不要データの削除

gcnmz は、インデックス内に溜まった不要なデータを削除するツールだ。文書の更新・削除を伴うインデックスの更新を繰り返していくと、インデックス内に不要なデータが溜まってくるから、たまには gcnmz を使ってディスクをクリーンにしておくといいね。gcnmz の使い方は以下のとおり。

% gcnmz [options] <target>...

たとえば、 ~/Namazu/foobar に置かれているインデックスをゴミ掃除するなら、次のように実行する。

% gcnmz ~/Namazu/foobar

mailutime Mail/News ファイルのタイムススタンプをいじる

mailutime は Mail/News のファイルのタイムスタンプを Date: ヘッ ダに合わせるツールだ。mailutime の使い方は以下のとおり。

% mailutime <target>...

たとえば、 ~/Mail/ml/foobar に置かれているメイルのタイムスタ ンプを変更するなら、次のように実行する。

% mailutime ~/Mail/ml/foobar/*

vfnmz 検索結果のプレビュー

vfnmz は検索結果の表示をプレビューするツールだ。vfnmz の使い方は以下のとおり。

% vfnmz <index> [NMZ.result.foobar]

たとえば、 ~/Namazu/foobar に置かれているインデックスを preview するなら、次のように実行する。

% vfnmz ~/Namazu/foobar > foobar.html
% lynx foobar.html # 出力をブラウザで閲覧する

rfnmz でNMZ.field.*.i を再構築

rfnmz は NMZ.field.*.i を再構築するツールだ。rfnmz の使い方は以下のとおり。

% rfnmz <index>

たとえば、 ~/Namazu/foobar に置かれている NMZ.field.*.i を再構築するなら、次のように実行する。

% rfnmz ~/Namazu/foobar

このエントリーをはてなブックマークに追加

namazu.cgiを使って全文検索

2009年8月6日 コメントの追加


  タイトル 内容
Namazu講座
1 全文検索システム Namazu Namazuの開発元
2 マニュアルに書いてないNAMAZU Namazuの運用法など
3 Namazu 2.0 入門私家版  
4 Namazu-2.0.x用のfilterの書き方 Namazu 2.0用のフィルタの書き方
Namazu関連のソフトウエア
1 namazu 検索クライアント perl 版 (pnamazu) Perl版のNamazu
2 KAKASI - 漢字→かな(ローマ字)変換プログラム 漢字かな変換プログラムKAKASIのウェブサイト
3 形態素解析システム茶筌 日本語形態素解析システム ChaSen の ウェブサイト
4 文書自動クラスタリング 文書自動クラスタリングシステム gnmz の ウェブサイト
5 ターボリナックス掲示板データーベース化 ターボリナックスのホームページの掲示板をローカルに保存して、Namazuで全文検索
6 Namazu (Perl版) 設置ノウハウ  
全文検索に役立つホームページ
1 日本語全文検索エンジンソフトウェアのリスト  
2 ホームページ内全文検索エンジンmsearch Perlスクリプトの全文検索システム
     
このエントリーをはてなブックマークに追加

namazuコマンドで全文検索をしよう

2009年8月6日 コメントの追加


 いよいよ、全文検索をするときだね。インデックスを作成するよりはずっと簡単だから、気楽にね。

namazuで検索してみよう

namazuの構文

namazu 検索文字列 インデックス

インデックスを省略すると、namazu は /usr/local/var/namazu/index を対象とする。

作成されたインデックスに対して検索を行うには namazuコマンドだ。namzu コマンドの使い方だけど、第一引数に検索文字列、第二引数に mknmz で作った索引の位置を入力する。次のような感じでね。

% namazu tohoho /usr/local/apache/var/index

上記の場合、「tohoho」というキーワードで「/usr/local/apache/var/index」にあるインデックス内を検索する。

namazurcでNamazuの動作設定

namazu コマンドの設定は namazurc で行う。 namazurc の設定例は配布の中の /usr/local/etc/namazu/namazurc-sample にあるよ。

ウェブで CGI を実行するにはいくつかの条件があるんだ。Apache の場合、設定として次のようなものが関係する。

ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/ URI 中の /cgi-bin/ に対応するディレクトリ
AddHandler cgi-script .cgi .cgi と拡張子ならば cgi として実行する
AllowOverride All .htaccess での設定を許可する (Web管理者)
Options ExecCGI cgi-bin の実行を許す
DirectoryIndex index.html URI がディレクトリを指している時に探すファイル名

(Web管理者) と書かれているもの以外は .htaccess にも設定できるよ(ただし Apache の設定次第でそれを禁止していなければだけど)。


namazuコマンド全レシピ

Namazu の検索プログラム

使い方: namazu [options] <query> [index]...

省略 オプション 対象
-n --max=NUM 一度に表示する件数を指定
-w --whence=NUM 表示する検索結果の先頭番号を指定
-l --list 検索結果を URI・パス名をリストで出力
-s --short 短い書式で出力
  --result=EXT 結果表示に用いる NMZ.result.EXT を指定
  --late 検索結果を新しい順にソート
  --early 検索結果を古い順にソート
  --sort=METHOD ソート方法を指定 (score, date, field:name)
  --ascending ソートの方向を昇順にする (標準は降順)
-a --all 検索結果をすべて表示
-c --count ヒット数のみを表示
-h --html HTMLで出力
-r --no-references 参考ヒット数を表示しない
-H --page 先の検索結果へのリンクを表示 (ほぼ無意味)
-F --form <form> ... </form> の部分を強制的に表示
-R --no-replace URI の置き換えを行わない
-U --no-decode-uri URI encode の復元を行わない
-o --output=FILE 指定したファイルに検索結果を出力
-f --config=FILE 設定ファイルを指定
-C --show-config 設定内容を表示
-q --quiet 検索結果以外のメッセージを表示しない
-d --debug デバッグモード
-v --version ヴァージョンを表示
  --help このヘルプを表示

コマンド行引数の [index dir]... に検索対象のイ ンデックスを指定します。インデックスの指定を省略すると、基本インデックスが検索対象となりま す。

また、 +foo, +bar のように頭に + 記号をつけると、 基本インデックスからの相対パスでインデックスを指定できます。

コマンド行から実行したときは標準では平文で検索結果を出力します。 HTML で出力する場合には -h オプションを指定します。

検索結果の 21 件目から 40 件目までを表示させたいときは -n 20 -w 20 と指定します。-w の値が 21 でないところに注意してくだ さい。


namazurcを設定して検索しよう!

namazurc および .namazurc ではいくつかの設定が行えます。 namazu は

  • $(sysconfdir)/$(PACKAGE)/namazurc
    通常は /usr/local/etc/namazu/namazurc
  • ~/.namazurc
  • -f, --config=FILE オプションで指定した namazurc
    (CGIの場合は namazu.cgi を設置したディレクトリ の .namazurc)

の順で設定ファイルを探して読み込みます。複数、見つかった場合 はすべて読み込みます。

インストール直後の状態では $(sysconfdir)/$(PACKAGE)/namazurc-sample という サンプルファイルが用意されています。これを $(sysconfdir)/$(PACKAGE)/namazurc にコピーする、 あるいは自分のホームディレクトリに ~/.namazurc としてコピー して利用します。

namazurc の設定項目の説明は namazurc-sample ファイルにコメント として書かれています。

このエントリーをはてなブックマークに追加

mknmzコマンドでインデックスを作成

2009年8月6日 コメントの追加


 Namazuで全文検索を行うには、まずインデックスというのを作成しておく必要があるんだ。そのインデックスを作成するツールが mknmz なんだな。まずはコイツをならすことからはじめないとね。

mknmz を使ってインデックスを作ってみよう

mknmzの構文

mknmz [options] 対象ディレクトリ

インデックスを作成するには mknmz コマンドを使う。mknmz の引数にインデックス作成の対象とするディレクトリ名を与えてみよう。 たとえば、/home/httpd/html を対象とするならば次のとおりだ。

% mknmz /home/httpd/html

すると、 /home/httpd/html 以下 の *.html *.txt といったファイルについてインデックス作成が行われ、 mknmz を実行したディレクトリに NMZ.* というファイルが作成される。この NMZ.* ファイルが Namazu のインデックスだ。

それじゃあ、実際の手順にいってみようか。とりあえず、一番最初に mknmz コマンドのヘルプを表示させる。

% mknmz --help

また、-C オプションを付けると、その時の構成を表示するよ。

それじゃあ、こんどはインデックスの保存先ディレクトリの用意だ。

% mkdir /tmp/index

この例では、インデックスはカレントディレクトリに作られる。もし出力先を変更したい時には -O オプションを使おう。

% mknmz -O /tmp/index ~/public_html

インデックス作成からはずしたいディレクトリがある場合は次の様な感じになる。

% mknmz --exclude=/private -O ./ /home/httpd/html


mknmz コマンド全レシピ

mknmz のコマンドライン構文は以下のとおり。

mknmz の構文

mknmz [options] 対象ディレクトリ

対象ファイル
省略 オプション 対象
-a --all すべてのファイルを対象にしてインデックスを作成(デフォルトではHTMLだけが対象)。
-t --media-type=MTYPE 対象ファイルの文書形式を指定
-h --mailnews --media-type='message/rfc822' と同じ
--mhonarc --media-type='text/html; x-type=mhonarc' と同じ
-F --target-list=FILE インデックス対象のファイルのリストを読み込む
--allow=PATTERN 対象とするファイル名の正規表現を指定
--deny=PATTERN 拒絶するファイル名の正規表現を指定
--exclude=PATTERN 除外するパス名の正規表現を指定
-e --robots 次の記述を含む HTMLファイルを除外
<meta name=\"ROBOTS\" content=\"NOINDEX\">
-M --meta HTMLの <META> タグをフィールド指定検索に使う
-r --replace=CODE URI を置換するためのコードを指定
--html-split HTML ファイルを <a name=\"...\"> 単位で分割処理
--mtime=NUM 変更日制限 find(1) の -mtime と同じ規則
例: -50 で 50 日以内、+50 で 50 日より古いものだけ

-F オプションはファイルのリストが必要になるけど、手作業で作るのは大変だよね。find コマンドを利用してファイルのリストを作成するならこんな感じだよ。

% find `pwd` -type f -print > filelist.txt

形態素解析
省略 オプション 対象
-c --use-chasen 日本語の単語のわかち書きに ChaSen を用いる
-k --use-kakasi 日本語の単語のわかち書きに KAKASI を用いる
-m --use-chasen-noun 名詞のみを抽出
-L --indexing-lang=LANG インデックス時に言語に特化した処理を行なう
,文字列処理
省略 オプション 対象
-E --no-edge-symbol 単語の両端の記号は削除
-G --no-okurigana 送り仮名を削除
-H --no-hiragana 平仮名のみの単語は登録しない
-K --no-symbol 記号をすべて削除
,要約
省略 オプション 対象
-U --no-encode-uri URI のエンコードを行わない
-x --no-heading-summary HTML のヘディングによる要約作成を行わない
インデックス作成
省略 オプション 対象
  --update=INDEX 更新するインデックスを指定
-Y --no-delete 削除された文書の検出を行わない
-Z --no-update 文書の更新・削除を反映しない
その他
省略 オプション 対象
-s --checkpoint チェックポイント機構を作動
-C --show-config 現在の設定を表示
-f --config=FILE 設定ファイルを指定
-I --include=FILE カスタマイズ用ファイルを読み込む
-O --output-dir=DIR インデックスの出力先を指定
-T --template-dir=DIR NMZ.{head,foot,body}.* のディレクトリを指定
-q --quiet インデックス処理の最中にメッセージを表示しない
-v --version バージョン表示
-V --verbose 警告モード
  --debug デバッグモード
  --help ヘルプを表示

mknmz のデフォルト動作は、インデックスの対象ディレクトリにインデックスを作成する。ディレクトリを指定したい場合は、-O オプションを使って次のようにする。

% mknmz -O /tmp/index ~/public_html


mknmzrc を設定してインデックスを作成!

mknmz はコマンドオプションでインデックスの作成方法をいろいろ指定できるけど、毎回それをするのは面倒だよね。そこで、オプションを指定しなくても、設定ファイルにあらかじめ指定しておけば、オプション付けをしなくてもよくなるんだ。もちろん、設定ファイルとは違う指定をしたくなったら、オプション指定するといい。優先度はコマンドオプションにあるからね。

mknmz は下記の順で設定ファイルを読み込むんだ。複数見つかった場合はすべて読み込む。

  • $(sysconfdir)/$(PACKAGE)/mknmzrc
    通常は /usr/local/etc/mknmz/mknmzrc
  • ~/.mknmzrc
  • -f, --config=FILE オプションで FILE に指定した mknmzrc

mknmzrc というファイルで、初期状態を指定しておくことができる。あらかじめサンプルが用意されていて、環境によって違うけど、通常は /usr/local/etc/namazu/ ディレクトリに mknmzrc-sample という サンプルファイルが用意されている。これを自分の作業領域にコピーして設定するんだ。

ところで、mknmz がデフォルトで参照にする設定ファイルは /usr/local/share/namazu/pl/conf.pl だ。mknmzrc を作成しているうちにうまくいかなくなったら、conf.pl を参考にしてみよう。

変数名 説明
$ADDRESS 管理者メールアドレスの設定
$HTML_SUFFIX HTMLファイルの拡張子を設定
$ALLOW_FILE 処理するファイルタイプを設定(正規表現)
正規表現で使われる語頭・語尾の ^ $ は不要。
$DENY_FILE 処理しないファイルタイプを設定(正規表現)
$DENY_FILE は -a と同時に使うと便利かも知れない。( .. を除く全てというような指定が可能)
$EXCLUDE_PATH 除外 path (正規表現)
$DIRECTORY_INDEX URL が / で終っている時に表示するファイル名。通常は index.html 。
$REMAIN_HEADER RFC 822 Header などのうち本文として検索出来るものを指定
$SEARCH_FIELD フィールド検索(「+subject: 検索語」のような形式)に使える項目を指定する
$META_TAGS 検索対象にするMETAタグを指定
%FIELD_ALIASES メール見出名の置換ルール
$NON_SEPARATION_ELEMENTS これらがあっても単語は切らない
$ON_MEMORY_MAX namazu は文書を次々と読んで、それらから、まとめてインデックスを作る。その作業は全て記憶域で行なう。その読んだ文書の大きさの合計が、この数字を越えると、一旦インデックスを書き出す。そうして空にしてから、また次を読む。この大きさと、必要な記憶域の大きさは、単調増加の関係にある。
$ON_MEMORY_MAX に設定する数字について shell で、limit という操作をして表示される中の datasize が適切でないと、この指定は意味を持たない。
記憶域は沢山あるという時には、良く分らなければ、unlimit datasize としておくのが良い。
$FILE_SIZE_MAX 対象にするファイルサイズの上限
$TEXT_SIZE_MAX 対象にするテキストサイズの上限
$WORD_LENG_MAX 対象にする単語の上限(単位:バイト)
%Weight スコアリングの点数
$INVALID_LENG これ以上の長さのタグはスコアリングから外す。
$MAX_FIELD_LENGTH (NMZ.field.* に保存する)文字列の大きさ (バイト)
$NKF NKF 起動法
$KAKASI KAKASI 起動法
$CHASEN ChaSen 起動法
$CHASEN_NOUN  
$WAKATI わかち書きに使用するプログラム(KAKASI/ChaSen)を指定

cron を使ってインデックスファイルの定期運用

インデックスファイルの作成に慣れたら、cron を使って定期的にインデックス作成をするように設定するといいね。

スクリプトファイルの作成

shの場所を見つけよう。例では「/bin/sh」。

% which sh
/bin/sh

vi エディタ(または任意のエディタ)を起動する。

% vi namazu_index.sh

スクリプトファイル(上記の例では"namazu_index.sh")を下記のように編集する。

#! /bin/sh

# ログを出力するディレクトリに移動
cd /usr/local/apache/var/index

# mknmz の起動(オプションはあくまでサンプル)
mknmz --exclude=/private -O ./ /home/httpd/html

cronの編集

次はcronの編集。

% crontab -e

エディタが起動し、cronの編集画面が表示される。

0 0 * * * sh /root/sh/namazu_index.sh

上記の例では、0時0分にスクリプトファイルを起動している。これで、日ごとにログファイルが出力されるようになる。


文書フィルタ

mknmz は対象ファイルの文書形式を自動で判別して、適切なフィルタ処理を行うんだ。たとえば、 HTML文書だと <title> の抽 出や、HTMLタグの除去を行う。この処理は $(datadir)/$(PACKAGE)/filter に置かれる文書フィ ルタによって行われるんだ。標準で用意されている文書フィルタは次の通り。

gzip.pl
gzipで圧縮されたファイルを扱う
必需品: gzip コマンド または Compress::Zlib モジュール
bzip2.pl
bzip2で圧縮されたファイルを扱う
必需品: bzip2 コマンド
compress.pl
compressで圧縮されたファイルを扱う
必需品: compressコマンド
deb.pl
debパッケージを扱う
必需品: dpkgコマンド
dvi.pl
dviファイルを扱う
必需品: dvi2tty, nkf
excel.pl
Microsoft Excel文書を扱う
必需品: xlHtml, lv (Excel 97/98文書の場合)
代替品: doccat
hnf.pl
ハイパー日記システム のファ イルを扱う
必需品: hnf フィルタは特殊。ハイパー日記システム・プロジェクトか ら Namazu for hns を入手する必要がある
hdml.pl
HDML文書を扱う
html.pl
HTML文書を扱う
mailnews.pl
Mail/News のファイルを扱う
man.pl
man を扱う
必需品: nroff または groff
注意: 日本語の man を扱うには -T nippon に対応した groff または jgroff が必要
mhonarc.pl
MHonArc のファイルを扱う
msword.pl
Microsoft Word文書を扱う (日本語版は Word 97, 98, 2000)
必需品: wvWare, lv
代替品: doccat
pdf.pl
PDF 文書を扱う
必需品: xpdf (バージョン 0.91 以上を推奨)に付属の pdftotextコマンド
注意: 日本語の PDF 文書を扱う場合、--enable-japanese で configure されたものが必要
postscript.pl
PostScript 文書を扱う
必需品: ps2textコマンド
powerpoint.pl
Microsoft PowerPoint文書を扱う
必需品: xlHtml に付属の pptHtmlコマンド, lv
代替品: doccat
rfc.pl
RFCのファイルを扱う
rpm.pl
RPMパッケージを扱う
必需品: rpm
taro.pl
一太郎 9, 10 の文書を扱う
必需品: doccat
tex.pl
TeXのファイルを扱う
必需品: detex

次の文書フィルタは Windows専用だよ。

ichitaro456.pl
一太郎 4, 5, 6 の文書を扱う
必需品: JSTXT
注意: JSTXT は MS-DOS用のツールです。
oleexcel.pl
Microsoft Excel文書を扱う
必需品: Microsoft Excel 97 もしくは 2000
olemsword.pl
Microsoft Word文書を扱う
必需品: Microsoft Word 97 もしくは 98 もしくは 2000
olepowerpoint.pl
Microsoft PowerPoint文書を扱う
必需品: Microsoft PowerPoint 97 もしくは 2000
oletaro.pl
一太郎 (バージョン 4 ~ 10) の文書を扱う
必需品: Microsoft Word 97 もしくは 98 もしくは 2000
olertf.pl
RTF (Rich Text Format) 形式の文書を扱う
必需品: Microsoft Word 97 もしくは 98 もしくは 2000
このエントリーをはてなブックマークに追加

Namazuをインストールして全文検索

2009年8月6日 コメントの追加


 自分のホームページに全文検索の機能をつけたいな、なんて考えていた人に朗報!ようやくわが SMART クラブでも全文検索をサポートすることになったんだ。
 全文検索といえば Namazu が有名。とくれば、ボクたちも迷わず Namazu を採用!スミからスミまでしゃぶりつくすつもりだよ。

Namazuについて

Namazu はいわずと知れた全文検索システムだ。ローカル内のドキュメントを検索するもよし、HTMLを検索するもよし、キミのアイデアしだいで無限に活用可能なんだ、えーと、たぶん。
 さて、全文検索についてちょっと勉強しようか。たとえば、1万ファイルほどある文書があって、そのなかから「エロエロ」という単語を検索したいとしようか。1ファイルにどれだけの検索時間が必要なのかはシステムによるだろうけど、ものすごい時間待たされることだけは必至だ。たかだかスケベな要求を満たすために、異常な時間をただ呆然とデスクの前でただずむなんて、なんというか、他人には見られたくない姿だよね。そこで、あらかじめどの単語がどの文書で使われているかを記録したインデックスファイルを用意しておく、という手法が考え出されたんだ。Namazu はこの手法を取り入れているからとっても高速だ。

ところで、Namazu はインデックスの作成を行う mknmz  コマンドと、検索を行う namazu コマンドで構成されている。今の段階は、2つのコマンドがあるんだな、程度におぼえてくれていればオッケー。

mknmz
これで 検索用のインデックスを作るんだ。だから、Namazuをインストールした後、最初に試すコマンドはこれだ。まずこれを実行してインデックスを作ったら、その後に Namazu を起動して検索することになるよ。
そうそう、頻繁に更新される文書を検索対称にするなら、cron などで定期的に実行させといいね。
余談だけど、現在の実装は Perl で書かれてる。
namazu
文書から単語を検索するためのコマンド。
CGI として実行する時は、namazu のかわりに「namazu.cgi」を使うことになる。
こちらは C で実装されているよ。

必要なファイルのダウンロード

Namazu のインストールには、以下のものが必要。最低限必要なものは太字のものだよ。

  • namazu
  • File-MMagic (上記に同梱)
  • kakasi もしくは ChaSen
  • Perl インタプリタ(たぶん、最初からインストールされてる)
  • nkf
  • NKF
  • Text-Kakasi
  • Text-ChaSen

まず、太字のソフトウエアがインストール済みかどうかをチェックしよう。いつもの which コマンドを使うといい。

% which namazu
% which kakasi
% which perl

Namazuのインストールに必要なファイル一覧

名称 説明 ファイル名 入手先
Perl Perl インタプリタ perl-5.6.1.tar.gz CPAN
nkf 漢字コード変換 nkf171.shar 琉球大学
NKF nkf Perl モジュール
KAKASI 日本語・ ローマ字変換 kakasi-2.3.3.tar.gz namazu.org
Text::Kakasi KAKASI Perl モジュール Text-Kakasi-1.05.tar.gz Text::Kakasi
Chasen(茶筌) 日本語 形態素 解析器 chasen-2.2.8.tar.gz 配布方針
Text::ChaSen ChaSen Perl モジュール Text-ChaSen-1.03.tar.gz Text::ChaSen
File::MMagic File 種別 File-MMagic-1.12.tar.gz CPAN dist

NKF、Text::Kakasi、Text::ChaSen は Perl モジュール化で、2.0 の高速化機能を生かすために必要で、なくても動くよ。

日本語の分かち書き KAKASI と ChaSen

日本語の分かち書きを扱うために、KAKASI または ChaSen が必要。どちらかを選ぶかはお好みとなっているんだけど、とくにこだわりがなければ KAKASI をおすすめするよ。念のため、KAKASI と ChaSen の違いは以下のとおり。

  • ChaSen のほうがきめ細かい日本語処理が可能
  • KAKASI のほうが3,4倍程度高速
  • Namazu はデフォルトでKAKASI を使用
両方用意 (無指定ではわかち書きに KAKASI を使うが、茶筌も -c オプションをするだけで使用できる)
片方用意 ./configure の時点でどちらを使うかが選ばれます。

インストール準備

インストールする際のユーザのプロファイルをチェックしよう。たとえば、Namazu をシフトJISで使うような場合は、LANG設定を js_JP.SJIS とかにしておいたほうがいい。さて、ユーザディレクトリに移動して、vi で編集だ。

% cd
% vi .bash_profile

次の文章を探し、なければ追加、あれば上書きしよう。

export LANG ja_JP.SJIS

telnet から printenv を実行し、環境変数の一覧表を表示させてみよう。もし、一覧表の中に「LANG」がなければ、環境変数 LANG が設定されていということだ。これがないとインデックスを作る時に日本語として扱ってもらえないんだ。というわけで、そんなときは環境変数をセットしよう。

環境変数の設定。ja, ja_JP.eucJP, ja_JP.EUC, ja_JP.ujisなどがある。
わからないときは ja にしておくといい % LANG=ja

LANGに指定した値を有効にする % export LANG

設定したLANG変数が表示される % set | grep LANG


KAKASIのインストール

KAKASIのインストール

tar で KAKASI を解凍 % tar zxf kakasi-2.3.4.tar.gz

解凍時に作成された KAKASI のディレクトリに移動 % cd kakasi-2.3.4

そしてインストール % ./configure
% make
% make install

KAKASI のインストールが成功したかどうかは、以下のとおり。

% kakasi -h
KAKASI - Kanji Kana Simple Inverter Version 2.3.4
....
-w: wakatigaki mode

Report bugs to <bug-kakasi@namazu.org>.

出力結果の最後の方をよく見て、-w の行があるかチェックしよう。


Namazuのインストール

Namazuの解凍

tar で Namazu を解凍 % tar zxf namazu-2.0.7.tar.gz

File-MMagicのインストール

File-MMagic は unix 操作の file と同じような機能を perl 部品で実現するものなんだ。新たな種類の判別が出来るようにわりと更新が頻繁だs。

解凍時に作成された File-MMagic のディレクトリに移動 % cd namazu-2.0.7/File-MMagic

そしてインストール % perl Makefile.PL
% make
% make install

Namazuのインストール

Namazuのソースファイルのディレクトリに移動 % cd ..

そしてインストール % ./configure
% make
% make check
% make install

インストール後のクリーンアップ

Namazuのインストール中に生成された余分なファイルを削除しておくと、身も心もすっきり。次の2つのコマンドのどっちかを使うといいよ。

make clean
生成されたプログラムのバイナリファイルやオブジェクトファイルを、ソースコードの置かれたディレクトリから消す時に使う。とりあえずこちらを実行するといいんじゃなかな。
make distclean
上のファイルの他に、一緒に configure'が生成したファイルも消す時に使います。これをしないと別の種類のコンピュータからはパッケージをコンパイルできない。
このエントリーをはてなブックマークに追加

Jump to the top