From a9ae44f2adff90c234f3b65e439c04c5da4f8dfa Mon Sep 17 00:00:00 2001 From: MichaƂ Kula <148193449+mkibp@users.noreply.github.com> Date: Wed, 27 Mar 2024 09:00:43 +0100 Subject: [PATCH] Bug 36437: Add publication year facet to Elasticsearch --- Koha/SearchEngine/Elasticsearch.pm | 2 +- .../Elasticsearch/QueryBuilder.pm | 17 ++++++++------- Koha/SearchEngine/Elasticsearch/Search.pm | 21 ++++++++++--------- .../searchengine/elasticsearch/mappings.yaml | 21 ++++++++++--------- .../intranet-tmpl/prog/en/includes/facets.inc | 3 +++ .../searchengine/elasticsearch/mappings.tt | 3 ++- .../bootstrap/en/includes/opac-facets.inc | 2 ++ 7 files changed, 39 insertions(+), 30 deletions(-) diff --git a/Koha/SearchEngine/Elasticsearch.pm b/Koha/SearchEngine/Elasticsearch.pm index 3f26cbc027..b905f7726f 100644 --- a/Koha/SearchEngine/Elasticsearch.pm +++ b/Koha/SearchEngine/Elasticsearch.pm @@ -1404,7 +1404,7 @@ sub get_facetable_fields { # These should correspond to the ES field names, as opposed to the CCL # things that zebra uses. - my @search_field_names = qw( author itype location su-geo title-series subject ccode holdingbranch homebranch ln ); + my @search_field_names = qw( author itype location su-geo title-series subject ccode holdingbranch homebranch ln date-of-publication ); my @faceted_fields = Koha::SearchFields->search( { name => { -in => \@search_field_names }, facet_order => { '!=' => undef } }, { order_by => ['facet_order'] } )->as_list; diff --git a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm index 35ab4b7f91..758c8409ec 100644 --- a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm +++ b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm @@ -226,14 +226,15 @@ sub build_query { # things that Koha can use. my $size = C4::Context->preference('FacetMaxCount'); $res->{aggregations} = { - author => { terms => { field => "author__facet" , size => $size } }, - subject => { terms => { field => "subject__facet", size => $size } }, - itype => { terms => { field => "itype__facet", size => $size} }, - location => { terms => { field => "location__facet", size => $size } }, - 'su-geo' => { terms => { field => "su-geo__facet", size => $size} }, - 'title-series' => { terms => { field => "title-series__facet", size => $size } }, - ccode => { terms => { field => "ccode__facet", size => $size } }, - ln => { terms => { field => "ln__facet", size => $size } }, + author => { terms => { field => "author__facet" , size => $size } }, + subject => { terms => { field => "subject__facet", size => $size } }, + itype => { terms => { field => "itype__facet", size => $size} }, + location => { terms => { field => "location__facet", size => $size } }, + 'su-geo' => { terms => { field => "su-geo__facet", size => $size} }, + 'title-series' => { terms => { field => "title-series__facet", size => $size } }, + ccode => { terms => { field => "ccode__facet", size => $size } }, + ln => { terms => { field => "ln__facet", size => $size } }, + 'date-of-publication' => { terms => { field => "date-of-publication__facet", size => $size } }, }; my $display_library_facets = C4::Context->preference('DisplayLibraryFacets'); diff --git a/Koha/SearchEngine/Elasticsearch/Search.pm b/Koha/SearchEngine/Elasticsearch/Search.pm index 933b52f79d..4c1d73a9b1 100644 --- a/Koha/SearchEngine/Elasticsearch/Search.pm +++ b/Koha/SearchEngine/Elasticsearch/Search.pm @@ -444,16 +444,17 @@ sub _convert_facets { # things that zebra uses. my %type_to_label; my %label = ( - author => 'Authors', - itype => 'ItemTypes', - location => 'Location', - 'su-geo' => 'Places', - 'title-series' => 'Series', - subject => 'Topics', - ccode => 'CollectionCodes', - holdingbranch => 'HoldingLibrary', - homebranch => 'HomeLibrary', - ln => 'Language', + author => 'Authors', + itype => 'ItemTypes', + location => 'Location', + 'su-geo' => 'Places', + 'title-series' => 'Series', + subject => 'Topics', + ccode => 'CollectionCodes', + holdingbranch => 'HoldingLibrary', + homebranch => 'HomeLibrary', + ln => 'Language', + 'date-of-publication' => 'PubDate', ); my @facetable_fields = Koha::SearchEngine::Elasticsearch->get_facetable_fields; diff --git a/admin/searchengine/elasticsearch/mappings.yaml b/admin/searchengine/elasticsearch/mappings.yaml index f9f9a042c5..1e1bca315b 100644 --- a/admin/searchengine/elasticsearch/mappings.yaml +++ b/admin/searchengine/elasticsearch/mappings.yaml @@ -1280,7 +1280,7 @@ biblios: staff_client: 1 type: '' ccode: - facet_order: 7 + facet_order: 8 label: collection-code mandatory: ~ mappings: @@ -1656,15 +1656,16 @@ biblios: staff_client: 1 type: date date-of-publication: + facet_order: 3 label: date-of-publication mandatory: ~ mappings: - - facet: '' + - facet: 1 marc_field: 008_/7-10 marc_type: marc21 sort: 1 suggestible: '' - - facet: '' + - facet: 1 marc_field: 100a_/9-12 marc_type: unimarc sort: 1 @@ -1856,7 +1857,7 @@ biblios: staff_client: 1 type: '' holdingbranch: - facet_order: 8 + facet_order: 9 label: holdinglibrary mandatory: ~ mappings: @@ -1874,7 +1875,7 @@ biblios: staff_client: 1 type: string homebranch: - facet_order: 9 + facet_order: 10 label: homelibrary mandatory: ~ mappings: @@ -2484,7 +2485,7 @@ biblios: staff_client: 1 type: '' ln: - facet_order: 10 + facet_order: 11 label: ln mandatory: ~ mappings: @@ -2565,7 +2566,7 @@ biblios: staff_client: 1 type: number location: - facet_order: 3 + facet_order: 4 label: location mandatory: ~ mappings: @@ -3351,7 +3352,7 @@ biblios: staff_client: 1 type: '' su-geo: - facet_order: 4 + facet_order: 5 label: su-geo mandatory: ~ mappings: @@ -3369,7 +3370,7 @@ biblios: staff_client: 1 type: string subject: - facet_order: 6 + facet_order: 7 label: subject mandatory: ~ mappings: @@ -4131,7 +4132,7 @@ biblios: staff_client: 1 type: '' title-series: - facet_order: 5 + facet_order: 6 label: title-series mandatory: ~ mappings: diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc index 2fcce67e7d..fbbdb52ae8 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc @@ -84,6 +84,9 @@ [% IF facets_loo.type_label_Language %] Languages [% END %] + [% IF facets_loo.type_label_PubDate %] + Publication years + [% END %]