namazu-ml(avocado)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: pnamazu-98.04.21
Rei FURUKAWA <furukawa@xxxxxxxxxxxxxxxx> wrote:
>perl 版検索クライアントを別便にて高林さんに送ります
<URL:http://saturn.aichi-u.ac.jp/%7Eccsatoru/Namazu/proto/pnamazu-98.04.21.tgz>
に置きました。
>今回は、
>
> 「2 byte 文字中間一致」の実験版です
素晴らしいです。さっそく試してみました。対象は Linux の JF のドキュ
メント 1,000 ファイル約 6MB をインデックスしたものです。
| [Base]
| Date: Tue Apr 21 01:12:32 1998
| Files: 1,079 files
| Size: 6,186,904 bytes
| Keywords: 82,346 words
| Wakati: /usr/local/bin/kakasi -ieuc -oeuc -Ea -w
| Time: 921 sec.
NMZ.m は 約600 KB になりました。
で、ちょっと細工をして実験してみたところ、
% perl namazu.pl "*大学"
| 大 / l: 146863 r: 146974 (111)
| 学 / l: 138504 r: 138546 (42)
| [筑波大学]
| [京都大学]
| [千葉大学]
| [明治大学]
| [大学]
| [慶応大学]
| [同大学]
| [東京大学]
| [大阪大学]
| [神戸大学]
| [三重大学]
| [技術科学大学]
| [広島大学]
|
| 参考ヒット数: [ *大学: 22 ]
| ...
(参考ヒット数より上の部分は私が手を加えて表示させています)
というわけで、ちゃんと後方一致で検索できているようです。検索もほぼ
一瞬です。すごい! で、さらに
% perl namazu.pl "*ネット*"
のように該当するものがかなり多い場合でも 4.5秒ほとで検索できました。
ただし、単語中に使われる文字の頻度によっては非常に時間のかかるもの
もあります。たとえばひらがなを除外しないでインデックスを作った場合
はひらがなの頻度が異常に高くなってしまいます。
% perl mbnmz.pl > mblog
として NMZ.mi? を作成したときのログを利用して
% nkf -e mblog |perl -ne 'next unless /^(..): (.*)/; \
$n = tr/ / / -1; print "$n $1\n";' |sort -nr > mbstat
のように文字毎の頻度を調べると
% head mbstat
6200 い
4854 な
4802 で
4775 る
4623 と
4378 の
4311 し
4270 す
4131 て
4026 ま
という具合になります。この数字はちょっと苦しいものがありますね。古
川さんの最初の実装のように 2文字づつ記録する形ならこの点はもっと効
率的なんですが、記憶容量に限界があるし、とちょっと悩むところです。
あと、
% perl namazu.pl "*あいうえお"
のように実行したら
| あ / l: 3583 r: 5535 (1952)
| い / l: 5540 r: 11740 (6200)
| う / l: 11741 r: 14948 (3207)
| え / l: 14950 r: 15256 (306)
| お / l: 15256 r: 15989 (733)
| [このばあい]
| [のばあい]
| [あい]
| 検索結果
|
| 参考ヒット数: [ *あい: 4 ] [ う: 56 ]
のようにおかしな結果になりました。これは『あ』と『い』を通過して
『う』の時点で該当するものがなくなって、意図しない動作になってしまっ
たものと思われます。今日はもう眠いのでまた明日調べます。
--
高林 哲 Satoru Takabayashi
ゆで卵つき、いとしいウォルター