Namazu FAQ (old)


Namazu に関するよくある質問、ありそうな質問とその答えをまと めた文書です。この文書は Namazu の古いヴァージョン (1.3.0.x) を対象としています。

目次

Namazu 一般

Namazuの解説書はありますか

日本語全文検索システムの構築と活用, 馬場肇著, ソフトバンク刊, 2,800円 (税別)
が出版されました。買いませう :-)

他の検索エンジンとはどう違うのですか

Namazu はできるかぎりお手軽に使えることを目指しています。 技術的には決して高度なものではありませんが、 手軽に使えるという面では割といい線をいっていると思います。 ただし、別途 KAKASI/ChaSen とその辞書が必要なので使えるディスク容量に余裕がないと使えません。 メイリングリストを開設して比較的活発にメンテナンスが行われているのも特徴といえると思います。

Windows 95/NT で使いたいのですが

Win32版に関する詳しい情報は広瀬さんによる 全文検索システム Namazu for Win32のページを参照してください。

OS/2 で使いたいのですが

OS/2版に関する詳しい情報は清水さんによる Kaz SHIMZ (SHIMIZU Kazuyoshi) presents "NetWarp World"のページを参照してください。

バグみたいなのですが

もしも古い Namazu をお使いならば最新のものを試してみてください。 この FAQもよく読んでみてください。既に解決しているかもしれません。 そうでなければ メイリングリストの方へご報告ください。

こんな機能があったら嬉しいのですが

何か良いアイディアがあれば メイリングリストの方まで要望を提案してください。 有用なものであれば取り入れていきたいと思います。

商用目的のサイトで利用したいのですが

問題ありません。どうぞご利用ください (Namazuの開発への援助は歓迎し ます)。ただし完全に無保証ですのでその点はご了承ください。Namazu の ライセンスは GNU General Public License version 2 に従うものとします。

Namazu はなぜフリーソフトウェアなのですか

フリーソフトウェアの文化に貢献したいと考えるからです。 ちなみに Namazu の開発環境は Plamo Linux + XFree86 + Mule + gcc + Perl + Apache と OS を含めすべてフリーソフトウェアで揃えられています。

Namazu の名前の由来は何ですか

特に意味はないです。思いつきで決めました。

Namazu? namazu? - 表記について

Namazu
Namazuのシステム全体のこと
なまず
Namazuのシステム全体のこと (愛敬のある呼び名)
namazu
コマンドラインから実行する検索プログラムのこと
namazu.cgi
CGIプログラムのこと
NAMAZU
未定義
ナマズ
ナマズ目の淡水魚。全長五〇センチメートルに達する。頭が大きくて平た く、体は側扁する。口に幼魚は六本、成魚は四本のひげをもつ。背面・側面は暗 褐色で、不規則な雲形斑紋のある場合が多い。肉は白身で、蒲焼き・鍋物として 美味。日本のほぼ全土、朝鮮半島・中国に分布。近縁種にビワコオオナマズ・イ ワトコナマズがいる。[季]夏。 -- 大辞林初版より
(1)ナマズ科の淡水産の硬骨魚。体は長くのび、五○センチメートルに達する。 頭部は扁平で、口は大きく四本の長いくちひげがある。背びれは極めて小さいが、 臀びれはよく発達して尾びれと結合。体表は滑らかで鱗がない。背部は青黒く、 腹部は白い。食用。日本・東アジアの沼・川に多く、春小流に来て産卵する。 季・夏。<新撰字鏡九> -- 広辞苑第4版より
catfish
ナマズ目 Nematognathi [Siluroidei] の魚の総称;鱗(うろこ) がなく,口の周囲にひげのあるのが特徴;ゴンズイ,ギギを含む. -- ランダムハウス英和大辞典より

初歩的な質問

動きません、教えてください (質問の仕方)

質問する前にまずマニュアルとこの FAQ をしっかり読んでください。ど うしても分からないときは

などについて簡潔な文章で書いてメイリングリ ストまで報告してください(投稿のマナーを参照のこと)。 ただし、質問しても必ず答えが返ってくるとは限らないのでご了承くださ い (答える義務はありません)。初心者の方 (UNIX, CGI などに) は 日本語全文検索システムの構築と活用(なまず本)を買って参考にする のがよろしいかと思います。

超初心者です、何もわかりませんが使いたいのです

身近に詳しい人を見つけて教えてもらってください。あるいは書籍などで 自習してください。Namazu以前の初歩的な質問をメイリングリストに送ら れても困ります。

森本淳さんのお言葉

