Namazu文書フィルタの作成方法 〜 Namazu 2.0 用 〜 2001/9/21 Kenji Suzuki2001/7/7 Kenji Suzuki version 0.0.3 ----------------------------------------------- 作成中です。add_magic() などはよく見ていません。 誤り、不足、わかりにくい点などありましたら、 お知らせ下さい。 ----------------------------------------------- ■文書フィルタとは何か? インデックス対象のファイルから必要な情報(テキスト)を抽出するための モジュール(Perl で記述)です。 ファイルの種類別に、文書フィルタを用意することで、様々なタイプの ファイルを Namazu の検索対象とすることが可能になっています。 「重み付け」や「要約」も文書フィルタで行うことができます。 ■文書フィルタのインストール先 {prefix}/share/namazu/filter/ にインストールされます。標準では、 /usr/local/share/namazu/filter/ です。 新規に作成した文書フィルタは、そこにインストールすれば、自動的に 利用可能になります。 ■文書フィルタのインターフェイス 文書フィルタでは、以下のサブルーチンを必ず定義します。 mediatype() status() recursive() pre_codeconv() post_codeconv() add_magic($) filter($$$$$) ●mediatype() 処理するファイルのメディア・タイプを返します。 text/x-hdml application/postscript application/x-compress など。 フィルタが複数のメディア・タイプで定義される種類のデータに対応できる 場合は複数のメディアタイプを配列で返します(eg. mailnews.pl)。 また、メディア・タイプは IANA に登録されているものを利用することが 推奨されます。 ●status() 通常 yes を返します。文書フィルタが外部コマンドを利用していて そのコマンドがシステム上にない場合など、正しく処理できない場合は、 no を返します。 ●recursive() gzip で圧縮された HTMLファイルの場合、最初は、application/x-gzip として処理し、その後は、text/html として処理する必要があります。 このようにフィルタの適用を再帰的に行いたい場合は 1 を、 それ以外は 0 を返します。 ●pre_codeconv() filter() を呼ぶ前に、文書の漢字コード変換をしたい場合は 1。 それ以外の場合は 0 を返します。Namazu は内部的に EUC を 使っていますので、漢字コードは EUC に変換されます。 ●post_codeconv() filter() を呼んだ後で、文書の漢字コード変換をしたい場合は 1。 それ以外の場合は 0 を返します。Namazu は内部的に EUC を 使っていますので、漢字コードは EUC に変換されます。 ●add_magic() File::MMagic でファイルの種類が認識できない場合に、 File::MMagic のメソッドを使って、ファイル内容認識のための 情報を追加します。 $magic->addSpecials 例: $magic->addSpecials('text/x-hdml', '<[Hh][Dd][Mm][Ll][^>]*>'); $magic->addSpecials("text/plain; x-type=rfc", "^Network Working Group", "^Request [fF]or Comments", "^Obsoletes:", "^Category:", "^Updates:"); $magic->addFileExts 拡張子を指定します。magic entry がうまく書けない Microsoft Office suites document 向けにしかたなく用意している? 例: $magic->addFileExts('^rfc\d+\.txt$', 'text/plain; x-type=rfc'); $magic->addFileExts('\\.tex$', 'application/x-tex'); $magic->addMagicEntry magic entry を指定します。 例: $magic->addMagicEntry('0 string \