/[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

Annotation of /search/nn-swish.cgi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.6 - (hide annotations)
Wed Jun 26 08:55:39 2002 UTC (21 years, 10 months ago) by dpavlin
Branch: MAIN
Changes since 1.5: +13 -3 lines
rewrite query with +/- to and/and not

1 dpavlin 1.1 #!/usr/bin/perl -w
2    
3     use strict;
4     use CGI qw/:standard -no_xhtml/;
5     use Text::Query;
6     use CGI::Carp qw(fatalsToBrowser);
7     use SWISH;
8 dpavlin 1.5 use Unicode::String qw(utf8 utf16);
9 dpavlin 1.3 require Unicode::Map8;
10 dpavlin 1.1
11     my $dir='/home/dpavlin/nn/swish';
12    
13     my $hits=0;
14    
15     print header(-charset=>'iso-8859-2'),start_html(-title=>'NN pretrazivanje',-lang=>'hr'),start_form;
16 dpavlin 1.3 print "Potra¾i zakone sa rijeèima: ",textfield('search');
17 dpavlin 1.1 print submit(-value=>'prika¾i');
18     print end_form,hr;
19    
20     if (param('search')) {
21    
22 dpavlin 1.6 my $s;
23     # re-write query from +/- to and/and not
24     foreach (split(/\s+/,param('search'))) {
25     if (m/^([+-])(\S+)/) {
26     $s.= ($s) ? "and " : "";
27     $s.="not " if ($1 eq "-");
28     $s.="$2 ";
29     } else {
30     $s .= "$_ ";
31     }
32     }
33 dpavlin 1.1 $s=~tr/šðžèæŠÐŽÈÆ/¹ð¾èæ©Ð®ÈÆ/; # 1250 -> iso8859-2
34     $s=~tr/¹©ðÐèÈæƾ®/sSdDcCcCzZ/;
35    
36 dpavlin 1.3 my $l2_map = Unicode::Map8->new("ISO-8859-2") || die;
37 dpavlin 1.5 my $us = Unicode::String->new();
38 dpavlin 1.3
39 dpavlin 1.1 my $sh = SWISH->connect('Fork',
40     prog => "$dir/swish-e",
41     indexes => "$dir/nn.index",
42 dpavlin 1.3 properties => [qw/god br nr/],
43 dpavlin 1.2 results => sub {
44 dpavlin 1.3 my ($sh,$hit) = @_;
45    
46 dpavlin 1.5 $us->utf8($hit->swishtitle);
47 dpavlin 1.2
48 dpavlin 1.5 print "<a href=\"",$hit->swishdocpath,"\"><tt>NN",$hit->god,"/",$hit->br,"</a> ",$hit->nr," </tt>",$l2_map->to8($us->utf16),"</a> [",$hit->swishrank,"]<br>\n";
49 dpavlin 1.2
50 dpavlin 1.3 # print $_[1]->as_string,"<br>\n";
51 dpavlin 1.2 # my @fields = $hit->field_names;
52     # print "Field '$_' = '", $hit->$_, "'<br>\n" for sort @fields;
53     },
54 dpavlin 1.1 );
55    
56     die $SWISH::errstr unless $sh;
57    
58 dpavlin 1.2 $hits = $sh->query("naslov_czs=($s)");
59 dpavlin 1.1
60     if ($hits > 0) {
61 dpavlin 1.6 print p,hr,"Naðeno je $hits zakona... <small>($s)</small>";
62 dpavlin 1.1 } else {
63 dpavlin 1.6 print p,"Nije naðen niti jedan zakon... <small>($s, ",$sh->errstr,")</small>";
64 dpavlin 1.1 }
65     } else {
66 dpavlin 1.4 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>');
67 dpavlin 1.1 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.");
68     }

  ViewVC Help
Powered by ViewVC 1.1.26