我々(?)はあなたのすぐ側には居ないわけですから、
「車のウインカーがつきません」
「ウインカーレバーを倒してみるのは?」
「ok, ウインカーつきました」
程度のアドバイスはできると思いますが、

「車のエンジンがかかりません」というのに対して、 「ではボンネットを開けて、向かって右の前から2番目にあるバッテリーの緑 のフタを外して赤いワイヤーを外して接点部の鉛の覆いを外して接点の銅に緑 青が吹いていたらそれをサンドペーパーでこすって磨いて接点復活剤をかけて また組み上げるのがまず1点。次に向かって左3番目の ECU を開けて CPU の (以下 120 行省略) 」 みたいな指摘は、超人かアポロ13号の地上指令室でもないかぎり、 残念ながらできません。

FreeBSDで mknmzが動きません

FreeBSD 2.x の /usr/bin/perl はヴァージョン 4 という古いもの だったと思います。 mknmz の先頭の /usr/bin/perl を書き替えて v5.003 以降の Perl のパスを正しく指定してください。

KAKASI の make ができません

KAKASI のドキュメントを読んでがんばってください。 または身近に詳しい人を見つけて教えてもらってください。

Namazu 動作関連

インデックス作成の最中に変な メッセージが何度も表示されます

Windows 上でウィルスチェッカーを常駐させていると mknmz 実行 時に

Error! Runtime Exception

というメッセージが表示されることがあるそうです。その場合には ウィルスチェッカーを停めてから mknmz を再実行してください。

ChaSen v1.51 を使ってインデッ クスを作成すると途中で停まってしまいます

ChaSen v1.51 を用いてインデックスを作成 (mknmzを実行) すると、 特定のファイルで "Broken Pipe" といったメッセージが出力され、 終了してしまうことがあるようです。

これはおそらく ChaSen v1.51 のバグが原因です。chasen1.51-k1.diff のパッチをあてると直るようです。

インデッ クスの更新中に検索をかけることはできますか?

できます。検索にロックがかかるのはほんの一瞬です。

インデックスの更新中に mknmz を強制終了させるとインデックスは壊れますか?

よっぽどタイミングが悪くないかぎり、壊れません。ただし、 作 業ファイル NMZ.*.12345 (数字の部分は可変)、および (インデッ クスの2重更新を防ぐ) ロックファイル NMZ.lock2 が残ってしまい ます。削除してください。

.namazurc を見えないように Web サーヴァを設定したいのですが

Apache 1.3 以降であれば


    <FilesMatch "^\.(htaccess|htpasswd|htgroup|namazurc)$">
        order allow,deny
        deny from all
    </FilesMatch>

といった感じです。.namazurc だけなら


    <Files .namazurc>
        order allow,deny
        deny from all
    </Files>

[namazu 550], SATOH Fumiyasu <fumiya@cij.co.jp> さんのメイ ルより引用。

インデックス作成の最中にどう いうわけかフロッピーディスクドライヴが動き出して困ります

『ウイルスチェッカが悪さをしている』 『レジストリのなかに "A:" を指すものがある』 とかいうのが良くある原因、と聞いたことがあります。

[namazu 508], Hideyuki SHIRAI (白井秀行) <shirai@rdmg.mgcs.mei.co.jp> さんのメイルより引 用。

複数のディレクトリをインデックス したい

なお、複数のディレクトリをインデックスしたいときは mknmz に -F オ プションを指定して

/home/hoge/foo/
/home/hoge/bar/
/home/hoge/baz/

のようなリストを渡して処理することができます (v1.3.0.0以降)。 / で 終わる行はそのディレクトリ内のファイルを再帰的に取得します。

URL を置換したい場合には

% mknmz -F list http://foo.bar.jp/ /home/hoge/

