--- db/prgsrc/eq/Attic/findequal.pl 2001/05/18 03:12:49 1.3 +++ db/prgsrc/eq/Attic/findequal.pl 2001/11/25 23:40:27 1.11 @@ -32,8 +32,27 @@ use POSIX qw (locale_h); do "common.pl"; +my ($thislocale); +if ($^O =~ /win/i) { + $thislocale = "Russian_Russia.20866"; +} else { + $thislocale = "ru_RU.KOI8-R"; +} +POSIX::setlocale( &POSIX::LC_ALL, $thislocale ); +if ((uc 'Á') ne 'á') {die "!Koi8-r locale not installed!\n"}; + + + +if ((uc 'Á') ne 'á') {die "!Koi8-r locale not installed!\n"}; + + + if (checktable('equalto')) {die "The table equalto exists. You must delete it first!\n"}; +if ((uc 'Á') ne 'á') {die "!Koi8-r locale not installed!\n"}; + + + print "Creating equalto table...\n"; mydo("CREATE TABLE equalto ( @@ -44,16 +63,19 @@ print "Creating equalto table...\n"; or die "Can't create equalto table: $!\n"; +if ((uc 'Á') ne 'á') {die "!Koi8-r locale not installed!\n"}; +print "before getbase"; -getbase(QuestionId,Question); +getbase(QuestionId,Question,Authors,Comments); +print "after getbase"; print "Loading questions...\n"; -#if ((uc 'Á') ne 'á') {die "!Koi8-r locale not installed!\n"}; +if ((uc 'Á') ne 'á') {die "!Koi8-r locale not installed!\n"}; -while ((($id, $a) = getrow), $id) +while ((($id, $a,$author,$comment) = getrow), $id) { if (!($id%1000)) {print "$id questions loaded...\n"} @@ -62,6 +84,7 @@ while ((($id, $a) = getrow), $id) $a=~s/[^êãõëåîçûýúèÿüöäìïòðá÷ùæñþóíéôøâàÊÃÕËÅÎÇÛÝÚÈßÆÙ×ÁÐÒÏÌÄÖÜÑÞÓÍÉÔØÂÀ]//g; $ar[$id]=$a; + $dop[$id]= ($author ? 2 : 0) + ($comment ? 1 : 0); $last=$id; } @@ -71,7 +94,7 @@ print "Checking...\n"; $cur=0; $ar[0]="\0"; -foreach $q (sort {($ar[$a] cmp $ar[$b])} 1..$last) +foreach $q (sort {($ar[$a] cmp $ar[$b]) || ($dop[$b]<=>$dop[$a])} 1..$last) { if ($ar[$q] eq $ar[$cur]) {$equal{$q}=$cur} else {$cur=$q} }