Ignore:
Timestamp:
2019-07-29T11:55:01+12:00 (5 years ago)
Author:
kjdon
Message:

instead of create_shortname, now have get_or_create_shortname. this does the working of looking in fieldnamemap to see if a shortname has already been defined, and saving the new shortnames into the map. get_or_create_sortfield_shortname does the same thing with sortfieldnamemap

File:
1 edited

Legend:

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

    r33327 r33369  
    216216        my $shortname="";
    217217        my $new_field = 0; # have we found a new field name?
    218         if (defined $self->{'fieldnamemap'}->{$real_field}) {
    219         $shortname = $self->{'fieldnamemap'}->{$real_field};
    220         } else {
    221         $shortname = $self->create_shortname($real_field);
    222         $self->{'fieldnamemap'}->{$real_field} = $shortname;
    223         $self->{'fieldnamemap'}->{$shortname} = 1;
    224         }
     218        $shortname = $self->get_or_create_shortname($real_field);
    225219        my @metadata_list = (); # put any metadata values in here
    226220        my $section_text = ""; # put the text in here
     
    322316        &ghtml::htmlsafe($mvalue);
    323317       
    324         if (defined $self->{'fieldnamemap'}->{$mfield}) {
    325             $shortname = $self->{'fieldnamemap'}->{$mfield};
    326         }
    327         else {
    328             $shortname = $self->create_shortname($mfield);
    329             $self->{'fieldnamemap'}->{$mfield} = $shortname;
    330             $self->{'fieldnamemap'}->{$shortname} = 1;
    331         }
     318        $shortname = $self->get_or_create_shortname($mfield);
    332319        $self->{'allindexfields'}->{$mfield} = 1;
    333320        $new_text .= "<$shortname index=\"1\">$mvalue</$shortname>\n";
     
    376363        # ignore special field rank
    377364        next if ($sfield eq "rank" || $sfield eq "none");
    378         my $sf_shortname;
    379         if (defined $self->{'sortfieldnamemap'}->{$sfield}) {
    380         $sf_shortname = $self->{'sortfieldnamemap'}->{$sfield};
    381         }
    382         else {
    383         $sf_shortname = $self->create_sortfield_shortname($sfield);
    384         $self->{'sortfieldnamemap'}->{$sfield} = $sf_shortname;
    385         $self->{'sortfieldnamemap'}->{$sf_shortname} = 1;
    386         }
     365        my $sf_shortname = $self->get_or_create_sortfield_shortname($sfield);
     366     
    387367        my @metadata_list = (); # put any metadata values in here
    388368        foreach my $submeta (split /,/, $sfield) {
     
    397377        push (@metadata_list, @section_metadata);
    398378        }
    399         # my $new_text = "";
    400         # foreach my $item (@metadata_list) {
    401         # &ghtml::htmlsafe($item);
    402         # $new_text .= "$item"; # should be .="$item "; But will be commenting out and rewriting this entire thing, so it doesn't matter
    403         # }
    404         # if ($new_text =~ /\S/) {
    405         # $new_text = "<$sf_shortname index=\"1\" tokenize=\"0\">$new_text</$sf_shortname>";
    406         # # filter the text???
    407         # $text .= "$new_text"; # add it to the main text block
    408         # $self->{'actualsortfields'}->{$sfield} = 1;
    409         # }
    410379       
    411         foreach my $item (@metadata_list) {
    412             &ghtml::htmlsafe($item);
    413             if ($item =~ /\S/) {
    414                 $item = "<$sf_shortname index=\"1\" tokenize=\"0\">$item</$sf_shortname>";
    415                 $text .= "$item"; # add it to the main text block
    416             }
    417         }
    418         if(scalar @metadata_list > 0) {
    419             $self->{'actualsortfields'}->{$sfield} = 1;
     380        my $new_text = "";
     381        foreach my $item (@metadata_list) {
     382        &ghtml::htmlsafe($item);
     383        $new_text .= "$item ";
     384        }
     385        if ($new_text =~ /\S/) {
     386        $new_text = "<$sf_shortname index=\"1\" tokenize=\"0\">$new_text</$sf_shortname>";
     387        $text .= "$new_text"; # add it to the main text block
     388        $self->{'actualsortfields'}->{$sfield} = 1;
    420389        }
    421390    }
     
    658627}
    659628
    660 sub create_sortfield_shortname {
     629sub get_or_create_sortfield_shortname {
    661630    my $self = shift(@_);
    662631
    663632    my ($realname) = @_;
    664 
    665     my $index_shortname;
    666     # if we have created a shortname for an index on this field, then use it.
    667     if (defined $self->{'fieldnamemap'}->{$realname}) {
    668     $index_shortname = $self->{'fieldnamemap'}->{$realname};
    669     } else {
    670     $index_shortname = $self->create_shortname($realname);
     633   
     634    if (defined $self->{'sortfieldnamemap'}->{$realname}) {
     635    return $self->{'sortfieldnamemap'}->{$realname};
    671636    }
    672     return "by".$index_shortname;
     637
     638    # get the shortname made for this index field
     639
     640    my $shortname = $self->get_or_create_shortname($realname);
     641    $shortname = "by".$shortname;
     642
     643    $self->{'sortfieldnamemap'}->{$realname} = $shortname;
     644    $self->{'sortfieldnamemap'}->{$shortname} = 1;
     645    return $shortname;
    673646}
    674647 
Note: See TracChangeset for help on using the changeset viewer.