[Tokyo.pm] Re: 単語を含む文字列の出現回数

taguti taguti @ secom-sis.co.jp
2002年 11月 18日 (月) 03:37:40 CST


田口です。

再投稿は明日になりますが、

maeda> >	$uri =~ s|(\w+)|++$WORD{$1} if length($1) >= 5|ge;
maeda> >	$uriList =~ s|\t\S*$w\S*\s(\d+)|$WORDREX{$w} += $1|ge;
maeda> 
maeda> こういうs///の使い方はないと思う。
maeda> どうして足し算の結果を文字列に残す必要があるのか。
maeda> while(m//g){...}のつもりだった?

2個目の
$uriList =~ s|\t\S*$w\S*\s(\d+)|$WORDREX{$w} += $1|ge;
は、出来るだけ速度を上げるために考えたものです。
$uriListは、「タブ、URL、空白1つ、その出現回数」の繰り返しで、
全体で60MBくらいあります。URLの数では65万件。
ある単語がそのURLに含まれるかチェックするのに、
for $w (keys %WORD) {
  for $u (keys %URI) {
    if ($u =~ /$w/) {
より、ずっと早いみたいなので。

maeda> どうして足し算の結果を文字列に残す必要があるのか。

本当に$uriListを置換する必要はないし、そうすると遅くなりそう
だけど、置換しないでコードだけ実行する書き方が判んないです。

Hirosi Taguti
H-taguchi @ secom.co.jp



Tokyo-pm メーリングリストの案内