my $doc = $self->{invindex}->new_doc( $uri ) || $log->logdie("can't create new_doc( $uri )");
- sub add_value($$) {
- my ($n,$v) = @_;
+ sub add_value($$$) {
+ my ($doc,$n,$v) = @_;
eval { $doc->set_value($n, $self->convert($v) ) };
$log->warn("can't insert: $n = $v") if ($@);
}
- add_value('uri', $uri);
+ add_value($doc, 'uri', $uri);
$log->debug("ds = ", sub { Dumper($args->{'ds'}) } );
$vals = $self->convert( $vals ) or
$log->logdie("can't convert '$vals' to UTF-8");
- add_value( $tag, $vals );
+ add_value($doc, $tag, $vals );
}
if (my $text = $args->{'text'}) {
- add_value( 'bodytext', $text );
+ add_value($doc, 'bodytext', $text );
}
#$log->debug("adding ", sub { $doc->dump_draft } );
return 1;
}
+=head2 finish
+
+Close index
+
+ $index->finish;
+
+=cut
+
+sub finish {
+ my $self = shift;
+
+ $self->_get_logger()->info("finish index writing to disk");
+ $self->{invindex}->finish;
+}
=head2 convert
$indexer_config->{clean} = $clean;
$indexer_config->{label} = $db_config->{name};
+ # important: clean database just once!
+ $clean = 0;
+
if ($use_indexer eq 'hyperestraier') {
# open Hyper Estraier database
# open KinoSearch
use WebPAC::Output::KinoSearch;
+ $indexer_config->{clean} = 1 unless (-e $indexer_config->{index_path});
$indexer = new WebPAC::Output::KinoSearch( %{ $indexer_config } );
} else {
};
+ eval { $indexer->finish } if ($indexer->can('finish'));
+
my $dt = time() - $start_t;
$log->info("$total_rows records indexed in " .
sprintf("%.2f sec [%.2f rec/sec]",