のように実行します (パス名の /home/hoge/ の部分を http://foo.bar.jp/ に置き換える)。

configure が途中で終了してしまう

configure が 'Perl not found' などとエラーメッセージを残して異常終 了したときは、 configure がソフトウェアの自動検出に失敗したことを 意味します。 環境変数 $PATH にそのプログラム (この場合は perl) へ のパスが通っているか確認してください。

CGIとして動きません

Apache なら srm.conf に

AddHandler cgi-script .cgi

の行を追加すると解決するかもしれません。

どの程度の規模のインデックスが作れます か?

報告のあったもののなかでは 878,914 ファイル、合計 2,167,480,108 bytes の文書を対象にしたものが最大です (現在の世界記録保持者はすぎうらし ろうさんです :-)。


    [Base]
    Date: Tue Aug 31 18:46:20 1999
    Added Files: 878,914 files
    Total Files: 878,914 files
    Size: 2,167,480,108 bytes
    Added Keywords: 7,339,687 words
    Total Keywords: 7,339,687 words
    Wakati: module_kakasi -ieuc -oeuc -w
    ARGV: '-ahu' '-F' 'B'
    Perl Version: 5.00503
    Namazu Version: 1.4.0.0-beta-8
    System: freebsd
    Time: 79874 sec.
    
    NMZ.f       883950234
    NMZ.fi      3515656
    NMZ.i       721295588
    NMZ.ii      29358748
    NMZ.p       428365331
    NMZ.pi      262144
    NMZ.r       33406075
    NMZ.t       3515656
    NMZ.w       153384197

これより規模の大きいインデッ クスを作成された方はぜひご連絡ください。

mknmz で Not enough space! で止まっ てしまいます

SunOS 5.5.1, Perl 5.004_04 の環境でそのような報告がありました。 Perl を v5.005_02 にヴァージョンを上げたところ解決したそうです。が、 しかし、後日また再発したそうです。

結局、原因は単なるメモリ不足のようです。

Mac OS 8.5 の Sherlock で文字化けしてしまう

NMZ.head.ja の

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-2022-JP">

記述を消せば解決するようです。 なお、Namazu v1.3.0.0-beta-11 以降 では添付する NMZ.head.ja から <META HTTP-EQUIV...> を廃止し ました。代わりに HTTPのヘッダに

Content-type: text/html; charset=ISO-2022-JP

をつけています。

検索されるべき文書が結果に現われない

v1.3.0.0 では文書の更新を反映したインデックスのアップデートが可能 になっています。ゆえに

% mknmz /home/hoge/foo
% mknmz /home/hoge/bar
% mknmz /home/hoge/baz

のように数回に分けて異なるディレクトリのインデックスを作成すると、 2回目以降の処理時に mknmz は以前の文書を削除されたものと判断してし まいます。これが困る場合には 複数のディ レクトリをインデックスしたい を参照してください。

他の原因としては

といったものが考えられます。

特定の文書でインデックス処理が止まってし まう

Namazu v1.2.0.1 あたりで JPerl 5.004_04 を使っているとそういう現象 が起こります。新しい Namazu を使ってください。

mknmz を実行すると sh: no: command not found と表示されてうまく動きません

Namazu は ./configure の実行時に nkf, kakasi (chasen) のパスを $PATH から検出します。あらかじめ nkf, kakasi (chasen) を $PATH の 通っているところにインストールしておいてください。

Macintosh の Internet Explorer 4.01 で日本 語で検索をかけると結果が化けておかしくなります

MSIE 4.01 for Macintosh は、GET メソッドで渡すとき、URL のエンコードが 一段多いようです。 本来、「テスト」は %1B%24B%25F%259%25H%1B%28B とエン コードされるべきところが、 %251B%2524B%2525F%25259%2525H%251B%2528B のようになっ てしまいます。v1.3.0.0 から user agent を確認して対応するようになっ ています。

日本語のファイル名に対応していますか

v1.2.0.8 以降では Win32, OS/2 ともに日本語のファイル名に対応しまて いるはずです。もし問題を見つけたら報告してください。

mknmz で Out of memory! で止まってしまい ます

大きなファイルを処理していると Out of memory! になってしまうことがあります。 この場合は mknmz の中の $FILE_SIZE_LIMIT の値を下げると解決すると思われます。 同じように、たくさんのファイルを処理していると同じように Out of memory! になってしまうかもしれません。 この場合は mknmz の中の $ON_MEMORY_MAX の値を下げると解決すると思われます。

また、v1.2.0 からはフレーズ検索用のインデックスを作成するために以 前のヴァージョンよりもメモリを多く消費します。フレーズ検索が不要な 方は mknmz に -P オプションをつけて実行してください。

CGIとして動かすとわけのわからない文字が大量に表示されるのですが

おそらくそれは CGI として実行されているのではなく、 namazu.cgi の中身がそのまま表示されているのでしょう。 CGI が実行できるようにサーヴァの設定をしてください。

Makefile の OPT_TARGET_FILE や OPT_DENY_FILE の書き方が分かりません

これは正規表現で指定しています。 詳説 正規表現 などを参照してください。

SunOS4.x + Perl5.003 でインデックスを作ると何か変なんですが

SunOS4.x の memcmp(3) の実装により、 Perl で EUC の日本語文字列を比較する際に unsigned/signed の扱いで問題が発生していたようです。 この問題は最近の Perl では解決しているので、新しいもの (5.004 以降) を使ってください。 (一応 v1.1.1.3 以降の Namazu では対処するためのコードを入れ ていますが、信用しない方がよいです。 perlのヴァージョンを上 げましょう)

MHonArc の作成するインデックス (maillist.html や threads.html) がスキップされないのですが

MHonArc の v2.1.0 より前のヴァージョンのものは自動判別がききません。 MHonArc のヴァージョンをあげることをお勧めします。

MHonArcのサイト
http://www.oac.uci.edu/indiv/ehood/mhonarc.html

インデックスの名前を変えたいのですが

Namazu はひとつのディレクトリにひとつだけしかインデックスを置けないという仕様になっています。 ですから、 NMZ.* の名前を変更してもあまりメリットはないと思われます。

インデックス作成の効率は?

加藤@NTT DATAさんの調査

備考: perl,kakasi,nkf はパッケージにあったものを使っています. 即ち,Linux 側の場合,Plamo-1.0 にあったそのまんまのモノを, Windows95 側の場合,広瀬さんのページにあったバイナリーそのまんまのモノ を使っています.実は,意外と,コンパイラの性能が速度要因の重要な因子に なるので,その点は注意が必要です (それで泣かされたことが何回あったか

Plamo Linux 1.0
1回目: 438 sec.
2回目: 460 sec.
Windows 95 4.00.950B
1回目: 574 sec.
2回目: 550 sec.

広瀬@NECエンジニアリングさんの調査

FreeBSD 2.2.6-RELEASE
1回目: 392 sec.
2回目: 391 sec.
Windows 98
1回目: 457 sec.
2回目: 454 sec.

インデックスのサイズを小さくしたい

mknmz実行時に

といったオプションをつけてください。サイズ、作成時間ともに半分 以下程度に短縮するものと思われます。

wget で取得してきたファイルのパス名に '%7E' が含まれて困ります

Namazuはインデックス作成時に、パス名に含まれる記号類を URL風に ' %xx' としてエンコードして記録します。ゆえにパス名に含まれる '%7Efoo' は '%257Efoo' のように '%' の部分が '%25' に変換され、嬉しくない結果となります。

このような場合は mknmz 実行時に -U オプションをつけてパス名のエン コードを行わないようにします。 '%7E' はそのまま '%7E' として記録さ れます。

Use of uninitialized value at /usr/local/bin/mknmz line xxxx なんてメッセージが表示されます

これは Perl の出力するウォーニングです。特に実害はないと思います。 mknmz の一行目から '-w' を取り除くと消えるはずです。Perlのヴァージョ ンによってウォーニングが出たりでなかったりします。

Windows 95/NT 関連

mknmz の実行中に「コマンドまたはファイル名が違います」と言われます

nkf32と kakasi がパスの通ったところに置かれているか確認してください。

MS-Wordの文書をインデックスしたいのですが

Word 98の文書なら MSWordView, wvWareで HTMLに変換して扱えるようです。変 換結果は UTF-8 のエンコーディングで出力されるそうなので lv, tcs などを用いるとよいでしょう。

日本語処理関連

KAKASI と Chasen のどちらを使うべきでしょう

辞書のメンテナンスが容易なこと、動作が軽いことを考えると KAKASI の方が扱いやすいように思われます。 もちろん本格的な日本語の処理を行うには ChaSen の方が向いています。

KAKASI の辞書を拡張したいのですが

KAKASI付属の kakasidict (テキストファイル) に単語を追加して KAKASI の make 時に一緒に作られた mkkanwa というプログラムを使って バイナリ形式の辞書に変換します。 出来上がった辞書は kanwadict という名前で /usr/local/lib/kakasi あたりにコピーすればよいでしょう。

フリーのかな漢字変換用辞書については馬場肇@京大さんによる Freely available dictionaries for kana-kanji conversion に情報がまとまっています。

字書? 辞書?

一時期、ドキュメントの中で (かな漢字変換用の) 「字書」という表記を使っていましたが、一般的な「辞書」に戻しました。 深い理由はないです。

MHonArc で処理するときにヘッダの MIME encode をデコードさせたいのですが

MHonArc 2.2.0に眞柄さんが作成された日本語化パッチをあててください。

あるいは MHonArc 側で nkf を通す方法もありますが、上記の MHonArc の日本語化パッチを適用することをお勧めします。


Namazu Homepage

$Id: FAQ-old.html.ja,v 1.5 2011-01-21 01:18:36 knok Exp $
webmaster@namazu.org