[Koha-bugs] [Bug 30152] Elasticsearch - queries with OR don't work with limits
bugzilla-daemon at bugs.koha-community.org
bugzilla-daemon at bugs.koha-community.org
Tue Feb 22 17:02:39 CET 2022
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=30152
--- Comment #4 from Kevin Carnes <kevin.carnes at ub.lu.se> ---
Comment on attachment 131017
--> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=131017
Bug 30152: Elasticsearch - queries with OR don't work with limits
>From b4cfe66eea7d100d319a5ee256061e8eea15bd99 Mon Sep 17 00:00:00 2001
>From: Kevin Carnes <kevin.carnes at ub.lu.se>
>Date: Tue, 22 Feb 2022 14:29:15 +0100
>Subject: [PATCH] Bug 30152: Elasticsearch - queries with OR don't work with
> limits
>
>When a query with "OR" is combined with a limit in Elasticsearch, the precedence is not preserved and the results are not correct.
>
>To test:
>1) Set SearchEngine to Elasticsearch
>2) Index records in Elasticsearch
>3) Do an advanced search
>4) Select More options
>5) Enter a value for the first Keyword (e.g. Novels)
>6) Change "and" before the second Keyword to "or"
>7) Enter another value for the second Keyword (e.g. Prose)
>8) Limit the search (e.g. Item type Books)
>9) Do the search
>10) Observe that records with the first keyword are not in the results
>11) Apply the patch
>12) Repeat the search
>13) Observe that results with both keywords are in the results
>14) Sign off
>
>Sponsored-by: Lund University Library
>---
> Koha/SearchEngine/Elasticsearch/QueryBuilder.pm | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
>diff --git a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm
>index 3e2cb1b784..b2ef8aa8d9 100644
>--- a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm
>+++ b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm
>@@ -306,9 +306,7 @@ sub build_query_compat {
> # them into a structured ES query itself. Maybe later, though that'd be
> # more robust.
> $search_param_query_str = join( ' ', $self->_create_query_string(@search_params) );
>- $query_str = join( ' AND ',
>- $search_param_query_str || (),
>- $self->_join_queries( $self->_convert_index_strings(@$limits) ) || () );
>+ $query_str = join( ' AND ', map { "($_)" } grep { $_ } ( $search_param_query_str, $self->_join_queries( $self->_convert_index_strings(@$limits) ) ) );
>
> # If there's no query on the left, let's remove the junk left behind
> $query_str =~ s/^ AND //;
>--
>2.17.1
--
You are receiving this mail because:
You are the assignee for the bug.
You are watching all bug changes.
More information about the Koha-bugs
mailing list