Bug 40966

Summary: 'whole_record' and 'weighted_fields' not passed around
Product: Koha Reporter: Tomás Cohen Arazi (tcohen) <tomascohen>
Component: Searching - ElasticsearchAssignee: Tomás Cohen Arazi (tcohen) <tomascohen>
Status: Needs Signoff --- QA Contact: Testopia <testopia>
Severity: major    
Priority: P5 - low CC: nick, tomascohen
Version: unspecified   
Hardware: All   
OS: All   
GIT URL: Change sponsored?: ---
Patch complexity: Trivial patch Documentation contact:
Documentation submission: Text to go in the release notes:
Version(s) released in:
Circulation function:
Bug Depends on:    
Bug Blocks: 40968    
Attachments: Bug 40966: Make sure 'whole_record' and 'weighted_fields' are passed around
Bug 40966: Regression tests
Bug 40966: Make sure 'whole_record' and 'weighted_fields' are passed around

Description Tomás Cohen Arazi (tcohen) 2025-10-07 14:26:40 UTC
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!
Comment 1 Tomás Cohen Arazi (tcohen) 2025-10-07 14:42:30 UTC Comment hidden (obsolete)
Comment 2 Tomás Cohen Arazi (tcohen) 2025-10-07 14:52:01 UTC
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
Comment 3 Tomás Cohen Arazi (tcohen) 2025-10-07 14:52:04 UTC
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