From 138c8c0a3c0501903bd80e95550033183cafabed Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Thu, 24 Oct 2013 20:42:38 +0000 Subject: [PATCH] [SIGNED-OFF] Bug 11137: fix certain types of searches run using QueryParser QueryParser was loading redundant search aliases, which in turn resulted in certain queries involving two or more clauses joined by a Boolean operator getting parsed in correctly. To test: [1] Enable QueryParser. [2] Arrange your database so that some some bib records contain the keyword 'history' while a smaller subset contain both 'history' and 'earth'. (The exact words used don't matter.) [3] Run the following search from the OPAC global search bar: kw:history && kw:earth [4] Observe that the records that are returned include *all* bibs in the database with the keyword 'history'. In other words, the restriction that the records must also contain 'earth' is not observed. [5] Apply the patch and rerun the search. [6] This time, the results that are returned should include only those that contain both 'history' and 'earth'. [7] Verify that prove -v t/QueryParser.t passes. Signed-off-by: Galen Charlton Signed-off-by: Katrin Fischer Passes test plans, all tests and QA script. Also checked the db_dependent/Search.t tests. Tried some other searches, all seems to be working correctly. --- Koha/QueryParser/Driver/PQF.pm | 6 ------ t/QueryParser.t | 4 +--- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/Koha/QueryParser/Driver/PQF.pm b/Koha/QueryParser/Driver/PQF.pm index cd3b994..8181cd3 100644 --- a/Koha/QueryParser/Driver/PQF.pm +++ b/Koha/QueryParser/Driver/PQF.pm @@ -111,7 +111,6 @@ sub add_bib1_field_map { my ($self, $class, $field, $server, $attributes) = @_; $self->add_search_field( $class => $field ); - $self->add_search_field_alias( $class => $field => $field ); return $self->_add_field_mapping($self->bib1_field_map, $class, $field, $server, $attributes); } @@ -542,14 +541,9 @@ sub initialize { $self->add_bib1_field_map( $class => $field => $server => $bib1_mapping ); } - $self->add_search_field_alias( $class => $field => - $field_mappings->{$class}->{$field}->{'index'} ); foreach my $alias ( @{ $field_mappings->{$class}->{$field}->{'aliases'} } ) { - next - if ( $alias eq - $field_mappings->{$class}->{$field}->{'index'} ); $self->add_search_field_alias( $class => $field => $alias ); } } diff --git a/t/QueryParser.t b/t/QueryParser.t index f0935ec..41782f2 100644 --- a/t/QueryParser.t +++ b/t/QueryParser.t @@ -44,9 +44,7 @@ my $desired_config = { 'field_mappings' => { 'author' => { 'personal' => { - 'aliases' => [ - 'personal' - ], + 'aliases' => [ ], 'bib1_mapping' => { 'biblioserver' => { '1' => '1004' -- 1.7.9.5