From eeb12f8a521ccc470d2363fb6529a8c3e0cf78d5 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Tue, 23 Nov 2021 14:42:54 +0000 Subject: [PATCH] Bug 29561: Remove blank facets This patch strips the blank facets from the ES aggregations, this seems to only affect language fields currently, but could affect any facetable field that can contain blank values To test: 1 - Have Koha running Elasticsearch with standard test data, or add some records with blank values in the 008/35-37 2 - Search for 'a' 3 - Look at the language facets, they should appear normal 4 - Browse to: http://localhost:8081/cgi-bin/koha/catalogue/search.pl?idx=&q=a&sort_by=relevance_dsc&count=20&limit=ln: 5 - Note there is now an 'x' under the Languages facet - to remove a limit you cannot see 6 - Apply patch 7 - Reload 8 - Note the x is not there 9 - Inspect HTML, confirm no blank link under language facets Signed-off-by: David Nind Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer Signed-off-by: Tomas Cohen Arazi --- Koha/SearchEngine/Elasticsearch/Search.pm | 1 + 1 file changed, 1 insertion(+) diff --git a/Koha/SearchEngine/Elasticsearch/Search.pm b/Koha/SearchEngine/Elasticsearch/Search.pm index 0a1bc7ccc9..be31f50712 100644 --- a/Koha/SearchEngine/Elasticsearch/Search.pm +++ b/Koha/SearchEngine/Elasticsearch/Search.pm @@ -492,6 +492,7 @@ sub _convert_facets { $limit = @{ $data->{buckets} } if ( $limit > @{ $data->{buckets} } ); foreach my $term ( @{ $data->{buckets} }[ 0 .. $limit - 1 ] ) { my $t = $term->{key}; + next unless $t; # FIXME Currently we cannot search for an empty faceted field i.e. ln:"" to find records missing languages, though ES does count them correctly my $c = $term->{doc_count}; my $label; if ( exists( $special{$type} ) ) { -- 2.39.5