SUFARY用インデクサのPerl版の雛形
2007-06-10-3
[Programming]
自分用メモ。
SUFARYガイドにあるやつを改訂。
UTF-8 が対象。正規表現部分は[2006-03-09-1]のそのまま。
Index point (バイナリ) を吐き出した後、 mkary -so する (sort only)。
使い方:
メモ:
- SUFARY の mkary -c (文字単位インデックス作成)は、
日本語は EUC-JP のみ対応。
- そこで、UTF-8 単位でのインデックスポイント(ip)を
別プログラム(mkipu8.pl)で出力し、
mkary の ip のソートだけするオプション(-so)を使って
最終的に *.ary を仕上げる。
- UTF-8 のマッチは下記を参照:
[を] UTF-8 の文字にマッチする正規表現[2006-03-09-1]
- SUFARY ガイドに載っているip出力サンプルプログラムは obsolete。
SUFARYガイドにあるやつを改訂。
UTF-8 が対象。正規表現部分は[2006-03-09-1]のそのまま。
Index point (バイナリ) を吐き出した後、 mkary -so する (sort only)。
my $ip = 0; while (<>) { my $idxstr = $_; my $start = 0; while ($idxstr =~ m{([\x00-\x7f]|[\xC0-\xDF][\x80-\xBF]| [\xE0-\xEF][\x80-\xBF]{2}| [\xF0-\xF7][\x80-\xBF]{3})}gsx){ my $c = $1; last if $c =~ /[\t\n]/; #printf "[%s] %d %d\n", $c, $start, $ip + $start; print pack("N", $ip + $start); $start += length($c); } $ip += length($idxstr); }
使い方:
% mkipu8.pl text-utf8.txt > text-utf8.txt.ary % mkary -so text-utf8.txt ... % sass 'ほげ' text-utf8.txt ...
メモ:
- SUFARY の mkary -c (文字単位インデックス作成)は、
日本語は EUC-JP のみ対応。
- そこで、UTF-8 単位でのインデックスポイント(ip)を
別プログラム(mkipu8.pl)で出力し、
mkary の ip のソートだけするオプション(-so)を使って
最終的に *.ary を仕上げる。
- UTF-8 のマッチは下記を参照:
[を] UTF-8 の文字にマッチする正規表現[2006-03-09-1]
- SUFARY ガイドに載っているip出力サンプルプログラムは obsolete。