NKF 2.0.6 のその前に2005年11月09日 23時46分01秒

ここのところ成瀬さんにNKF のUNICODEマッピングに関することをいろいろと
教えてもらっています。

ところで、JISX0208 の範囲の文字だけ各ツールで変換してみたところ

                                      Perl
JIS  EUC-JP    JISX0208  Encode   Iconv    Iconv         nkf
X208              *1     EUC-JP   EUC-JP   EUC-JP-MS    2.0.15
---------------------------------------------------------------
213D 0xa1bd ―  U+2015 : U+2015 : U+2014 : U+2015     : U+2015
2140 0xa1c0 \  U+005c : U+ff3c : U+ff3c : U+ff3c     : U+ff3c
2141 0xa1c1 ~  U+301c : U+301c : U+301c : U+ff5e     : U+301c
2142 0xa1c2 ∥  U+2016 : U+2016 : U+2016 : U+2225     : U+2016
215D 0xa1dd -  U+2212 : U+2212 : U+2212 : U+ff0d     : U+2212
2171 0xa1f1 ¢  U+00a2 : U+00a2 : U+00a2 : U+ffe0     : U+00a2
2172 0xa1f2 £  U+00a3 : U+00a3 : U+00a3 : U+ffe1     : U+00a3
224C 0xa2cc ¬  U+00ac : U+00ac : U+00ac : U+ffe2     : U+00ac

*1 http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0 208.TXT のマッピングによる変換
という結果が得られました。
Perl Encode の EUC-JP や Iconv の EUC-JP は JIS0208.TXT
のマッピングかと思っていましたが、違うのですね。
今頃知りました。

んー。こんなに違うと嫌ですね。
結局、mknmz では Text::Iconv を、namazu は libiconv(glibc の iconv) を
使うというようにツールを統一しないといけないかもしれません。

それにしても Perl の Encode のマッピングは結構謎です。
そのため、Encode を mknmz で使ってしまうと、namazu 側で困るかもしれません。
# あぁ、厄介。

文書数を誤るバグを修正2005年11月10日 00時59分47秒

インデックスを更新する際に、以前処理した文書が更新されており、その文書の処理に失敗した場合に、文書数を誤るバグが発見されましたので、これを修正しました。

簡単な再現方法)
・HTML ファイルと TXT ファイルをいくつか用意します。
・インデックスを作成します。
$ mknmz *.html *.txt
・HTML ファイルのタイムスタンプを更新します。
$ touch *.html
・FILTERDIR を適当なディレクトリに変更し、filter/html.pl が読み込まれ
ないようにした rc ファイルを指定して mknmz を実行します。
$ mknmz -f mknmzrc *.html *.txt
・filter/html.pl が見つからないので、更新された *.html ファイルは
インデックスから削除されますが、追加されません。
この際、NMZ.status の文書数を間違います。

上記以外でも、同一のファイル名でメディアタイプを別のものに変えた場合で、そのメディアタイプに対するフィルタがない場合でも文書数をおそらく誤るでしょう。

今回の修正の弊害として...。
mknmz 実行後に表示される情報の意味が変わります。

追加された文書の数:
削除された文書の数:
更新された文書の数:

従来は、それぞれ
・インデックスに新規に追加された文書の数
・インデックスから削除された文書の数
・インデックスの中で更新された文書の数
という意味だったかと思いますが、(実際にはその数も正しく表示できない場合があったので)修正後は、

・インデックスに追加およびインデックスの中で更新された文書の数
・インデックスから削除およびインデックスの中で更新された文書の数
・mknmz で指定した文書のうち、タイムスタンプが更新された文書の数

になります。
さすがにこれは困るだろうとは思うのですが、純粋に
・インデックスの中で更新された文書の数
の数をmknmz内部ではカウントしていないので、こうなってしまいました。

将来的には、正確にカウントするように修正しないといけないのでしょう。
# だが、難しそう。更新された文書の数はカウントしずらいため。

nmz_getopt_long() の戻り値のチェックを変更2005年11月10日 18時18分26秒

・nmz_getopt_long() の戻り値のチェックで EOF を使っている部分を -1 に変更しました。
・namazu のショートオプションの -4 には引数が必要なので、short_options の 4 の後に ':' を追加しました。

namazu に --norc オプションを追加2005年11月11日 07時14分23秒

mknmz と合わせるために、namazu コマンドに --norc オプションを追加しました。
環境変数 NAMAZUNORC に all を設定したのと同じ動作になります。

フレーズ検索において、文書ID=0がヒットしないバグ修正2005年11月15日 17時19分41秒

フレーズ検索において、文書ID=0 の文書がヒットしないバグを見つけましたので、これを修正しました。

日付順ソート再び2005年11月16日 18時21分31秒

stable-2-0 にも日付順ソート機能を追加しました。

利用方法:

1. mknmzrc 等の $SEARCH_FIELD に utc を追加する。
2. NMZ.head.ja 等を以下のようにフィールド検索に書き換えます。

<option value="field:utc:descending">日付 (新しい順)</option>
<option value="field:utc:ascending">日付 (古い順)</option>

MeCab 対応2005年11月17日 02時14分26秒

HEAD で対応していた MeCab を stable-2-0 に下ろしてきました。
ただし、ドキュメントはまだ修正できていません。

アサブロ検索 11/16 修正に対応2005年11月17日 02時43分14秒

11/16の以下の修正に伴い生成される HTML の中身が変更になったので、これに対応しました。

- 文書型宣言の変更に伴う修正
- コメントのURLをリンク

Re: MeCab 対応2005年11月21日 17時46分52秒

stable-2-0 のマニュアルも HEAD と同等の内容に修正しました。

namazurc-sample に Suicide_Time と Regex_Searchを追加2005年11月22日 02時03分11秒

conf/namazurc-sample に Namazu 2.0.13 で追加されたSuicide_Time と Regex_Search を追加しました。

2.0.13 で追加されていますが、あまり知られていないかもしれませんので、namazurc-sample に追加して、カスタマイズの参考になるようにしました。


Suicide_Time のデフォルト60です。
標準では namazu.cgi は 60 秒で処理を打ち切るようになっています。
Suicide_Time を変更することでこの時間を変更することができます。


Regex_Search のデフォルトは on です。
off にすることで「正規表現検索」を禁止することができます。
複雑な正規表現を与えることによって、CPU に負荷をかけることが可能なため、この機能で「正規表現検索」自体を禁止することができます。