@@ -, +, @@ thesaurus when using Elasticsearch misc/migration_tools/bulkmarcimport.pl -v -a -file authorities.mrc -insert -c=MARC21 misc/migration_tools/bulkmarcimport.pl -v -b -file biblios.mrc -insert -c=MARC21 --- a/C4/Heading.pm +++ a/C4/Heading.pm @@ -194,6 +194,8 @@ sub _search { my $self = shift; my $index = shift || undef; my $skipmetadata = shift || undef; + my $ind2 = $self->{field}->{_ind2}; + my $subject_heading_thesaurus = ''; my @marclist; my @and_or; my @excluding = []; @@ -207,13 +209,38 @@ sub _search { push @value, $self->{'search_form'}; } - # if ($self->{'thesaurus'}) { - # push @marclist, 'thesaurus'; - # push @and_or, 'AND'; - # push @excluding, ''; - # push @operator, 'is'; - # push @value, $self->{'thesaurus'}; - # } + if ($self->{'thesaurus'}) { + if ($ind2 eq '0') { + $subject_heading_thesaurus = 'a'; + } elsif ($ind2 eq '1') { + $subject_heading_thesaurus = 'b'; + } elsif ($ind2 eq '2') { + $subject_heading_thesaurus = 'c'; + } elsif ($ind2 eq '3') { + $subject_heading_thesaurus = 'd'; + } elsif ($ind2 eq '4') { + $subject_heading_thesaurus = 'n'; + } elsif ($ind2 eq '5') { + $subject_heading_thesaurus = 'k'; + } elsif ($ind2 eq '6') { + $subject_heading_thesaurus = 'v'; + } else { + $subject_heading_thesaurus = 'z'; + } + push @marclist, 'thesaurus'; + push @and_or, 'and'; + push @excluding, ''; + push @operator, 'is'; + push @value, $subject_heading_thesaurus; + } + + if ($ind2 eq '7') { + push @marclist, 'thesaurus-conventions'; + push @and_or, 'and'; + push @excluding, ''; + push @operator, 'is'; + push @value, $self->{'thesaurus'}; + } require Koha::SearchEngine::QueryBuilder; require Koha::SearchEngine::Search; --- a/C4/Linker/Default.pm +++ a/C4/Linker/Default.pm @@ -30,14 +30,15 @@ sub get_link { my $behavior = shift || 'default'; my $search_form = $heading->search_form(); my $auth_type = $heading->auth_type(); + my $thesaurus = $heading->{thesaurus} || 'notdefined'; my $authid; my $fuzzy = 0; my $match_count; - if ( $self->{'cache'}->{$search_form.$auth_type}->{'cached'} ) { - $authid = $self->{'cache'}->{$search_form.$auth_type}->{'authid'}; - $fuzzy = $self->{'cache'}->{$search_form.$auth_type}->{'fuzzy'}; - $match_count = $self->{'cache'}->{$search_form.$auth_type}->{'match_count'}; + if ( $self->{'cache'}->{$search_form.$auth_type.$thesaurus}->{'cached'} ) { + $authid = $self->{'cache'}->{$search_form.$auth_type.$thesaurus}->{'authid'}; + $fuzzy = $self->{'cache'}->{$search_form.$auth_type.$thesaurus}->{'fuzzy'}; + $match_count = $self->{'cache'}->{$search_form.$auth_type.$thesaurus}->{'match_count'}; } else { @@ -75,10 +76,10 @@ sub get_link { } } - $self->{'cache'}->{$search_form.$auth_type}->{'cached'} = 1; - $self->{'cache'}->{$search_form.$auth_type}->{'authid'} = $authid; - $self->{'cache'}->{$search_form.$auth_type}->{'fuzzy'} = $fuzzy; - $self->{'cache'}->{$search_form.$auth_type}->{'match_count'} = $match_count; + $self->{'cache'}->{$search_form.$auth_type.$thesaurus}->{'cached'} = 1; + $self->{'cache'}->{$search_form.$auth_type.$thesaurus}->{'authid'} = $authid; + $self->{'cache'}->{$search_form.$auth_type.$thesaurus}->{'fuzzy'} = $fuzzy; + $self->{'cache'}->{$search_form.$auth_type.$thesaurus}->{'match_count'} = $match_count; } return $self->SUPER::_handle_auth_limit($authid), $fuzzy, $match_count; } @@ -89,11 +90,12 @@ sub update_cache { my $authid = shift; my $search_form = $heading->search_form(); my $auth_type = $heading->auth_type(); + my $thesaurus = $heading->{thesaurus} || 'notdefined'; my $fuzzy = 0; - $self->{'cache'}->{$search_form.$auth_type}->{'cached'} = 1; - $self->{'cache'}->{$search_form.$auth_type}->{'authid'} = $authid; - $self->{'cache'}->{$search_form.$auth_type}->{'fuzzy'} = $fuzzy; + $self->{'cache'}->{$search_form.$auth_type.$thesaurus}->{'cached'} = 1; + $self->{'cache'}->{$search_form.$auth_type.$thesaurus}->{'authid'} = $authid; + $self->{'cache'}->{$search_form.$auth_type.$thesaurus}->{'fuzzy'} = $fuzzy; } sub flip_heading { --- a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm +++ a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm @@ -559,6 +559,7 @@ our $koha_to_index_name = { 'match-heading' => 'match-heading', 'see-from' => 'match-heading-see-from', thesaurus => 'subject-heading-thesaurus', + 'thesaurus-conventions' => 'subject-heading-thesaurus-conventions', any => '', all => '' }; --