--- trunk/WebPac.pm 2003/01/11 19:55:30 9 +++ trunk/WebPac.pm 2003/02/23 15:47:40 35 @@ -6,19 +6,25 @@ use HTML::Pager; use HTML::FillInForm; use SWISH; -use Unicode::String qw(utf8 utf16); -require Unicode::Map8; +use Text::Iconv; use DBI; +use lib '..'; +use index_DBI; +use back2html; + # configuration options # FIX: they really should go in configuration file! my $TEMPLATE_PATH = '/data/webpac/template_html'; my $CHARSET = 'ISO-8859-2'; -my $SWISH = '/data/swish/swish-e'; +my $SWISH = '/usr/bin/swish-e'; my $INDEX = '/data/webpac/index/isis.index'; my $MAX_HITS = 500; my $ON_PAGE = 10; +Text::Iconv->raise_error(0); # Conversion errors raise exceptions + +my $from_utf8 = Text::Iconv->new('UTF8', $CHARSET); sub setup { my $self = shift; @@ -85,33 +91,30 @@ $s.="$_* "; } } + $s =~ s/\*+/*/g; push @s_arr,$q->param("f$i")."_swish=($s)"; } my $tmpl = $self->load_tmpl('results.html'); - my $l2_map = Unicode::Map8->new($CHARSET) || die; - my $us = Unicode::String->new(); - # call swish my $sh = SWISH->connect('Fork', prog => $SWISH, indexes => $INDEX, - #properties => [qw/god br nr/], + properties => [qw/swishdocpath swishrank swishtitle headline html/], results => sub { my ($sh,$hit) = @_; - $us->utf8($hit->swishtitle); - push @swish_results, { nr => ($#swish_results + 2), path => $hit->swishdocpath, - title => $l2_map->to8($us->utf16), +# headline => $from_utf8->convert($hit->headline), +# html => back2html($from_utf8->convert($hit->html)), + headline => $hit->headline, + html => back2html($hit->html), rank => $hit->swishrank }; -# my @fields = $hit->field_names; -# print "Field '$_' = '", $hit->$_, "'
\n" for sort @fields; }, #startnum => 0, maxhits => $MAX_HITS, @@ -171,12 +174,51 @@ my $q = $self->query(); + my $field = $q->param("f$i"); + my $limit = $q->param("v$i"); + my $html; - $html .= "show index of ".$q->param("f$i")." for ".$q->param("v$i"); + my $index = new index_DBI(); + my $total = $index->check($field); + if (! $total) { + my $tmpl = $self->load_tmpl('no_index.html'); + $tmpl->param('field',$field); + $html = $tmpl->output; + return $html; + } - return $html; + my $tmpl = $self->load_tmpl('index_res.html'); + $tmpl->param('field',$field); + $tmpl->param('limit',$limit); + $tmpl->param('total',$total); + +# FIX: I should set offset and leave out limit from fetch!! +# if (! $q->param("PAGER_offset") { +# $q->param("Pager_offet) +# } + + my $pager = HTML::Pager->new( + query => $q, + get_data_callback => sub { + my ($offset, $rows) = @_; + + my @result = $index->fetch($field,'item',$limit, $offset, $rows); + return \@result; + }, + rows => $total, + page_size => $ON_PAGE, + persist_vars => [ + 'rm', + "f$i", "v$i", "f".$i."_index", + 'offset', + ], + debug => 1, + template => $tmpl, + ); + + return $pager->output; } 1;