Changeset 28119


Ignore:
Timestamp:
2013-08-22T16:20:54+12:00 (11 years ago)
Author:
ak19
Message:

First commit of better error checking of system commands in mgppbuilder. Before using bitwise operations with flags for indexes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/perllib/mgppbuilder.pm

    r27997 r28119  
    253253        die "mgppbuilder::compress_text - couldn't run $mgpp_compression_dict_exe\n";
    254254    }
    255     system ("mgpp_compression_dict$exe -f \"$fulltextprefix\" -S -H -2 -k 5120 $osextra");
     255    my $comp_dict_status = system ("mgpp_compression_dict$exe -f \"$fulltextprefix\" -S -H -2 -k 5120 $osextra");
     256    if($comp_dict_status != 0) {
     257        print $outhandle "\nmgppbuilder::compress_text - Warning: there's no compressed text\n";
     258        $self->{'notbuilt'}->{'compressedtext'} = 1;
     259        print STDERR "<Warning name='NoCompressedText'/>\n</Stage>\n" if $self->{'gli'};
     260        return;
     261    }
    256262
    257263    if (!$self->{'debug'}) {
     
    564570    my $weights_cmd = "mgpp_weights_build$exe -f \"$fullindexprefix\" $osextra";
    565571    print $outhandle "\ncmd: $weights_cmd\n" if ($self->{'verbosity'} >= 4);   
    566     system ($weights_cmd);
     572    my $weights_status = system ($weights_cmd);
     573    # check that it worked - if not, don't carry on
     574    if ($weights_status !=0) {
     575        print $outhandle "mgppbuilder::build_index - No Index: couldn't create weights file, error calling mggp_weights_build.\n";
     576        print STDERR "<Warning name='NoIndex'/>\n</Stage>\n" if $self->{'gli'};
     577        $self->{'notbuilt'}->{$index}=1;
     578        return;
     579       
     580    }
    567581
    568582    # create 'on-disk' stemmed dictionary
     
    572586        die "mgppbuilder::build_index - couldn't run $mgpp_invf_dict_exe\n";
    573587    }
    574     system ("mgpp_invf_dict$exe -f \"$fullindexprefix\" $osextra" );
    575 
     588    my $invdict_status = system ("mgpp_invf_dict$exe -f \"$fullindexprefix\" $osextra" );
     589    # check that it worked - if not, don't carry on
     590    if ($invdict_status !=0) {
     591        print $outhandle "mgppbuilder::build_index - No Index: couldn't create on-disk stemmed dictionary, error calling mggp_invf_dict.\n";
     592        print STDERR "<Warning name='NoIndex'/>\n</Stage>\n" if $self->{'gli'};
     593        $self->{'notbuilt'}->{$index}=1;
     594        return;
     595       
     596    }
    576597
    577598    # creates stem index files for the various stemming methods
     
    585606    if ($self->{'accentfold'}) {
    586607        # the first time we do this, we test for accent folding enabled
    587         if (system ("mgpp_stem_idx$exe -b 4096 -s4 -f \"$fullindexprefix\" $osextra") == 2) {
     608        my $accent_status = system ("mgpp_stem_idx$exe -b 4096 -s4 -f \"$fullindexprefix\" $osextra");
     609        if ($accent_status == 2) {
    588610        # accent folding has not been enabled in mgpp
    589611        $accent_folding_enabled = 0;
    590612        $self->{'stemindexes'} -= 4;
     613        } elsif ($accent_status != 0) {
     614        print $outhandle "\nAccent folding failed: mgpp_stem_idx exit status $accent_status\n" if ($self->{'verbosity'} >= 4);
     615        $self->{'accentfold'} = 0;
     616        #$accent_folding_enabled = 0;
     617        $self->{'stemindexes'} -= 4;
    591618        }
    592619    }
    593620    if ($self->{'casefold'}) {
    594         system ("mgpp_stem_idx$exe -b 4096 -s1 -f \"$fullindexprefix\" $osextra");
    595         if ($accent_folding_enabled && $self->{'accentfold'}) {
    596         system ("mgpp_stem_idx$exe -b 4096 -s5 -f \"$fullindexprefix\" $osextra");
     621        my $casefold_status = system ("mgpp_stem_idx$exe -b 4096 -s1 -f \"$fullindexprefix\" $osextra");
     622        if ($casefold_status != 0) {
     623        print $outhandle "\nCase folding failed: mgpp_stem_idx exit status $casefold_status\n" if ($self->{'verbosity'} >= 4);
     624        $self->{'casefold'} = 0;
     625        $self->{'stemindexes'} -= 1;
     626        }
     627       
     628        elsif ($accent_folding_enabled && $self->{'accentfold'}) {
     629        my $status = system ("mgpp_stem_idx$exe -b 4096 -s5 -f \"$fullindexprefix\" $osextra");
     630        if($status != 0) {
     631            print $outhandle "\nAccent folding (with casefolding) failed: mgpp_stem_idx exit status $status\n" if ($self->{'verbosity'} >= 4);
     632            $self->{'accentfold'} = 0;
     633            $self->{'stemindexes'} -= 4; # casefold worked, only accentfold failed, so -= 4, not -= 5
     634        }
    597635        }
    598636    }
    599637    if ($self->{'stem'}) {
    600         system ("mgpp_stem_idx$exe -b 4096 -s2 -f \"$fullindexprefix\" $osextra");
    601         if ($accent_folding_enabled && $self->{'accentfold'}) {
    602         system ("mgpp_stem_idx$exe -b 4096 -s6 -f \"$fullindexprefix\" $osextra");
     638        my $stem_status = system ("mgpp_stem_idx$exe -b 4096 -s2 -f \"$fullindexprefix\" $osextra");
     639        if ($stem_status != 0) {
     640        print $outhandle "\nStemming failed: mgpp_stem_idx exit status $stem_status\n" if ($self->{'verbosity'} >= 4);
     641        $self->{'stem'} = 0;
     642        $self->{'stemindexes'} -= 2;
     643        }
     644        elsif ($accent_folding_enabled && $self->{'accentfold'}) {
     645        my $status = system ("mgpp_stem_idx$exe -b 4096 -s6 -f \"$fullindexprefix\" $osextra");
     646        if($status != 0) {
     647            print $outhandle "\nAccent folding (with stemming) failed: mgpp_stem_idx exit status $status\n" if ($self->{'verbosity'} >= 4);
     648            $self->{'accentfold'} = 0;
     649            $self->{'stemindexes'} -= 4; # stem worked, only accentfold failed, so -= 4, not -= 6
     650        }
    603651        }
    604652    }
    605653    if ($self->{'casefold'} && $self->{'stem'}) {
    606         system ("mgpp_stem_idx$exe -b 4096 -s3 -f \"$fullindexprefix\" $osextra");
    607         if ($accent_folding_enabled && $self->{'accentfold'}) {
    608         system ("mgpp_stem_idx$exe -b 4096 -s7 -f \"$fullindexprefix\" $osextra");
     654        my $case_and_stem_status = system ("mgpp_stem_idx$exe -b 4096 -s3 -f \"$fullindexprefix\" $osextra");
     655        if ($case_and_stem_status != 0) {
     656        print $outhandle "\nCasefolding and stemming failed: mgpp_stem_idx exit status $case_and_stem_status\n" if ($self->{'verbosity'} >= 4);
     657        $self->{'stem'} = 0;
     658        $self->{'casefold'} = 0;
     659        $self->{'stemindexes'} -= 3;
     660        }
     661        elsif ($accent_folding_enabled && $self->{'accentfold'}) {
     662        my $status = system ("mgpp_stem_idx$exe -b 4096 -s7 -f \"$fullindexprefix\" $osextra");
     663        if($status != 0) {
     664            print $outhandle "\nAccent folding (with stemming and casefolding) failed: mgpp_stem_idx exit status $status\n" if ($self->{'verbosity'} >= 4);
     665            $self->{'accentfold'} = 0;
     666            $self->{'stemindexes'} -= 4; # casefold and stem worked, only accentfold failed, so -= 4, not -= 7
     667        }
    609668        }
    610669    }
Note: See TracChangeset for help on using the changeset viewer.