Ignore:
Timestamp:
2009-02-06T18:19:44+13:00 (15 years ago)
Author:
davidb
Message:

Support for reindexing a document added

File:
1 edited

Legend:

Unmodified
Added
Removed
  • gsdl/trunk/perllib/basebuildproc.pm

    r18463 r18469  
    343343{
    344344    my $self = shift (@_);
    345     my ($field) = @_;
     345    my ($field,$edit_mode) = @_;
    346346
    347347    # Keep some statistics relating to metadata sets used and
     
    355355    my $core_field = $2;
    356356
    357     $self->{'doc_mdprefix_fields'}->{$prefix}->{$core_field}++;
    358     $self->{'mdprefix_fields'}->{$prefix}->{$core_field}++;
     357    if (($edit_mode eq "add") || ($edit_mode eq "reindex")) {
     358        $self->{'doc_mdprefix_fields'}->{$prefix}->{$core_field}++;
     359        $self->{'mdprefix_fields'}->{$prefix}->{$core_field}++;
     360    }
     361    else {
     362        # delete
     363        $self->{'doc_mdprefix_fields'}->{$prefix}->{$core_field}--;
     364        $self->{'mdprefix_fields'}->{$prefix}->{$core_field}--;
     365    }
     366
    359367    }
    360368    elsif ($field =~ m/^[[:upper:]]/) {
    361369    # implicit 'ex' metadata set
    362370
    363     $self->{'doc_mdprefix_fields'}->{'ex'}->{$field}++;
    364     $self->{'mdprefix_fields'}->{'ex'}->{$field}++;
     371    if (($edit_mode eq "add") || ($edit_mode eq "reindex")) {
     372
     373        $self->{'doc_mdprefix_fields'}->{'ex'}->{$field}++;
     374        $self->{'mdprefix_fields'}->{'ex'}->{$field}++;
     375    }
     376    else {
     377        # delete
     378        $self->{'doc_mdprefix_fields'}->{'ex'}->{$field}--;
     379        $self->{'mdprefix_fields'}->{'ex'}->{$field}--;
     380    }
    365381    }
    366382
     
    425441    # delete
    426442    $self->{'num_docs'} -= 1 unless ($doctype eq "classification");
    427     return;
    428443    }
    429444
     
    448463
    449464    # update a few statistics
    450     $self->{'num_bytes'} += $doc_obj->get_text_length ($section);
    451     $self->{'num_sections'} += 1 unless ($doctype eq "classification");
     465    if (($edit_mode eq "add") || ($edit_mode eq "reindex")) {
     466
     467        $self->{'num_bytes'} += $doc_obj->get_text_length ($section);
     468        $self->{'num_sections'} += 1 unless ($doctype eq "classification");
     469    }
     470    else {
     471        # delete
     472        $self->{'num_bytes'} -= $doc_obj->get_text_length ($section);
     473        $self->{'num_sections'} -= 1 unless ($doctype eq "classification");
     474    }
    452475
    453476    # output the fact that this document is a document (unless doctype
     
    488511        # special case for URL metadata
    489512        if ($field =~ /^URL$/i) {
    490             &dbutil::write_infodb_entry($self->{'infodbtype'}, $infodb_handle, $value, { 'section' => [ $section_OID ] });
     513            if (($edit_mode eq "add") || ($edit_mode eq "reindex")) {
     514
     515            &dbutil::write_infodb_entry($self->{'infodbtype'}, $infodb_handle, $value, { 'section' => [ $section_OID ] });
     516            }
     517            else {
     518            # delete
     519            &dbutil::delete_infodb_entry($self->{'infodbtype'}, $infodb_handle, $value);
     520            }
     521
     522           
    491523        }
    492524
     
    496528            if ($section eq "" && $self->{'store_metadata_coverage'} =~ /^true$/i)
    497529            {
    498             $self->infodb_metadata_stats($field);
     530            $self->infodb_metadata_stats($field,$edit_mode);
    499531            }
    500532        }
     
    565597    }
    566598   
    567     &dbutil::write_infodb_entry($self->{'infodbtype'}, $infodb_handle, $section_OID, \%section_infodb);
     599    if (($edit_mode eq "add") || ($edit_mode eq "reindex")) {
     600
     601        &dbutil::write_infodb_entry($self->{'infodbtype'}, $infodb_handle, $section_OID, \%section_infodb);
     602    }
     603    else {
     604        # delete
     605        &dbutil::delete_infodb_entry($self->{'infodbtype'}, $infodb_handle, $section_OID);
     606    }
     607
    568608   
    569609    # output a database entry for the document number, except for Lucene (which no longer needs this information)
    570610    unless (ref($self) eq "lucenebuildproc")
    571611    {
    572         if ($self->{'db_level'} eq "document") {
    573         &dbutil::write_infodb_entry($self->{'infodbtype'}, $infodb_handle, $self->{'num_docs'}, { 'section' => [ $doc_OID ] });
     612        if (($edit_mode eq "add") || ($edit_mode eq "reindex")) {
     613       
     614        if ($self->{'db_level'} eq "document") {
     615            &dbutil::write_infodb_entry($self->{'infodbtype'}, $infodb_handle, $self->{'num_docs'}, { 'section' => [ $doc_OID ] });
     616        }
     617        else {
     618            &dbutil::write_infodb_entry($self->{'infodbtype'}, $infodb_handle, $self->{'num_sections'}, { 'section' => [ $section_OID ] });
     619        }
    574620        }
    575621        else {
    576         &dbutil::write_infodb_entry($self->{'infodbtype'}, $infodb_handle, $self->{'num_sections'}, { 'section' => [ $section_OID ] });
     622
     623        if ($self->{'db_level'} eq "document") {
     624            &dbutil::delete_infodb_entry($self->{'infodbtype'}, $infodb_handle, $self->{'num_docs'});
     625        }
     626        else {
     627            &dbutil::delete_infodb_entry($self->{'infodbtype'}, $infodb_handle, $self->{'num_sections'});
     628        }
     629
    577630        }
    578631    }
Note: See TracChangeset for help on using the changeset viewer.