When processing items for display in search Results we fetch the item object and call get_transfers When maxItemsInSearchResults is raised to a higher number, say 50, common in consortia to display correct info for many branches this can have a large impact on search speed. Ultimately, perhaps, we should index the transfer status, but it seems to benefit us to fetch the transfers directly here as we don't use the object for anything else at this point in the code.
Created attachment 190469 [details] [review] Bug 41444: Search for transfers directly This patch removes a fetch of the item object followed but get_transfer to simply search the transfers by itemnumber and status To test: 1 - Add many items to your records https://github.com/kidclamp/handy-koha-script/blob/main/randitems.pl NOTE: this script makes a lot of items withdrawn or damaged, undo that for more dramatic difference UPDATE items SET withdrawn=0,damaged=0 perl misc/search_tools/rebuild_elasticsearch -v 2 - Set Koha system preferences to display more results and check more items: maxItemsInSearchResults 60 numSearchResults 50 3 - Do a search, several times, note the time it takes 4 - Apply patch, restart all 5 - Repeat search several times, note the time it takes 6 - Confirm it is better after the patch
Created attachment 190474 [details] [review] Bug 41444: Search for transfers directly This patch removes a fetch of the item object followed but get_transfer to simply search the transfers by itemnumber and status To test: 1 - Add many items to your records https://github.com/kidclamp/handy-koha-script/blob/main/randitems.pl NOTE: this script makes a lot of items withdrawn or damaged, undo that for more dramatic difference UPDATE items SET withdrawn=0,damaged=0 perl misc/search_tools/rebuild_elasticsearch -v 2 - Set Koha system preferences to display more results and check more items: maxItemsInSearchResults 60 numSearchResults 50 3 - Do a search, several times, note the time it takes 4 - Apply patch, restart all 5 - Repeat search several times, note the time it takes 6 - Confirm it is better after the patch Signed-off-by: David Nind <david@davidnind.com>
Adding a mention that this syspref controls how many items are checked and should be raised as well during testing MaxSearchResultsItemsPerRecordStatusCheck