r527@llin: dpavlin | 2006-04-17 18:50:54 +0200
authorDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 17 Apr 2006 16:50:53 +0000 (16:50 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 17 Apr 2006 16:50:53 +0000 (16:50 +0000)
 call finish at end of indexing, force create if index_path doesn't exist

git-svn-id: svn+ssh://mjesec/home/dpavlin/svn/webpac2/trunk@434 07558da8-63fa-0310-ba24-9fe276d99e06

lib/WebPAC/Output/KinoSearch.pm
run.pl

index 8e25eaf..2edf662 100644 (file)
@@ -155,13 +155,13 @@ sub add {
 
        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'}) } );
 
@@ -183,11 +183,11 @@ sub add {
                $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 } );
@@ -196,6 +196,20 @@ sub add {
        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
 
diff --git a/run.pl b/run.pl
index 70d0784..89b1130 100755 (executable)
--- a/run.pl
+++ b/run.pl
@@ -95,6 +95,9 @@ while (my ($database, $db_config) = each %{ $config->{databases} }) {
        $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
@@ -105,6 +108,7 @@ while (my ($database, $db_config) = each %{ $config->{databases} }) {
 
                # open KinoSearch
                use WebPAC::Output::KinoSearch;
+               $indexer_config->{clean} = 1 unless (-e $indexer_config->{index_path});
                $indexer = new WebPAC::Output::KinoSearch( %{ $indexer_config } );
 
        } else {
@@ -226,6 +230,8 @@ while (my ($database, $db_config) = each %{ $config->{databases} }) {
 
        };
 
+       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]",