From 5d0050d84dfbb9a7c02d8e9b166673e4a5cb875e Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Tue, 21 Mar 2023 19:28:10 +0000 Subject: [PATCH] Bug 33277: Add comments and missing thesauri Signed-off-by: Frank Hansen Signed-off-by: Marcel de Rooy Signed-off-by: Tomas Cohen Arazi --- C4/Heading.pm | 2 ++ C4/Heading/MARC21.pm | 5 +++++ .../SearchEngine/Elasticsearch/QueryBuilder.pm | 18 ++++++++++++------ t/db_dependent/Heading.t | 3 +++ 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/C4/Heading.pm b/C4/Heading.pm index 3054fc5305..5c393b4d53 100644 --- a/C4/Heading.pm +++ b/C4/Heading.pm @@ -202,6 +202,8 @@ sub _search { my @operator; my @value; + # FIXME: We specify values for @and_or and @excluding + # but these fields are not used anywhere and should be removed if ($index) { push @marclist, $index; push @and_or, 'AND'; diff --git a/C4/Heading/MARC21.pm b/C4/Heading/MARC21.pm index 652c300282..e8d6f90553 100644 --- a/C4/Heading/MARC21.pm +++ b/C4/Heading/MARC21.pm @@ -359,6 +359,11 @@ sub _get_subject_thesaurus { my $field = shift; my $ind2 = $field->indicator(2); + # NOTE: sears and aat do not appear + # here as they do not have indicator values + # though the 008 in the authority records + # do have values for them + my $thesaurus = "notdefined"; if ( $ind2 eq '0' ) { $thesaurus = "lcsh"; diff --git a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm index e91c4d7e16..587f86e648 100644 --- a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm +++ b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm @@ -564,14 +564,20 @@ our $koha_to_index_name = { all => '' }; +# Note that sears and aat map to 008/11 values here +# but don't appear in C4/Headin/MARC21 thesaurus +# because they don't have values in controlled field indicators +# https://www.loc.gov/marc/authority/ad008.html our $thesaurus_to_value = { - lcsh => 'a', - lcac => 'b', - mesh => 'c', - nal => 'd', + lcsh => 'a', + lcac => 'b', + mesh => 'c', + nal => 'd', notspecified => 'n', - cash => 'k', - rvm => 'v', + cash => 'k', + rvm => 'v', + aat => 'r', + sears => 's' }; sub build_authorities_query_compat { diff --git a/t/db_dependent/Heading.t b/t/db_dependent/Heading.t index 92d52e1c38..26c4d8da28 100755 --- a/t/db_dependent/Heading.t +++ b/t/db_dependent/Heading.t @@ -69,6 +69,9 @@ subtest "_search tests" => sub { t::lib::Mocks::mock_preference('marcflavour', 'MARC21'); t::lib::Mocks::mock_preference('SearchEngine', 'Elasticsearch'); + # NOTE: We are testing solely against ES here to make the assumptions simpler while testing + # C4/Headings code specifically. The actual query building and searching code should + # be covered in other test files my $search = Test::MockModule->new('Koha::SearchEngine::Elasticsearch::Search'); $search->mock('search_auth_compat', sub { -- 2.39.5