View | Details | Raw Unified | Return to bug 37821
Collapse All | Expand All

(-)a/Koha/SearchEngine/Elasticsearch.pm (-12 / +41 lines)
Lines 697-705 sub marc_records_to_documents { Link Here
697
                        $altscript = 1;
697
                        $altscript = 1;
698
                    }
698
                    }
699
                }
699
                }
700
700
                # Handle references to GEOGR_NAME authorities
701
                # Handle references to GEOGR_NAME authorities
701
                if ($marcflavour eq 'marc21' && $tag eq '651') {
702
                if ( $marcflavour eq 'marc21' && $tag eq '651' ) {
702
                    $self->embed_geographic_name($field, $record_document, $data_fields_rules);
703
                    $self->embed_geographic_name( $field, $record_document, $data_fields_rules );
703
                }
704
                }
704
705
705
                my $data_field_rules = $data_fields_rules->{$tag};
706
                my $data_field_rules = $data_fields_rules->{$tag};
Lines 983-990 sub marc_records_to_documents { Link Here
983
    return \@record_documents;
984
    return \@record_documents;
984
}
985
}
985
986
987
=head2 embed_geographic_name($field, $record_document, $rules)
988
989
    $self->embed_geographic_name( $field, $record_document, $data_fields_rules );
990
991
Extract geographic fields from an authority linked to a given record
992
993
=over 4
994
995
=item C<$field>
996
997
MARC::Field refering to the GEOGR_NAME authority
998
999
=item C<$record_document>
1000
1001
Hashref representing the Elasticsearch document on which mappings should be
1002
applied.
1003
1004
=item C<$rules>
1005
1006
MARC mapping rules for the provided field.
1007
1008
=back
1009
1010
=cut
1011
986
sub embed_geographic_name {
1012
sub embed_geographic_name {
987
    my ($self, $field, $record_document, $rules) = @_;
1013
    my ( $self, $field, $record_document, $rules ) = @_;
988
1014
989
    my $authid = $field->subfield('9');
1015
    my $authid = $field->subfield('9');
990
    return unless $authid;
1016
    return unless $authid;
Lines 993-1014 sub embed_geographic_name { Link Here
993
1019
994
    my $tag = '034';
1020
    my $tag = '034';
995
1021
996
    my $auth_marc = $authority->record;
1022
    my $auth_marc         = $authority->record;
997
    my @coordinate_fields = $auth_marc->field($tag);
1023
    my @coordinate_fields = $auth_marc->field($tag);
998
1024
999
    for my $field (@coordinate_fields) {
1025
    for my $field (@coordinate_fields) {
1000
        my $data_field_rules = $rules->{$tag};
1026
        my $data_field_rules = $rules->{$tag};
1001
        if ($data_field_rules) {
1027
        if ($data_field_rules) {
1002
            my $subfields_mappings = $data_field_rules->{subfields};
1028
            my $subfields_mappings = $data_field_rules->{subfields};
1003
            my $wildcard_mappings = $subfields_mappings->{'*'};
1029
            my $wildcard_mappings  = $subfields_mappings->{'*'};
1004
            foreach my $subfield ($field->subfields()) {
1030
            foreach my $subfield ( $field->subfields() ) {
1005
                my ($code, $data) = @{$subfield};
1031
                my ( $code, $data ) = @{$subfield};
1006
                my $mappings = $subfields_mappings->{$code} // [];
1032
                my $mappings = $subfields_mappings->{$code} // [];
1007
                if (@{$mappings}) {
1033
                if ( @{$mappings} ) {
1008
                    $self->_process_mappings($mappings, $data, $record_document, {
1034
                    $self->_process_mappings(
1035
                        $mappings,
1036
                        $data,
1037
                        $record_document,
1038
                        {
1009
                            data_source => 'subfield',
1039
                            data_source => 'subfield',
1010
                            code => $code,
1040
                            code        => $code,
1011
                            field => $field
1041
                            field       => $field
1012
                        }
1042
                        }
1013
                    );
1043
                    );
1014
                }
1044
                }
1015
- 

Return to bug 37821