SPAMMODE2006年02月01日 02時31分17秒

MHonArc には SPAMMODE があって、宛先を集めることがないように、宛先をマスクする機能があります。

いろいろ細かい設定ができるのですが、
・ ADDRESSMODIFYCODE でヘッダのアドレス部分の変換式が記述でき、
・ MODIFYBODYADDRESSES でADDRESSMODIFYCODEの設定が本文にも有効にできます。

Namazu にも何らかの SPAM 対策をしたいと考えます。

A. インデックス作成時に SPAM 対策を行う
B. namazu, namazu.cgi の出力結果に対して SPAM 対策を行う

のどちらか、あるいは両方の実装が考えられます。
ただし、A の処理を行うと、B の処理は不要ですので、両方実装する場合には、A の処理を行うか、B の処理を行うのか利用者が選択できるというものになるでしょう。

B の処理のみを行う場合は、インデックスに手を加えることなく、SPAM 対策を有効/無効を切り替えられます。
これを利用すると、同じインデックスを用いて、会員のみアクセスできる場所では SPAM 対策をはずし、一般向けでは SPAM 対策を施すといった使い方もできるでしょう。
デメリットは、表示だけの処理のため、検索時にはオリジナルの情報が使用される(結果はもちろんマスクされるが、ヒットするか否かの判定にはオリジナルの情報が使われてしまいます)ということです。

# こう考えると、B の処理だけを実装するのでも十分かもしれません。

対象範囲は、フィールドデータの from と、summary、Message-Id、単語データの NMZ.w やフレーズデータの NMZ.p 辺りになるかと思います。

Bの処理を行うのなら、${xxx} と記述してフィールドデータを使用する際に、オプションで指定できることと、namazurc でも指定できるようになれば良いだろう。

File-MMagic 1.262006年02月07日 15時07分52秒

Namazu 2.0.15 のバンドルには間に合いませんでしたが、現在 File-MMagic 1.26 が公開されています。

http://search.cpan.org/~knok/File-MMagic-1.26/MMagic.pm

File-MMagic 1.26 を使うと、mknmz の処理時間が短縮されます。 これは File-MMagic の処理が整理/効率化され、従来よりは一般的に高速化が期待できるためです。 mknmz の処理時間のうち、File-MMagic を用いたメディアタイプの判定にかかる時間の割合が比較的高いため、File-MMagic の高速化は mknmz の高速化につながります。

pnamazu から学ぶ - 携帯電話対応 -2006年02月08日 06時12分59秒

perl 版検索クライアント pnamazu には実験的なものではありますが、本家 Namazu にないいくつかの機能があります。

その一つが携帯電話対応です。
今ではフルブラウザ対応の携帯電話もありますし、1ページ当りの容量も昔よりは大きくなっていますが、それでもパソコンのブラウザよりは制限がかかります。

pnamazu では、携帯電話に対応するため、次の拡張が行われています。

A. NMZ.result.* に ${summary::size=XX} とオプションが指定可能
B. user agent が携帯電話のときは、検索文字列を Shift_JIS として扱い、半角カナに対応
C. 携帯電話モード時に、出力するカタカナを X0201 (いわゆる半角カナ)に変換

A は、summary の長さは他のフィールドと同じサイズでデフォルトは200バイト($MAX_FIELD_LENGTH で指定可能)です。
しかし、携帯電話にとっては長すぎるので、サイズを小さくできるようになっています。

pnamazu のサンプルの NMZ.result.phone では、${summary::size=40} が指定されています。


Bは、携帯電話で検索式を入力する際、いわゆる半角カナ (jis x 0201片仮名) が入力に使われることが多いのですが、cgi 内部では、文字コードの自動判別の際にこれを誤ります。

そのため、user agent が携帯電話のときは、文字コードの自動認識を行わず、Shift_JIS に決め打ちで処理するようになっています。


Cは、半角カナに変換することで、出力データのサイズを抑えたり、限られた表示領域を有効に使うのが目的でしょう。

--------------------------------------------------
[本家Namazuへの応用]

A.
本家 Namazu でも、${xxxx} にオプションを指定できるように拡張することを考えています。
その一つに、出力する文字列のサイズを指定できるようにしたいと思います。オプションの形式は pnamazu とは異なるものになるでしょう。

この際にバイト数を指定するのが良いのでしょうが、出力する文字コードによって同じ文字列でもバイト数は異なるのが頭の痛いところです。
(最後にまとめてコード変換をしたいと考えているので....。)

