Bug 30141

Summary: ElasticsearchCrossFields enabled returns no search results on OPAC
Product: Koha Reporter: Aleisha Amohia <aleisha>
Component: Searching - ElasticsearchAssignee: Bugs List <koha-bugs>
Status: NEW --- QA Contact:
Severity: normal    
Priority: P5 - low CC: fridolin.somers, philippe.blouin, shi-yao.wang
Version: 20.05   
Hardware: All   
OS: All   
See Also: https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=30173
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=30152
Change sponsored?: --- Patch complexity: ---
Documentation contact: Documentation submission:
Text to go in the release notes:
Version(s) released in:

Description Aleisha Amohia 2022-02-21 02:55:56 UTC
ElasticsearchCrossFields is a great syspref to enable if you need to search across indexes, for example your search term includes both title and author keywords.

We've discovered this only works on the staff client, and returns no results when searching on the OPAC.

After some investigation, this is because the OPAC will add a `suppress:false` to the search query, to hide records that are suppressed in OPAC. 

I'm not sure why, but this combination of suppress:false and ElasticsearchCrossFields means no results are returned in the OPAC.
Comment 1 Shi Yao Wang 2022-05-24 20:12:33 UTC
It may be due to ES boolean statements not being evaluated correctly?
Possible fix.

diff --git a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm
index dba475eb3c..5934956326 100644
--- a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm
+++ b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm
@@ -306,6 +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) );
+        $search_param_query_str = "($search_param_query_str)";
         $query_str = join( ' AND ',
             $search_param_query_str || (),
             $self->_join_queries( $self->_convert_index_strings(@$limits) ) || () );
Comment 2 Shi Yao Wang 2022-05-24 20:30:26 UTC
Also, it may be related to https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=30152