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.
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) ) || () );
Also, it may be related to https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=30152