Bugzilla – Attachment 43140 Details for
Bug 12478
Elasticsearch support for Koha
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 12478: Display facet terms ordered by number of occurrences
Bug-12478-Display-facet-terms-ordered-by-number-of.patch (text/plain), 5.29 KB, created by
Jonathan Druart
on 2015-10-05 14:39:25 UTC
(
hide
)
Description:
Bug 12478: Display facet terms ordered by number of occurrences
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2015-10-05 14:39:25 UTC
Size:
5.29 KB
patch
obsolete
>From 3e8bc6b15b5431105010dae45b270d2f780a8923 Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Date: Mon, 5 Oct 2015 15:29:52 +0100 >Subject: [PATCH] Bug 12478: Display facet terms ordered by number of > occurrences > >By default ES returns the facet terms ordered by most used, which makes >sense. > >This patch removes resort done in the scripts (catalogue/search.pl and >opac/opac-search.pl) and moves it to the module. > >For Zebra it's now done in C4::Search::getRecords, and there is no >change to expect (still alphabetically). > >On the Elastic search side, we could imagine to let the library define >the order of the facets. The facet terms are now sorted by most used. > >To test easily this change, turn on the displayFacetCount pref. >--- > C4/Search.pm | 8 ++++++++ > Koha/SearchEngine/Elasticsearch/Search.pm | 26 +++++++++++++++----------- > catalogue/search.pl | 6 ------ > opac/opac-search.pl | 8 -------- > 4 files changed, 23 insertions(+), 25 deletions(-) > >diff --git a/C4/Search.pm b/C4/Search.pm >index b3d5554..d755ff0 100644 >--- a/C4/Search.pm >+++ b/C4/Search.pm >@@ -643,6 +643,14 @@ sub GetFacets { > $facets = _get_facets_from_records( $rs ); > } > >+ # This sorts the facets into alphabetical order >+ if ($facets && @$facets) { >+ foreach my $f (@$facets) { >+ $f->{facets} = [ sort { uc($a->{facet_label_value}) cmp uc($b->{facet_label_value}) } @{ $f->{facets} } ]; >+ } >+ @$facets = sort {$a->{expand} cmp $b->{expand}} @$facets; >+ } >+ > return $facets; > } > >diff --git a/Koha/SearchEngine/Elasticsearch/Search.pm b/Koha/SearchEngine/Elasticsearch/Search.pm >index 0b4e16f..d7ce445 100644 >--- a/Koha/SearchEngine/Elasticsearch/Search.pm >+++ b/Koha/SearchEngine/Elasticsearch/Search.pm >@@ -390,13 +390,14 @@ sub _convert_facets { > > # These should correspond to the ES field names, as opposed to the CCL > # things that zebra uses. >+ # TODO let the library define the order using the interface. > my %type_to_label = ( >- author => 'Authors', >- location => 'Location', >- itype => 'ItemTypes', >- se => 'Series', >- subject => 'Topics', >- 'su-geo' => 'Places', >+ author => { order => 1, label => 'Authors', }, >+ itype => { order => 2, label => 'ItemTypes', }, >+ location => { order => 3, label => 'Location', }, >+ 'su-geo' => { order => 4, label => 'Places', }, >+ se => { order => 5, label => 'Series', }, >+ subject => { order => 6, label => 'Topics', }, > ); > > # We also have some special cases, e.g. itypes that need to show the >@@ -408,20 +409,21 @@ sub _convert_facets { > itype => { map { $_->itemtype => $_->description } @itypes }, > location => { map { $_->authorised_value => ( $opac ? ( $_->lib_opac || $_->lib ) : $_->lib ) } @locations }, > ); >- my @res; >+ my @facets; > $exp_facet //= ''; > while ( ( $type, $data ) = each %$es ) { > next if !exists( $type_to_label{$type} ); > >- # We restrict to the most popular $limit results >+ # We restrict to the most popular $limit !results > my $limit = ( $type eq $exp_facet ) ? 10 : 5; > my $facet = { > type_id => $type . '_id', > expand => $type, > expandable => ( $type ne $exp_facet ) > && ( @{ $data->{terms} } > $limit ), >- "type_label_$type_to_label{$type}" => 1, >+ "type_label_$type_to_label{$type}{label}" => 1, > type_link_value => $type, >+ order => $type_to_label{$type}{order}, > }; > $limit = @{ $data->{terms} } if ( $limit > @{ $data->{terms} } ); > foreach my $term ( @{ $data->{terms} }[ 0 .. $limit - 1 ] ) { >@@ -442,9 +444,11 @@ sub _convert_facets { > type_link_value => $type, > }; > } >- push @res, $facet if exists $facet->{facets}; >+ push @facets, $facet if exists $facet->{facets}; > } >- return \@res; >+ >+ @facets = sort { $a->{order} cmp $b->{order} } @facets; >+ return \@facets; > } > > >diff --git a/catalogue/search.pl b/catalogue/search.pl >index a43f970..0b9de4c 100755 >--- a/catalogue/search.pl >+++ b/catalogue/search.pl >@@ -484,12 +484,6 @@ eval { > ); > }; > >-# This sorts the facets into alphabetical order >-if ($facets) { >- foreach my $f (@$facets) { >- $f->{facets} = [ sort { uc($a->{facet_label_value}) cmp uc($b->{facet_label_value}) } @{ $f->{facets} } ]; >- } >-} > if ($@ || $error) { > $template->param(query_error => $error.$@); > output_html_with_http_headers $cgi, $cookie, $template->output; >diff --git a/opac/opac-search.pl b/opac/opac-search.pl >index a9a0a73..13fbcab 100755 >--- a/opac/opac-search.pl >+++ b/opac/opac-search.pl >@@ -589,14 +589,6 @@ if ($tag) { > }; > } > >-# This sorts the facets into alphabetical order >-if ($facets && @$facets) { >- foreach my $f (@$facets) { >- $f->{facets} = [ sort { uc($a->{facet_label_value}) cmp uc($b->{facet_label_value}) } @{ $f->{facets} } ]; >- } >- @$facets = sort {$a->{expand} cmp $b->{expand}} @$facets; >-} >- > # use Data::Dumper; print STDERR "-" x 25, "\n", Dumper($results_hashref); > if ($@ || $error) { > $template->param(query_error => $error.$@); >-- >2.1.0
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 12478
:
29204
|
31128
|
31129
|
33136
|
33137
|
33138
|
33139
|
33140
|
33141
|
35654
|
40903
|
42030
|
42031
|
42032
|
42033
|
42062
|
42063
|
42064
|
42065
|
42066
|
42067
|
42068
|
42069
|
42392
|
42393
|
43127
|
43128
|
43129
|
43130
|
43131
|
43132
|
43133
|
43134
|
43140
|
43141
|
43142
|
43148
|
43345
|
43346
|
43347
|
43348
|
43349
|
43350
|
43351
|
43352
|
43373
|
47767
|
47768
|
50115
|
50159
|
50211
|
50212
|
50213
|
50214
|
50245
|
50246
|
50291
|
50292