Ignore:
Timestamp:
2013-05-14T11:09:58+12:00 (11 years ago)
Author:
kjdon
Message:

changed the way we store the list of fields that has been indexed, and the mapping between index and shortname. They are separated now, to avoid calculating a shortname for a field each time a new document is indexed - previously if there was no value, then the shortname was not remembered as it wasn't indexed, so each new document saw the shortname being calculated again. remove namespaces from meta fields before calculating shortnames, to make them more sensible. eg dc.Title->TI instead of DC.

File:
1 edited

Legend:

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

    r27306 r27328  
    489489    $self->{'buildproc'}->set_index_languages ($languagemetadata, $langarr) if (defined $language);
    490490    $self->{'buildproc'}->set_indexing_text (1);
    491     #$self->{'buildproc'}->set_indexfieldmap ($self->{'indexfieldmap'});
    492491    $self->{'buildproc'}->set_levels ($self->{'levels'});
    493492    $self->{'buildproc'}->set_db_level ($db_level);   
     
    637636    # these now come from collection meta. if that is not defined, uses the metadata name
    638637    my $collmeta = "";
    639     if (defined $self->{'build_cfg'}->{'indexfields'}) {
    640     foreach my $longfield (@{$self->{'build_cfg'}->{'indexfields'}}){
    641         my $shortfield = $self->{'buildproc'}->{'indexfieldmap'}->{$longfield};
     638    if (defined $self->{'build_cfg'}->{'extraindexfields'}) {
     639    foreach my $longfield (@{$self->{'build_cfg'}->{'extraindexfields'}}){
     640        my $shortfield = $self->{'buildproc'}->{'fieldnamemap'}->{$longfield};
    642641        next if $shortfield eq 1;
    643642       
     
    743742   
    744743    #add all fields bit
    745     my $ifm = $self->{'buildproc'}->{'indexfieldmap'};
     744    my $fnm = $self->{'buildproc'}->{'fieldnamemap'};
    746745   
    747746    foreach $field (@specifiedfieldorder) {
    748747    if ($field eq "metadata") {
    749         foreach my $newfield (keys %{$self->{'buildproc'}->{'indexfields'}}) {
     748        foreach my $newfield (keys %{$self->{'buildproc'}->{'extraindexfields'}}) {
    750749        if (!defined $specifiedfields->{$newfield}) {
    751             push (@indexfieldmap, "$newfield\-\>$self->{'buildproc'}->{'indexfieldmap'}->{$newfield}");
     750            push (@indexfieldmap, "$newfield\-\>$fnm->{$newfield}");
    752751            push (@indexfields, "$newfield");
    753752        }
     
    762761    } else {
    763762        # we only add in the ones that have been processed
    764         if (defined $ifm->{$field}) {
    765         push (@indexfieldmap, "$field\-\>$ifm->{$field}");
     763        if (defined $self->{'buildproc'}->{'allindexfields'}->{$field}) {
     764        push (@indexfieldmap, "$field\-\>$fnm->{$field}");
    766765        push (@indexfields, "$field");
    767766        }
Note: See TracChangeset for help on using the changeset viewer.