Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: UTF-8 index
臼田です
mknmz,namazuの内部とindexのutf-8化の作業が終わりました。
手元のPerl5.8, Text::Kakasi2.0という環境では
make checkは全部通ります。
cvs tag utf8index-sprout
cvs tag -b utf8index-branch
としてブランチ作成前にタグをつけておいてから、
ブランチを作成しコミットしました。
メンテナンスの労力を考えるとeuc-jp,utf-8の2種類のインデックスを
サポートするのは難しいと感じており、方針を決めかねて作業が止まっ
ています。
インデックスはutf-8のみにしてしまってよいでしょうか?
ご意見をいただきたいです。
これまでの修正点はおおよそ以下のとおりです。
mknmzについて
* Indexをutf-8で作成するためにmknmz内部コードをeuc-jpからutf-8に変更
* euc-jpを前提とした文字列処理に対応するutf-8対応処理を追加
(euc-jp用処理は削除予定)
下記のサブルーチンを追加
codeconv.plに
utf8han2zen, utf8_han2zen_kana, from_to_by_nkf_m, from_to_by_nkf,
decode_mime_header, de_mime_header_by_encode, encode_from_to,
decode_filename, to_inner_encoding, load_encode, utf8_zen2han_ascii
mknmzに
is_kanji_contained
下記のサブルーチンを書き換え
codeconv::chomp_eucjp を codeconv::chomp_multibytechar に
codeconv::normalize_eucjp を codeconv::normalize_jp に
* Perl5.8EncodeモジュールもしくはPerl5.6以前ではNKF2を必須とした
$var::USE_NKF_MODULEを廃止、$conf::NKFのみで設定することにした。
* Perl5.8とText::Kakasi2.0の組み合わせに対応
下記のサブルーチンを追加
wakati::init_text_kakasi
下記のサブルーチンを書き換え
wakati::wakatize_japanese, wakati::wakatize_japanese_sub
* 全パッケージに影響するグローバル変数$var::INNER_CHARSETを追加
(インデックスのutf-8化移行が済めば不要)
* 各種文字コードをそれぞれ指定できるようにmknmz内グローバル変数を追加
$TERM_CHARSET:画面表示の文字コード
$FILESYS_WIN32:Win32ファイルシステム特有事情(ドライブレター、
ディレクトリ区切り文字)
$TARGET_FILESYS_CHARSET:インデックス作成環境のファイルシステムの文字
コード(HEX,CAP含む)
$INDEXFIELD_FILESYS_CHARSET:インデックス時にEUC-jpにしてからuri
エンコードしている現状との互換性のため。
(mknmz内では変換せずにインデックスを別サーバーに移す際に
NMZ.field.uriを書き換えるようにして、別途ツールを作ったほうが
よいと思う)
* Win32処理を修正
ファイルシステムのsjis文字コード処理とドライブレター処理を分離
mknmzに下記のサブルーチンを追加
win32_yen_to_slash, win32_add_driveletter
上記サブルーチンを呼び出すようにmknmz内の各サブルーチンを修正
load_rcfile, init, namazu_core, generate_uri, parse_option,
load_target_list, absolute_path, find_target
* CAP,HEX,utf-8等のファイル名を可読性のあるものとして扱えるように
codeconv::decode_filenameを追加
NMZ.field.duriを残すようにした。
* タイトル情報が無かった際にfileld.titleに入るuri情報を可読性の
あるものにするように変更、filterとmknmzで二重に呼び出ししていた
部分を整理
mknmz::complete_field_info, gfilter::filename_to_title
namazuについて
* utf-8インデックス対応(euc-jp処理部分をUTF-8処理に置き換え)
nmz/codeconv.c, nmz/re.c, nmz/wakati.c, nmz/util.h
下記のサブルーチンを追加
utf8_zen2han, iskatakana_utf8, ishiragana_utf8,
templateについて
* NMZ.template.normal.ja, NMZ.template.short.jaをutf-8に変更
現在までの修正ファイル
configure.in
filter/deb.pl
filter/dvi.pl
filter/excel.pl
filter/mailnews.pl
filter/man.pl
filter/mhonarc.pl
filter/mp3.pl
filter/msword.pl
filter/ooo.pl
filter/pdf.pl
filter/postscript.pl
filter/powerpoint.pl
filter/rpm.pl
filter/rtf.pl
filter/taro.pl
filter/taro56.pl
filter/taro7_10.pl
filter/tex.pl
nmz/codeconv.c
nmz/re.c
nmz/util.h
nmz/wakati.c
pl/codeconv.pl
pl/conf.pl.in
pl/gfilter.pl
pl/indexer.pl
pl/var.pl.in
pl/wakati.pl
scripts/mknmz.in
template/NMZ.result.normal.ja
template/NMZ.result.short.ja
今後の予定
1.インデックスの文字コードをutf-8のみでいくのであれば
・あちこちに残っているeuc-jp用の処理を削除していく。
・template内の他のファイルもutf-8にしていく
2.euc-jpのインデックスも生成、検索できるようにするのであれば
・インデックスの文字コードがなにであるかを示す情報をインデックス内に
残し、namazuで参照するようにする。
・namazu内でeuc-jp,とutf-8の処理を切り替えできるようにする。
euc-jp処理部分を書き直す。
・template内のファイルをmknmzがコピーする際に文字コード変換しつつ行う
ようにする。
と考えています。これらはブランチ内でやっていこうと思っています。
臼田幸生