全文検索システム Namazu

Last Modified: 07/09/1998


概要

手軽に使えることを第一に目指した日本語全文検索エンジンです。 CGI として動作させることにより小中規模の WWW 全文検索システムを構築することができるほか、 ハードディスク内のファイルを対象としたようなパーソナルな用途にも使えるようになっています。 現在のところ Mule, Tcl/Tk, JAVA, Win32 用の検索ツールが用意されています。

UNIX, Win32, OS/2 の上で動作可能です。 Win32については 広瀬@NECエンジニアリングさんによる 全文検索システム Namazu for Win32のホームページがあります。 Win32版に関する詳しい情報はこちらを参照してください。
OS/2版に関する詳しい情報は清水さんによる OS/2 port of Namazu the full text retrieval search systemのページを参照してください。 それぞれのページにはバイナリ・パッケージも用意されています。

Namazu の開発は多くの方たちの協力によって成り立っています。 オープンな環境で開発を行うためのメーリングリストがあります。興味のある方はぜひ参加してください。

Namazu についての FAQ (よくある質問とその答え) を用意しました。

新着情報

試してみよう

Namazu を実際に試して頂くために、 Linux 関連のドキュメントと RFC の全文検索システムを作ってみました。 Linux のドキュメントは、 JF による文書です。 RFC は 98 年 5 月頃までのファイルをインデックス化しています。

検索式:

表示件数: 要約表示: 言語:

対象インデックス

検索式の例

Linux 関連のドキュメント

RFC

おかしな動作を見つけましたらの方まで連絡をくださるようお願いします。

検索の方法

大文字、小文字の区別はありません。foo* のように末尾にアスタリスクを指定することで前方一致検索が可能です。また、単語をスペース区切りで並べて書くとアンド検索になります。日本語は KAKASI/ChaSen によって分解され、「日本語情報処理」なら 「日本語」 「情報処理」 のように 2 つの単語に分かれてアンド検索されます。日本語の単語の分解は完全ではありません。品質は辞書によって決定されます。

全角 (2 bytes) アルファベット・記号はすべて 1 byte として処理されます。記号を含む検索も可能で TCP/IP というような単語の検索も可能です。ただし、記号の処理は完全ではないので TCP IP のように分けてアンド検索をかけた方が取りこぼしがありません (その代わり余計なファイルまでヒットしてしまう可能性もありますが)。

括弧を含めたアンド検索とオア検索およびノット検索が可能になっており検索式に & | ! ( ) を用います。記号の代わりに and/or/not で指定することも可能です。 検索式はひとつづつスペース区切りで入力しなければなりません。 たとえば

のように指定します。

といった検索をすることができます。 これは「 sed または awk が含まれ、perl は含まれない、そして regexp が含まれる」文書を検索するという意味になります。 括弧のネストもできるので、さらに複雑な検索式で検索することも可能です。

フレーズをダブルクォーテーションまたは中括弧 '{' '}' で囲むこと でフレーズ検索ができます。ただし、精度は 100%ではありません。とき どきはずれます。たとえば

のように指定します。

正規表現および中間一致/後方一致の検索も可能です。ただしちょっと 遅いです。これは日本語も使えます。

のように指定します。

主な仕様

この全文検索システムはインデックス作成の部分を Perl で行い、 検索部分をC 言語によるプログラムで行う仕組みになっています。 検索速度は OS のディスクキャッシュの効果が大きく影響してくるので厳密には測定できませんが、 Pentium 166 MHz, Memory 64 MB の Linux マシンで数十メガバイトのファイルを元に作成されたインデックスを検索した場合、 大体 0.1 秒程度で検索が完了します (日本語の分解をしないとき)。 アルゴリズムの性質上、検索時間はインデックスのサイズにそれほど影響されません (理論的には log 関数の伸びを示します)。

CGI としてだけでなく namazu.el を使って Mule から検索したり Tcl/Tk で作られた tknamazu という GUI な検索クライアントを用いることができます。 また、 Win32 の環境では Search-S という GUI な検索クライアントを使うことができます。

検索プログラムはメモリをほんのわずかしか要求しませんし、 単体で CGI として機能するので (日本語の分解には KAKASI/ChaSen を呼び出しますが) 、それなりに軽いはずです。

Mail/News を考慮したインデクシングを行うことが可能なため、特にメーリングリストやニューズの記事の全文検索システムを作るのにも適しています。

検索はアンド検索とオア検索およびノット検索をサポートしています。 また、 v1.2.0 からはフレーズ検索および中間一致/後方一致/正規表現による検索も可能になっています。 検索結果の表示はスコアの高い順にソートされ、 AltaVistaODIN のように要約の表示を行います。要約は HTML のヘディング構造を元に作成されます。また、一ページで表示しきれない分についてはページ単位 (ディフォルトでは 20 件単位) で表示できるようになっています。

スコアは単語の出現回数だけではなく <TITLE> <H[1-6]> <A> などの HTML タグによる重みを考慮して計算されます。また、<META NAME="keywords" CONTENT="foo bar"> にも対応しています。

インデックス作成の際に <IMG> タグから ALT 要素を取り出す、実体参照を復号する、検索結果の表示に ISO-2022-JP で HTML 4.0 Strict DTD に従った HTML を出力するなど、 HTML の扱いにはできるだけ配慮しています。また、出力する HTML については石川雅康@慶應 W3C さんの作成された jweblint で検証済みです。

インデックス作成にかかる時間は Pentium 166 MHz + 64 MB の Linux マシンで約 2000 個の合計 25 MB のファイルを処理した場合で約 50 分 (KAKASI を使用)。インデックスの更新は追加のみをサポートしています。

外部のサーヴァのファイルの取得は他のソフトに任せています。 東北大学のくまがいまさあきさんの作成された httpdown や wget などをお使いください。 日本語のわかち書きには京都大学の馬場 肇さんがパッチをあてた kakasi-2.2.5, または奈良先端科学技術大学院大学の ChaSen を利用させていただいております。

さらに詳しい情報を知りたい方はマニュアルを参照してください。

ダウンロード

GPL2 (日本語訳)に従ったフリーソフトウェアとして公開します。

ソース配布

こちらは古い (枯れた) ヴァージョン

バイナリ・パッケージ

Win32用

Namazu のWin32用のパッケージを広瀬@NECエンジニアリングさんが用意してくださいました。 Win32版に関する詳しい情報は広瀬さんによる 全文検索システム Namazu for Win32のページを参照してください。

Win32 で Namazu を使うには nkf32 と KAKASI および Perl5 が必要です。 Perl5 以外はここからダウンロードできます。

OS/2用

Namazu のOS/2用のパッケージを清水@住友林業さんが用意してくださいました。 OS/2版に関する詳しい情報は清水さんによる OS/2 port of Namazu the full text retrieval search systemのページを参照してください。

関連リンク集

歴史

history.html にまとめました。

プログラムの履歴に関しては ChangeLog を参照してください。

作者


email: ccsatoru@vega.aichi-u.ac.jp
Namazuのホームページへ

ccsatoru@vega.aichi-u.ac.jp