B.
この当時、携帯電話の文字コードは Shift_JIS が一般だったのかもしれませんが、現在は Shift_JIS とは限りません。UTF-8 はもちろん、EUC-JP もありえます。
このため、user agent による文字コードの決め打ちは難しいでしょう。
ただ、user agent で携帯電話であることはわかるので、これで携帯電話モードに切り替えるとかには使えるでしょう。

個人的には半角カナは大嫌いですが、携帯電話という閉じた世界に限るなら半角カナへの対応は考えなければならない問題だろうとは思います。

C.
出力コードが UTF-8 だと半角カナに変換してもサイズは減らないのですが、限られた表示領域により多くの情報を表示するためには半角カナの方が好まれるかもしれません。
同様に全角記号も半角記号に変換した方が良いかもしれません。

Spreadsheet::ParseExcel を使った excel フィルタ2006年02月08日 15時13分20秒

Spreadsheet::ParseExcel を使うと Excel の本文テキスト抽出が可能です。
xlhtml の代わりに使うには良いかもしれません。

Excel5, Excel95, Excel97, Excel98 のテキストを統一的に処理するには

$ perl sample/dmpExU.pl CP932 file | nkf -Se

と、しなければなりませんでした。
(UTF-8 や EUC-JP を指定したら文字化け)

$ perl sample/dmpExU.pl CP932 excel5.xls | nkf -Se
=========================================
FILE :/backup/work/HEAD/namazu/tests/data/ja/excel5.xls
COUNT :3
AUTHOR:情報システム部
--------- SHEET:Sheet1
( 0 , 0 ) =>Namazu は手軽に使えることを第一に目指した日本語全文検索システムです。このファイルはテスト用です。
( 2 , 0 ) =>test@namazu.org
--------- SHEET:Sheet2
--------- SHEET:Sheet3

$ perl sample/dmpExU.pl CP932 excel98.xls | nkf -Se
=========================================
FILE :/backup/work/HEAD/namazu/tests/data/ja/excel98.xls
COUNT :3
AUTHOR:乗越洋一
--------- SHEET:Sheet1
( 0 , 0 ) =>Namazu は手軽に使えることを第一に目指した日本語全文検索システムです。このファイルはテスト用です。
( 2 , 0 ) =>test@namazu.org
--------- SHEET:Sheet2
--------- SHEET:Sheet3

十分です。dmpExU.pl を参考にすれば簡単にフィルタは作れるでしょう。


ところで、プロパティの取得はできません(AUTHORのみ可)。
これは xlhtml も同様です。現在は wvWare の wvSummary を使っています。

wvSummary の代わりに OLE::Storage_Lite で実装するのは良いかもしれません。そのものずばりではありませんが、taro7_10.pl には、一太郎のプロパティを取り出す処理が含まれていますので、これを参考にすれば作ることはできるでしょう。

OLE::Storage_Lite を用いた SummaryInfomation の取得2006年02月10日 06時41分11秒

現在、OLE::Storage_Lite を用いて OLE の複合ファイルに含まれる SummaryInformation や DocumentSummaryInformation のプロパティ情報を取得するプログラムを Perl で書いています。

これにより、現在 非OLE コントロールフィルタ(および xdoc2txt.plを除く) でプロパティ情報の取得に使用している wvSummary の置き換えが可能となります。

実用上、wvSummary でも十分ですが、外部コマンドであることと、wvWare をインストールする必要があることから、OLE::Storage_Lite で実装できれば手軽に使えるものと思います。

Windows のプログラムであれば、これらのプロパティを取得するのは以前書いた時に比較的簡単に書けた記憶があるのですが、OLE::Storage_Lite を使うと少々面倒でした。(後から OLE::Storage を使うと簡単に取得できることを知りましたが、OLE::Storage をインストールよりは OLE::Storage_Lite を使う方が他のフィルタでも使っているので、都合が良いでしょう。)

さて、現在 SummaryInformation の取得はほぼできていまして、DocumentSummaryInformation の取得を書いています。 ただ、DocumentSummaryInformation のプロパティのうち、

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/stg/stg/the_summary_information_property_set.asp

に載っていないものがあるのですが、これはどこに情報があるのでしょうか???

手元には Property identifier value に 0x00000017, 0x00000013, 0x00000016 を含むファイルがあるのです。

