/[nn]/search/nn-swish.cgi
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /search/nn-swish.cgi

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.8 by dpavlin, Wed Jun 26 12:14:54 2002 UTC revision 1.13 by dpavlin, Tue Sep 9 08:20:51 2003 UTC
# Line 2  Line 2 
2    
3  use strict;  use strict;
4  use CGI qw/:standard -no_xhtml/;  use CGI qw/:standard -no_xhtml/;
 use Text::Query;  
5  use CGI::Carp qw(fatalsToBrowser);  use CGI::Carp qw(fatalsToBrowser);
6  use SWISH;  use SWISH;
7  use Unicode::String qw(utf8 utf16);  use Unicode::String qw(utf8 utf16);
8  require Unicode::Map8;  require Unicode::Map8;
9    use GDBM_File;
10    
11  my $dir='/home/dpavlin/nn/swish';  my $dir='/home/dpavlin/nn/swish';
12    my $prog='/usr/bin/swish-e';
13    
14  my $hits=0;  my $hits=0;
15  my $max_hits=100;  my $max_hits=100;
16    
17  my %labels = (100=>' 100', 200=>' 200', 500=>' 500', 0=>'neograničeno');  my %labels = (100=>' 100', 200=>' 200', 500=>' 500', 0=>'neograničeno');
18    
19    my %brs_labels;
20    
21    my %tie;
22    tie %tie, 'GDBM_File', "$dir/brzakona.gdbm", &GDBM_READER, 0640 || die "tie: $!";
23    foreach (sort keys %tie) {
24            $brs_labels{$_} = sprintf("%-8s (%d zakona)",$_,$tie{$_});
25    }
26    untie %tie;
27    
28  print header(-charset=>'iso-8859-2'),start_html(-title=>'NN pretrazivanje',-lang=>'hr'),start_form;  print header(-charset=>'iso-8859-2'),start_html(-title=>'NN pretrazivanje',-lang=>'hr'),start_form;
29  print "Potraži ",popup_menu(-name=>'max_hits',-values=>[ sort keys %labels ],-labels=>\%labels,-default=>$max_hits)," zakona sa riječima: ",textfield('search');  print "Potraži ",popup_menu(-name=>'max_hits',-values=>[ sort keys %labels ],-labels=>\%labels,-default=>$max_hits)," zakona sa riječima: ",textfield('search');
30  print submit(-value=>'prikaži');  print submit(-value=>'prikaži');
31    print br,checkbox(-name=>'br_limit', -checked=>0, -label=>"ograniči pretraživanje samo na broj "),popup_menu(-name=>'br',-values=>[sort keys %brs_labels],-labels=>\%brs_labels);
32  print end_form,hr;  print end_form,hr;
33    
34  if (param('search')) {  if (param('search')) {
# Line 28  if (param('search')) { Line 39  if (param('search')) {
39                  if (m/^([+-])(\S+)/) {                  if (m/^([+-])(\S+)/) {
40                          $s.= ($s) ? "and " : "";                          $s.= ($s) ? "and " : "";
41                          $s.="not " if ($1 eq "-");                          $s.="not " if ($1 eq "-");
42                          $s.="$2 ";                          $s.="$2* ";
43                  } else {                  } else {
44                          $s .= "$_ ";                          $s .= "$_* ";
45                  }                  }
46          }          }
47          $s=~tr/šđžčćŠĐŽČĆ/šđžčćŠĐŽČĆ/;  # 1250 -> iso8859-2          $s=~tr/šđžčćŠĐŽČĆ/šđžčćŠĐŽČĆ/;  # 1250 -> iso8859-2
# Line 40  if (param('search')) { Line 51  if (param('search')) {
51          my $us = Unicode::String->new();          my $us = Unicode::String->new();
52    
53          my $sh = SWISH->connect('Fork',          my $sh = SWISH->connect('Fork',
54                  prog     => "$dir/swish-e",                  prog     => $prog,
55                  indexes  => "$dir/nn.index",                  indexes  => "$dir/nn.index",
56                  properties  => [qw/god br nr/],                  properties  => [qw/god br nr/],
57                  results  => sub {                  results  => sub {
# Line 59  if (param('search')) { Line 70  if (param('search')) {
70    
71          die $SWISH::errstr unless $sh;          die $SWISH::errstr unless $sh;
72    
73          $hits = $sh->query("naslov_czs=($s)");          my $sw_q = "naslov_czs=($s)";
74    
75            if (param('br_limit')) {
76                    my ($god,$br) = split(/\//,param('br'));
77                    $sw_q .= " and god=".int($god) if ($god);
78                    $sw_q .= " and br=".int($br) if ($br);
79            }
80    
81            print "<!-- swish query: $sw_q -->";
82    
83            $hits = $sh->query($sw_q);
84    
85          if ($hits > 0) {          if ($hits > 0) {
86                  print p,hr,"Prikazujem $hits zakona (maks. ",param('max_hits') || $max_hits,")... <small>($s)</small>";                  print p,hr,"Prikazujem $hits zakona";
87                    print " iz broja ",param('br') if (param('br_limit'));
88                    print " (maks. ",param('max_hits') || $max_hits,")... <small>($s)</small>";
89          } else {          } else {
90                  print p,"Nije nađen niti jedan zakon... <small>($s, ",$sh->errstr,")</small>";                  print p,"Nije nađen niti jedan zakon... <small>($s, ",$sh->errstr,")</small>";
91          }          }
92  } else {  } else {
93          print p('Kod pretraživanja pretraživač pronalazi sve zakone u kojima se pojavljuju <b>sve upisanje riječi</b>.',br,'Ako ispred riječi upišete minus (-) neće se prikazivati zakoni koji imaju takvu riječ. Npr. <tt>+kava +zakon -dopunama</tt>');          print p('Kod pretraživanja pretraživač pronalazi sve zakone u kojima se pojavljuju <b>sve upisanje riječi</b>.',br,'Ako ispred riječi upišete minus (-) neće se prikazivati zakoni koji imaju takvu riječ. Npr. <tt>+kava +zakon -dopunama</tt>');
94          print p("Možete pročitati i <a href=\"http://www.rot13.org/~dpavlin/nn.html\">članak</a> o tome kako je ovaj pretraživač napravljen i zašto.");          print p("Možete pročitati i <a href=\"http://www.rot13.org/~dpavlin/nn.html\">članak</a> o tome kako je ovaj pretraživač napravljen i zašto."),p("Ovo je <i>nova i brža verzija pretraživača</i> o kojoj <a href=\"http://www.rot13.org/~dpavlin/nn.html#buducnost\">više možete saznati</a> iz članka.");
95  }  }

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.13

  ViewVC Help
Powered by ViewVC 1.1.26