Bugzilla – Attachment 73008 Details for
Bug 18213
Add language facets to Elasticsearch
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 18213 - Add language facets to Elasticsearch
Bug-18213---Add-language-facets-to-Elasticsearch.patch (text/plain), 10.52 KB, created by
Nicolas Legrand
on 2018-03-16 10:06:35 UTC
(
hide
)
Description:
Bug 18213 - Add language facets to Elasticsearch
Filename:
MIME Type:
Creator:
Nicolas Legrand
Created:
2018-03-16 10:06:35 UTC
Size:
10.52 KB
patch
obsolete
>From 8318af48f64eb1c5a313891e8f898d90d6184114 Mon Sep 17 00:00:00 2001 >From: Nick Clemens <nick@bywatersolutions.com> >Date: Wed, 5 Jul 2017 12:11:35 +0000 >Subject: [PATCH] Bug 18213 - Add language facets to Elasticsearch > >This patch add language as a facet to ES results - it adds >a new template plugin for languages to get the appropriate >description given an iso 639-2 code > >To test: >1 - Make sure you have records with differing languages (in the MARC21 008 > field characters 35-37 or UNIMARC 101a) >2 - Apply patch >3 - Reload Elasticsearch settings: >http://localhost:8081/cgi-bin/koha/admin/searchengine/elasticsearch/mappings.pl?op=reset&i_know_what_i_am_doing=1 >4 - Reindex your records >5 - Search for a phrase that will return results in several languages >6 - Verify you see factes correctly labelled for 'Language' >7 - Verify the facets work >8 - Verify both opac and staff results >9 - prove t/db_dependent/Languages.t > >Signed-off-by: Nicolas Legrand <nicolas.legrand@bulac.fr> >--- > C4/Languages.pm | 14 ++++++++++++++ > Koha/SearchEngine/Elasticsearch.pm | 2 +- > Koha/SearchEngine/Elasticsearch/QueryBuilder.pm | 1 + > Koha/SearchEngine/Elasticsearch/Search.pm | 1 + > admin/searchengine/elasticsearch/mappings.yaml | 7 ++++--- > koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc | 5 ++++- > .../modules/admin/searchengine/elasticsearch/mappings.tt | 1 + > koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-facets.inc | 5 ++++- > t/db_dependent/Languages.t | 8 +++++++- > 9 files changed, 37 insertions(+), 7 deletions(-) > >diff --git a/C4/Languages.pm b/C4/Languages.pm >index 5e4dabd..dc97cd5 100644 >--- a/C4/Languages.pm >+++ b/C4/Languages.pm >@@ -612,6 +612,20 @@ sub getlanguage { > return $language; > } > >+=head2 get_rfc4646_from_iso639 >+ >+ Select a language rfc4646 code given an iso639 code >+ >+=cut >+ >+sub get_rfc4646_from_iso639 { >+ >+ my $iso_code = shift; >+ my $rfc_subtag = Koha::Database->new()->schema->resultset('LanguageRfc4646ToIso639')->find({iso639_2_code=>$iso_code})->rfc4646_subtag; >+ return $rfc_subtag; >+ >+} >+ > 1; > > __END__ >diff --git a/Koha/SearchEngine/Elasticsearch.pm b/Koha/SearchEngine/Elasticsearch.pm >index e23b26f..8c95f8f 100644 >--- a/Koha/SearchEngine/Elasticsearch.pm >+++ b/Koha/SearchEngine/Elasticsearch.pm >@@ -550,7 +550,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 se subject ccode holdingbranch homebranch ); >+ my @search_field_names = qw( author itype location su-geo se subject ccode holdingbranch homebranch ln); > my @faceted_fields = Koha::SearchFields->search( > { name => { -in => \@search_field_names }, facet_order => { '!=' => undef } }, { order_by => ['facet_order'] } > ); >diff --git a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm >index 95cc86a..0c689ac 100644 >--- a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm >+++ b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm >@@ -119,6 +119,7 @@ sub build_query { > 'su-geo' => { terms => { field => "su-geo__facet" } }, > se => { terms => { field => "se__facet" } }, > ccode => { terms => { field => "ccode__facet" } }, >+ ln => { terms => { field => "ln__facet" } }, > }; > > my $display_library_facets = C4::Context->preference('DisplayLibraryFacets'); >diff --git a/Koha/SearchEngine/Elasticsearch/Search.pm b/Koha/SearchEngine/Elasticsearch/Search.pm >index c29e421..8cd3619 100644 >--- a/Koha/SearchEngine/Elasticsearch/Search.pm >+++ b/Koha/SearchEngine/Elasticsearch/Search.pm >@@ -434,6 +434,7 @@ sub _convert_facets { > ccode => 'CollectionCodes', > holdingbranch => 'HoldingLibrary', > homebranch => 'HomeLibrary', >+ ln => 'Language', > ); > my @facetable_fields = > Koha::SearchEngine::Elasticsearch->get_facetable_fields; >diff --git a/admin/searchengine/elasticsearch/mappings.yaml b/admin/searchengine/elasticsearch/mappings.yaml >index 0b35055..0593366 100644 >--- a/admin/searchengine/elasticsearch/mappings.yaml >+++ b/admin/searchengine/elasticsearch/mappings.yaml >@@ -1720,22 +1720,23 @@ biblios: > ln: > label: ln > mappings: >- - facet: '' >+ - facet: '1' > marc_field: 008_/35-37 > marc_type: marc21 > sort: ~ > suggestible: '' >- - facet: '' >+ - facet: '1' > marc_field: 008_/35-37 > marc_type: normarc > sort: ~ > suggestible: '' >- - facet: '' >+ - facet: '1' > marc_field: 101a > marc_type: unimarc > sort: ~ > suggestible: '' > type: '' >+ facet_order: 10 > local-classification: > label: local-classification > mappings: >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc >index 572be95..9abeef7 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc >@@ -1,4 +1,5 @@ > [% USE AuthorisedValues %] >+[% USE Languages %] > [% IF ( opacfacets ) %] > [% IF ( facets_loop ) %] > <div id="search-facets"> >@@ -21,7 +22,8 @@ > [% IF ( facets_loo.type_label_HomeLibrary ) %]<span id="facet-home-libraries">Home libraries</span>[% END %] > [% IF ( facets_loo.type_label_HoldingLibrary ) %]<span id="facet-holding-libraries">Holding libraries</span>[% END %] > [% IF facets_loo.type_label_Location %]<span id="facet-locations">Locations</span>[% END %] >-[% IF facets_loo.type_label_CollectionCodes %]<span id="facet-locations">Collections</span>[% END %] >+[% IF facets_loo.type_label_CollectionCodes %]<span id="facet-collections">Collections</span>[% END %] >+[% IF facets_loo.type_label_Language %]<span id="facet-languages">Languages</span>[% END %] > <ul> > [% SET url = "/cgi-bin/koha/catalogue/search.pl?" _ query_cgi _ limit_cgi %] > [% IF ( sort_by ) %] >@@ -29,6 +31,7 @@ > [% END %] > [% FOREACH facet IN facets_loo.facets %] > [% IF facets_loo.type_label_CollectionCodes %][% SET facet.facet_label_value = AuthorisedValues.GetByCode('CCODE',facet.facet_label_value,0) || facet.facet_label_value %][% END %] >+ [% IF facets_loo.type_label_Language %][% SET facet.facet_label_value = Languages.GetByISOCode(lang,facet.facet_label_value) || facet.facet_label_value %][% END %] > <li> > [% IF facet.active %] > [% SET local_url = url _ "&nolimit=" _ facet.type_link_value _ ":" _ facet.facet_link_value %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt >index 0bd8419..f123cf5 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt >@@ -320,6 +320,7 @@ a.add, a.delete { > [% CASE 'ccode' %]Collections > [% CASE 'holdingbranch' %]Holding libraries > [% CASE 'homebranch' %]Home libraries >+ [% CASE 'ln' %]Language > [% CASE %][% f %] > [% END %] > </td> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-facets.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-facets.inc >index e89a693..7128037 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-facets.inc >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-facets.inc >@@ -1,4 +1,5 @@ > [% USE AuthorisedValues %] >+[% USE Languages %] > [% IF ( opacfacets && facets_loop && total ) %] > <div id="search-facets"> > <h4><a href="#" class="menu-collapse-toggle">Refine your search</a></h4> >@@ -25,7 +26,8 @@ > [% IF facets_loo.type_label_Places %]<h5 id="facet-places">Places</h5>[% END %] > [% IF facets_loo.type_label_Series %]<h5 id="facet-series">Series</h5>[% END %] > [% IF facets_loo.type_label_ItemTypes %]<h5 id="facet-itemtypes">Item types</h5>[% END %] >- [% IF facets_loo.type_label_CollectionCodes %]<h5 id="facet-itemtypes">Collections</h5>[% END %] >+ [% IF facets_loo.type_label_CollectionCodes %]<h5 id="facet-collections">Collections</h5>[% END %] >+ [% IF facets_loo.type_label_Language %]<h5 id="facet-languages">Languages</h5>[% END %] > [% UNLESS singleBranchMode %] > [% IF ( facets_loo.type_label_HomeLibrary ) %]<span id="facet-home-libraries">Home libraries</span>[% END %] > [% IF ( facets_loo.type_label_HoldingLibrary ) %]<span id="facet-holding-libraries">Holding libraries</span>[% END %] >@@ -38,6 +40,7 @@ > [% END %] > [% FOREACH facet IN facets_loo.facets %] > [% IF facets_loo.type_label_CollectionCodes %][% SET facet.facet_label_value = AuthorisedValues.GetByCode('CCODE',facet.facet_label_value,1) || facet.facet_label_value %][% END %] >+ [% IF facets_loo.type_label_Language %][% SET facet.facet_label_value = Languages.GetByISOCode(lang,facet.facet_label_value) || facet.facet_label_value %][% END %] > <li> > [% IF facet.active %] > [% SET local_url = url _ "&nolimit=" _ facet.type_link_value _ ":" _ facet.facet_link_value %] >diff --git a/t/db_dependent/Languages.t b/t/db_dependent/Languages.t >index 8e8d372..6a8f147 100755 >--- a/t/db_dependent/Languages.t >+++ b/t/db_dependent/Languages.t >@@ -6,7 +6,7 @@ > use strict; > use warnings; > >-use Test::More tests => 17; >+use Test::More tests => 18; > use List::Util qw(first); > use Data::Dumper; > use Test::Warn; >@@ -95,4 +95,10 @@ my $LangRfc4646 = $sth->fetchall_arrayref({}); > > is(scalar(@$LangRfc4646),scalar(@$DistinctLangRfc4646),"No unexpected language_rfc4646_to_iso639 duplicates."); > >+my $i = 0; >+foreach my $pair (@$DistinctLangRfc4646){ >+ $i++ if $pair->{rfc4646_subtag} eq C4::Languages::get_rfc4646_from_iso639( $pair->{iso639_2_code} ); >+} >+is($i,scalar(@$DistinctLangRfc4646),"get_rfc4646_from_iso639 returns correct rfc for all iso values."); >+ > $dbh->rollback; >-- >2.1.4
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 18213
:
64798
|
64841
|
64905
|
68944
|
68945
|
68946
|
72940
|
72941
|
72942
|
72943
|
73008
|
73009
|
73010
|
73011
|
75971
|
75972
|
75973
|
75974
|
85998
|
85999
|
86000
|
86001