現在の Namazu では DocumentSummaryInformation のプロパティを今のところ使ってはいないのですが、もう少しフィールド情報を増やそうかと思って調べています。 ついでに、UserDefined property も少し調べてみようかと思ってはいますが、UserDefined property のプロパティ名の定義ってどうやっているのだろう。

html.pl フィルタの XHTML 対応2006年02月10日 10時55分32秒

Namazu は HTML には対応しているが XHTML には対応していないので、html.pl フィルタでは "/>" でタグが閉じているものを無視して処理してしまっています。

今時、それはないので XHTML 対応も考えないといけないでしょう。

とりあえず、html_filter の最初の方で "/>" を ">" に置換してから処理を通せば大丈夫なはず。
あと、isexcluded が html_filter の前に通るので ここだけは個別に対応しておく必要がありますが、現状のままで問題ないようです。

# しかし、"/>" を ">" に置換するのは少々強引か...。
# 問題が起こるのは、"\s*>" 等のパターンを使っているところ。そこを "\s*/?>" に全て変える方が良いか...。

HEAD の場合、テンプレートは XHTML にも多少対応しているのですが、stable-2-0 への対応はまだ甘かったかもしれません。
ちなみに HEAD の方は、HTML パーサを使うこともできるので、もう少しまともな処理が可能なはずです。

ドイツ語Webサイトのお洒落な Namazu2006年02月10日 16時58分13秒

http://www.ne.jp/asahi/music/marinkyo/namazu/tipo.html.ja.sjis

から Namazu を使ったドイツ語Webサイト「ボンLINUXユーザーズグループの検索ページ」を知る。

http://bolug.uni-bonn.de/suchen/index.html

Namazu Projet が公開している Namazu のドイツ語のテンプレートは不十分なのだが、翻訳されて使われている。その上、デザインもお洒落。

Namazu Document Filter for Windows Media Format[WMV/WMA]2006年02月11日 18時45分19秒

Namazu Document Filter for Windows Media Format[WMV/WMA]

http://www.baykit.org/~hoshino/wmawmv.html

というのを見つけました。
中身は全く確認していません。

GPL2 なので手直しして取り込んでも良いかも...。

Namazu 2.0.15 for Windows (アルファ版パッケージ001)2006年02月22日 23時33分31秒

正式なインストールパッケージの準備ができていませんので、先行してNamazu 2.0.15 を Windows で使用するために、コンパイル済みのバイナリを作成しました。

http://www.akaneiro.jp/public/nmz2.0.15.001-win32.zip

http://www.akaneiro.jp/public/nmz2.0.15.001-win32.zip.sig

http://www.akaneiro.jp/public/nmz2.0.15.001-win32.zip.md5

http://www.akaneiro.jp/public/nmz2.0.15.001-win32.zip.sha1

残念ながら本パッケージにはインストーラは含まれませんので、手動でインストールする必要があります。

・ActivePerl 800番台

・インストール先は C:\namazu に限定

となります。 また、Web サーバから PPM ファイルをインストールする必要がありますので、インストール時にインターネットに接続する必要があります。

パッケージの中身は随時更新して内容の拡充を行いたいと思います。

Namazu 2.0.15 for Windows (アルファ版パッケージ002)2006年02月25日 01時52分48秒

正式なインストールパッケージの準備ができていませんので、先行してNamazu 2.0.15 を Windows で使用するために、コンパイル済みのバイナリを作成しました。第二段です。

http://www.akaneiro.jp/public/nmz2.0.15.002-win32.zip

http://www.akaneiro.jp/public/nmz2.0.15.002-win32.zip.sig

http://www.akaneiro.jp/public/nmz2.0.15.002-win32.zip.md5

http://www.akaneiro.jp/public/nmz2.0.15.002-win32.zip.sha1

残念ながら本パッケージにはインストーラは含まれませんので、手動でインストールする必要があります。

動作環境は

・ActivePerl 800番台

・インストール先は C:\namazu

という制限が付きます。

また、Web サーバから PPM ファイルをインストールする必要がありますので、インストール時にインターネットに接続する必要があります。

002 では、001に比べて以下の修正/変更を行っています。

・ppm-inst.bat バッチファイルを用意しました。PPM のインストールが少しだけ簡単になりました。

・Readme-ja.txt の内容を更新しました。

・Copyright ファイルを追加しました。

・msvcr71.dll をパッケージに含めました。

パッケージの中身は今後も随時更新して内容の拡充を行っていくつもりです。