To reproduce: 1. Set ElasticsearchMARCFormat="Searchable array" 2. Reindex all the things: $ ktd --shell k$ koha-elasticsearch --rebuild -d -v kohadev 3. Go to advanced search, using the 'More options' option. 4. Check 'Search entire MARC record' and 'Apply weights to search' 5. Perform a search on 'FULL TEXT' => SUCCESS: The URL contains `whole_record=on` and `weighted_fields=on` 6. Hover on any facet and look at the link => FAIL: It doesn't contain them!
Created attachment 187529 [details] [review] Bug 40966: Make sure 'whole_record' and 'weighted_fields' are passed around The ES query builder correctly handles this parameters (passed from search.pl and opac-search.pl) when it builds the ES query. But the returned 'query_cgi' that is used later for keeping the search results query context for building things like facets, just doesn't pass this values around, leading to a loss of them on the generated links. This patch makes sure they are passed around. To test: 1. Set ElasticsearchMARCFormat="Searchable array" 2. Reindex all the things: $ ktd --shell k$ koha-elasticsearch --rebuild -d -v kohadev 3. Go to advanced search, using the 'More options' option. 4. Check 'Search entire MARC record' and 'Apply weights to search' 5. Perform a search on 'FULL TEXT' => SUCCESS: The URL contains `whole_record=on` and `weighted_fields=on` 6. Hover on any facet and look at the link => FAIL: It doesn't contain them! 7. Apply this patch 8. Restart all k$ restart_all 9. Refresh the search results 10. Repeat 6 => SUCCESS: Links have the needed parameters! 11. Sign off :-D
Created attachment 187531 [details] [review] Bug 40966: Regression tests Tests verify that whole_record and weighted_fields parameters are correctly included in the query_cgi string returned by build_query_compat(), ensuring these parameters are preserved in facet links and pagination. To test: 1. Apply this patch 2. Run: $ ktd --shell k$ prove t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t => FAIL: The values are not being passed around
Created attachment 187532 [details] [review] Bug 40966: Make sure 'whole_record' and 'weighted_fields' are passed around The ES query builder correctly handles this parameters (passed from search.pl and opac-search.pl) when it builds the ES query. But the returned 'query_cgi' that is used later for keeping the search results query context for building things like facets, just doesn't pass this values around, leading to a loss of them on the generated links. This patch makes sure they are passed around. To test: 1. Apply the regression tests 2. Run: $ ktd --shell k$ prove t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t => FAIL: Tests fail! These params are not passed around! 3. Set ElasticsearchMARCFormat="Searchable array" 4. Reindex all the things: k$ koha-elasticsearch --rebuild -d -v kohadev 5. Go to advanced search, using the 'More options' option. 6. Check 'Search entire MARC record' and 'Apply weights to search' 7. Perform a search on 'FULL TEXT' => SUCCESS: The URL contains `whole_record=on` and `weighted_fields=on` 8. Hover on any facet and look at the link => FAIL: It doesn't contain them! 9. Apply this patch 10. Restart all k$ restart_all 11. Refresh the search results 12. Repeat 6 => SUCCESS: Links have the needed parameters! 13. Repeat 2 => SUCCESS: Tests pass! the parameters are passed around! 14. Sign off :-D
This fixes it for the 'on' case - but if I uncheck "Apply field weights to search" - do a search, then click a facet, the weights are applied again The issue is from: my $weight_search = $params->{'advsearch'} ? $params->{'weight_search'} || 0 : 1;
Created attachment 187945 [details] [review] Bug 40966: Regression tests Tests verify that whole_record and weighted_fields parameters are correctly included in the query_cgi string returned by build_query_compat(), ensuring these parameters are preserved in facet links and pagination. To test: 1. Apply this patch 2. Run: $ ktd --shell k$ prove t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t => FAIL: The values are not being passed around
Created attachment 187946 [details] [review] Bug 40966: Make sure 'whole_record' and 'weighted_fields' are passed around The ES query builder correctly handles this parameters (passed from search.pl and opac-search.pl) when it builds the ES query. But the returned 'query_cgi' that is used later for keeping the search results query context for building things like facets, just doesn't pass this values around, leading to a loss of them on the generated links. This patch makes sure they are passed around. To test: 1. Apply the regression tests 2. Run: $ ktd --shell k$ prove t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t => FAIL: Tests fail! These params are not passed around! 3. Set ElasticsearchMARCFormat="Searchable array" 4. Reindex all the things: k$ koha-elasticsearch --rebuild -d -v kohadev 5. Go to advanced search, using the 'More options' option. 6. Check 'Search entire MARC record' and 'Apply weights to search' 7. Perform a search on 'FULL TEXT' => SUCCESS: The URL contains `whole_record=on` and `weighted_fields=on` 8. Hover on any facet and look at the link => FAIL: It doesn't contain them! 9. Apply this patch 10. Restart all k$ restart_all 11. Refresh the search results 12. Repeat 6 => SUCCESS: Links have the needed parameters! 13. Repeat 2 => SUCCESS: Tests pass! the parameters are passed around! 14. Sign off :-D
For step 7, I'm assuming you put 'FULL TEXT' in the first keyword field. I'm getting this for search results, instead of results and facets (normal advanced searches work fine): No results found You did not specify any search criteria. Error: Unable to perform your search. Please try again.
(In reply to David Nind from comment #7) > For step 7, I'm assuming you put 'FULL TEXT' in the first keyword field. > > I'm getting this for search results, instead of results and facets (normal > advanced searches work fine): > > No results found > You did not specify any search criteria. > > Error: Unable to perform your search. Please try again. I chose phrase search instead of keyword.
(In reply to Tomás Cohen Arazi (tcohen) from comment #8) > (In reply to David Nind from comment #7) > > For step 7, I'm assuming you put 'FULL TEXT' in the first keyword field. > > > > I'm getting this for search results, instead of results and facets (normal > > advanced searches work fine): > > > > No results found > > You did not specify any search criteria. > > > > Error: Unable to perform your search. Please try again. > > I chose phrase search instead of keyword. I chose 'Keyword as phrase' - without 'Search entire MARC record' I get a normal no results page, with it ticked I get the same error as above. With both patches applied, the tests now pass but I get the same error. (I'm using ktd --es7 up, as I haven't been able to get es8 to work for a while on KTD.)