Bugzilla – Attachment 91562 Details for
Bug 22524
Elasticsearch - Date range in advanced search
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 22524: Fix publication date and year search with Elasticsearch
Bug-22524-Fix-publication-date-and-year-search-wit.patch (text/plain), 5.61 KB, created by
Nick Clemens
on 2019-07-16 18:44:24 UTC
(
hide
)
Description:
Bug 22524: Fix publication date and year search with Elasticsearch
Filename:
MIME Type:
Creator:
Nick Clemens
Created:
2019-07-16 18:44:24 UTC
Size:
5.61 KB
patch
obsolete
>From 2a042cbdbcfbf488f5a79a2e0a0a1e5a17cc3076 Mon Sep 17 00:00:00 2001 >From: Ere Maijala <ere.maijala@helsinki.fi> >Date: Tue, 16 Apr 2019 16:26:40 +0300 >Subject: [PATCH] Bug 22524: Fix publication date and year search with > Elasticsearch > >Also fixes the mappings.yaml to use correct field name (left over issue from bug 19575), so reset mappings and reindex before testing. > >Test plan: >1. Reset mappings and reindex biblios. >2. Check that tests in t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t pass. >3. Try that all of the following year range type work in publication date search and year limit in advanced search: >yyyy >yyyy-yyyy >-yyyy >yyyy- > >Signed-off-by: Liz Rea <wizzyrea@gmail.com> > >Signed-off-by: Nick Clemens <nick@bywatersolutions.com> >--- > Koha/SearchEngine/Elasticsearch/QueryBuilder.pm | 12 +++++-- > admin/searchengine/elasticsearch/mappings.yaml | 4 +-- > .../Koha/SearchEngine/Elasticsearch/QueryBuilder.t | 38 +++++++++++++++++++++- > 3 files changed, 49 insertions(+), 5 deletions(-) > >diff --git a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm >index 1e76fe89cb..cde124940b 100644 >--- a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm >+++ b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm >@@ -620,7 +620,7 @@ sub _convert_index_fields { > my ( $self, @indexes ) = @_; > > my %index_type_convert = >- ( __default => undef, phr => 'phrase', rtrn => 'right-truncate' ); >+ ( __default => undef, phr => 'phrase', rtrn => 'right-truncate', 'st-year' => 'st-year' ); > > # Convert according to our table, drop anything that doesn't convert. > # If a field starts with mc- we save it as it's used (and removed) later >@@ -727,6 +727,13 @@ sub _modify_string_by_type { > > $str .= '*' if $type eq 'right-truncate'; > $str = '"' . $str . '"' if $type eq 'phrase'; >+ if ($type eq 'st-year') { >+ if ($str =~ /^(.*)-(.*)$/) { >+ my $from = $1 || '*'; >+ my $until = $2 || '*'; >+ $str = "[$from TO $until]"; >+ } >+ } > return $str; > } > >@@ -799,7 +806,7 @@ sub _create_query_string { > my $field = $_->{field} ? $_->{field} . ':' : ''; > > my $oand = $self->_modify_string_by_type(%$_); >- $oand = "($oand)" if $field && scalar(split(/\s+/, $oand)) > 1; >+ $oand = "($oand)" if $field && scalar(split(/\s+/, $oand)) > 1 && (!defined $_->{type} || $_->{type} ne 'st-year'); > "$otor($field$oand)"; > } @queries; > } >@@ -867,6 +874,7 @@ sub _fix_limit_special_cases { > elsif ( $l =~ /^yr,st-numeric=/ ) { > my ($date) = ( $l =~ /^yr,st-numeric=(.*)$/ ); > next unless defined($date); >+ $date = $self->_modify_string_by_type(type => 'st-year', operand => $date); > push @new_lim, "copydate:$date"; > } > elsif ( $l =~ /^available$/ ) { >diff --git a/admin/searchengine/elasticsearch/mappings.yaml b/admin/searchengine/elasticsearch/mappings.yaml >index a546c341e6..e2b17b25f8 100644 >--- a/admin/searchengine/elasticsearch/mappings.yaml >+++ b/admin/searchengine/elasticsearch/mappings.yaml >@@ -3167,8 +3167,8 @@ biblios: > sort: ~ > suggestible: '' > type: '' >- pubdate: >- label: pubdate >+ date-of-publication: >+ label: date-of-publication > mappings: > - facet: '' > marc_field: 008_/7-10 >diff --git a/t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t b/t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t >index 3b26c0958f..d3656eabc9 100644 >--- a/t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t >+++ b/t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t >@@ -169,7 +169,7 @@ subtest 'build_authorities_query_compat() tests' => sub { > }; > > subtest 'build_query tests' => sub { >- plan tests => 35; >+ plan tests => 40; > > my $qb; > >@@ -248,6 +248,42 @@ subtest 'build_query tests' => sub { > is($query_cgi, 'idx=ti&q=%22donald%20duck%22&idx=au&q=walt%20disney', 'query cgi ok for multiterm query'); > is($query_desc, '(title:("donald duck")) (author:(walt disney))', 'query desc ok for multiterm query'); > >+ ( undef, $query ) = $qb->build_query_compat( undef, ['2019'], ['yr,st-year'] ); >+ is( >+ $query->{query}{query_string}{query}, >+ '(date-of-publication:2019)', >+ 'Year in an st-year search is handled properly' >+ ); >+ >+ ( undef, $query ) = $qb->build_query_compat( undef, ['2018-2019'], ['yr,st-year'] ); >+ is( >+ $query->{query}{query_string}{query}, >+ '(date-of-publication:[2018 TO 2019])', >+ 'Year range in an st-year search is handled properly' >+ ); >+ >+ ( undef, $query ) = $qb->build_query_compat( undef, ['-2019'], ['yr,st-year'] ); >+ is( >+ $query->{query}{query_string}{query}, >+ '(date-of-publication:[* TO 2019])', >+ 'Open start year in year range of an st-year search is handled properly' >+ ); >+ >+ ( undef, $query ) = $qb->build_query_compat( undef, ['2019-'], ['yr,st-year'] ); >+ is( >+ $query->{query}{query_string}{query}, >+ '(date-of-publication:[2019 TO *])', >+ 'Open end year in year range of an st-year search is handled properly' >+ ); >+ >+ ( undef, $query ) = $qb->build_query_compat( undef, ['2019-'], ['yr,st-year'], ['yr,st-numeric=-2019'] ); >+ is( >+ $query->{query}{query_string}{query}, >+ '(date-of-publication:[2019 TO *]) AND copydate:[* TO 2019]', >+ 'Open end year in year range of an st-year search is handled properly' >+ ); >+ >+ # Enable auto-truncation > t::lib::Mocks::mock_preference( 'QueryAutoTruncate', '1' ); > > ( undef, $query ) = $qb->build_query_compat( undef, ['donald duck'] ); >-- >2.11.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 22524
:
88063
|
88758
|
88998
|
88999
|
89000
|
89152
|
89153
| 91562 |
91563