Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Timur Sabirzyanov                    2:5080/197.197 26 Oct 2001  01:07:22
 To : All
 Subject : у меня работает, а у провайдера нет :(
 -------------------------------------------------------------------------------- 
 
 
 изобретаю вот велосипед
 систему поисковую, простенькую.
 данный скрипт например ищет в htmlках слова и складывает их в базу чтоб потом по
 ней можно было поиск делать.
 у меня локально под mysql 3.23.33, for Win95/Win98 (i32)
 и v5.6.1 built for MSWin32-x86-multi-thread
 все прекрасно отрабатывает, но у провайдера почему-то нет.
 таблица search_docs заполняется, а вот search_keys нет.
 
 где собака порылась?
 #!/usr/bin/perl
 
 use DBI;
 use locale;
 use POSIX qw(locale_h);
 setlocale(LC_CTYPE, "Russian_Russia.1251");
 use strict;
 
 my $dbh;
 my $doc_id;
 my $l;
 my $key;
 my $fname;
 my $keyw;
 my $keym;
 my @docs;
 
 sub scandir {
   my $d;
   my $nd;
   opendir(DIR, $_[0]);
   foreach $d (sort { uc($a) cmp uc($b) } readdir(DIR)) {
     if (($d ne ".") && ($d ne "..")) {
       $nd = $_[0] . "/" . "$d";
       if ( -d $nd ) {
         &scandir($nd);
       } else {
         $nd =~ s/\/\//\//g;
         push(@docs, $nd) if($nd =~ /.*\.html/ or $nd =~ /.*\.shtml/);
       }
     }
   }
   closedir(DIR);
 }
 
 &scandir('/home/html/');
 
 $doc_id = 1;
 
 $dbh =
 DBI->connect("DBI:mysql:database=ostas;host=localhost","ostas","rhjdkz",{'RaiseE
 rror'=>1}) || die $dbh->errstr;
 
 $dbh->do("DELETE FROM search_keys") || die $dbh->errstr;
 $dbh->do("DELETE FROM search_docs") || die $dbh->errstr;
 
 foreach $fname (@docs) {
 
   my @words = ();
   my %hash = ();
   my $html = "";
 
   open HTML, "<$fname" || die "Can't open $fname, $!";
   $html = join('',<HTML>);
   close HTML;
 
   $html =~ s/<(?:[^>'"]*|(['"]).*?\1)*>/ /gs;
   $html =~ s/\n/ /g;
   $html =~ s/\t/ /g;
   $html =~ s/\r/ /g;
   $html =~ s/\&\w+\;/ /gis;
   $html =~ s/\W+/ /gis;
   $html =~ s/\s{2,}/ /g;
 
   @words = split(/ /,$html);
 
   foreach $keyw (@words) {
     $l = length($keyw);
 
     if($l>3 and $l<21) {
 
       $hash{$keyw} = '1';
     }
   }
 
   $dbh->do("INSERT INTO search_docs(id,filename)
 VALUES(?,?)",undef,$doc_id,$fname) || die $dbh->errstr;
 
   foreach $keym ( keys %hash ) {
     $dbh->do("INSERT INTO search_keys(id,keyword)
 VALUES(?,?)",undef,$doc_id,$keym) || die $dbh->errstr;
   }
 
   $doc_id++;
 }
 
 $dbh->disconnect;
 
 print "Content-Type: text/html; charset=windows-1251\n\n";
 print "<p>All right!</p>";
 
 exit;
                                                             WBR, Tim.
 ... Hогу свело - Чеpви
 --- эффералган 500 килограмм
  * Origin: mailto:youaskme@mail.ru (2:5080/197.197)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 у меня работает, а у провайдера нет :(   Timur Sabirzyanov   26 Oct 2001 01:07:22 
 Re: у меня работает, а у провайдера нет :(   Artem Chuprina   29 Oct 2001 20:49:53 
Архивное /ru.perl/47463bd86464.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional