--- search/nn-swish.cgi 2002/09/18 10:03:18 1.11 +++ search/nn-swish.cgi 2003/09/09 08:20:51 1.13 @@ -6,17 +6,29 @@ use SWISH; use Unicode::String qw(utf8 utf16); require Unicode::Map8; +use GDBM_File; my $dir='/home/dpavlin/nn/swish'; +my $prog='/usr/bin/swish-e'; my $hits=0; my $max_hits=100; my %labels = (100=>' 100', 200=>' 200', 500=>' 500', 0=>'neograničeno'); +my %brs_labels; + +my %tie; +tie %tie, 'GDBM_File', "$dir/brzakona.gdbm", &GDBM_READER, 0640 || die "tie: $!"; +foreach (sort keys %tie) { + $brs_labels{$_} = sprintf("%-8s (%d zakona)",$_,$tie{$_}); +} +untie %tie; + print header(-charset=>'iso-8859-2'),start_html(-title=>'NN pretrazivanje',-lang=>'hr'),start_form; print "Potraži ",popup_menu(-name=>'max_hits',-values=>[ sort keys %labels ],-labels=>\%labels,-default=>$max_hits)," zakona sa riječima: ",textfield('search'); print submit(-value=>'prikaži'); +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); print end_form,hr; if (param('search')) { @@ -39,7 +51,7 @@ my $us = Unicode::String->new(); my $sh = SWISH->connect('Fork', - prog => "$dir/swish-e", + prog => $prog, indexes => "$dir/nn.index", properties => [qw/god br nr/], results => sub { @@ -58,10 +70,22 @@ die $SWISH::errstr unless $sh; - $hits = $sh->query("naslov_czs=($s)"); + my $sw_q = "naslov_czs=($s)"; + + if (param('br_limit')) { + my ($god,$br) = split(/\//,param('br')); + $sw_q .= " and god=".int($god) if ($god); + $sw_q .= " and br=".int($br) if ($br); + } + + print ""; + + $hits = $sh->query($sw_q); if ($hits > 0) { - print p,hr,"Prikazujem $hits zakona (maks. ",param('max_hits') || $max_hits,")... ($s)"; + print p,hr,"Prikazujem $hits zakona"; + print " iz broja ",param('br') if (param('br_limit')); + print " (maks. ",param('max_hits') || $max_hits,")... ($s)"; } else { print p,"Nije nađen niti jedan zakon... ($s, ",$sh->errstr,")"; }