Browse Source

Bug 27784: Don't parse subdivision authorities as headings

Subdivision authorities are not used for linking, however, they are recognized by
C4::AuthoritiesMarc

While these records are not used for linking, they could provide reference and
should be allowed to exist in the catalog without breaking ES indexing

THis patch simply skips the step of parsing the authorities into the linking form
if the type contains '_SUBD'

To test:
1 - Import a subdivision authority record via Z39 or use the one attached to this bug
2 - perl misc/search_tools/rebuild_elasticsearch.pl -v -d
3 - Authority indexing dies:
   Use of uninitialized value $tag in hash element at /usr/share/perl5/MARC/Record.pm line 202.
   Use of uninitialized value $tag in regexp compilation at /usr/share/perl5/MARC/Record.pm line 206.
   Use of uninitialized value $tag in hash element at /usr/share/perl5/MARC/Record.pm line 207.
   Can't call method "tag" on an undefined value at /kohadevbox/koha/C4/Heading.pm line 71.
4 - Apply patches
5 - reindex
6 - Success!

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
21.05.x
Nick Clemens 2 years ago
committed by Jonathan Druart
parent
commit
d67fc5e010
  1. 8
      Koha/SearchEngine/Elasticsearch.pm

8
Koha/SearchEngine/Elasticsearch.pm

@ -556,9 +556,11 @@ sub marc_records_to_documents {
if ( $self->index eq 'authorities' ){
my $authtypecode = GuessAuthTypeCode( $record );
if( $authtypecode ){
my $field = $record->field( $auth_match_headings{ $authtypecode } );
my $heading = C4::Heading->new_from_field( $field, undef, 1 ); #new auth heading
push @{$record_document->{'match-heading'}}, $heading->search_form if $heading;
if( $authtypecode !~ m/_SUBD/ ){ #Subdivision records will not be used for linking and so don't require match-heading to be built
my $field = $record->field( $auth_match_headings{ $authtypecode } );
my $heading = C4::Heading->new_from_field( $field, undef, 1 ); #new auth heading
push @{$record_document->{'match-heading'}}, $heading->search_form if $heading;
}
} else {
warn "Cannot determine authority type for record: " . $record->field('001')->as_string;
}

Loading…
Cancel
Save