From a53d810fc4503714420ed226d634d42a6a30bab1 Mon Sep 17 00:00:00 2001 From: Nick Clemens <nick@bywatersolutions.com> Date: Wed, 26 Feb 2020 14:30:17 +0000 Subject: [PATCH] Bug 24155: Make wieghting an option on advanced search Currently we apply weighting to all searches except advanced search. The theory being that when selecting indexes we don't want to apply weights. When searching in ES weights are only applied to relevant results so it doesn't matter. i.e. if weighting author*100 but searching subject, a term matching the subject search in author is not boosted. Given this, we should always apply weights, unless the user wishes not to To test: 1 - Set some weighting 2 - Do some searches 3 - Note your terms and results, try advanced and regular searches specifying indexes or not 4 - Apply patch 5 - Note that opac and staff advanced search have option to apply weights 6 - Compare searches after the patch to see how weighting affects, it should be beneficial or not at all --- catalogue/search.pl | 3 ++- cataloguing/addbooks.pl | 2 +- koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/advsearch.tt | 10 +++++++--- koha-tmpl/opac-tmpl/bootstrap/en/includes/masthead.inc | 1 + koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-advsearch.tt | 4 ++++ opac/opac-search.pl | 3 ++- 6 files changed, 17 insertions(+), 6 deletions(-) diff --git a/catalogue/search.pl b/catalogue/search.pl index 6e5d929413..e42092a09a 100755 --- a/catalogue/search.pl +++ b/catalogue/search.pl @@ -472,6 +472,7 @@ my $count = C4::Context->preference('numSearchResults') || 20; my $results_per_page = $params->{'count'} || $count; my $offset = $params->{'offset'} || 0; my $whole_record = $params->{'whole_record'} || 0; +my $weight_search = $params->{'weight_search'} || 0; $offset = 0 if $offset < 0; my $page = $cgi->param('page') || 1; #my $offset = ($page-1)*$results_per_page; @@ -491,7 +492,7 @@ my $searcher = Koha::SearchEngine::Search->new( $query_type ) = $builder->build_query_compat( \@operators, \@operands, \@indexes, \@limits, - \@sort_by, $scan, $lang, { weighted_fields => !$cgi->param('advsearch'), whole_record => $whole_record }); + \@sort_by, $scan, $lang, { weighted_fields => $weight_search, whole_record => $whole_record }); $template->param( search_query => $query ) if C4::Context->preference('DumpSearchQueryTemplate'); diff --git a/cataloguing/addbooks.pl b/cataloguing/addbooks.pl index 9f6fec7f05..544457af3b 100755 --- a/cataloguing/addbooks.pl +++ b/cataloguing/addbooks.pl @@ -75,7 +75,7 @@ if ($query) { my $searcher = Koha::SearchEngine::Search->new( { index => $Koha::SearchEngine::BIBLIOS_INDEX } ); ( undef, $builtquery, undef, $query_cgi, undef, undef, undef, undef, undef, undef ) = - $builder->build_query_compat( undef, \@operands, undef, undef, undef, 0, $lang ); + $builder->build_query_compat( undef, \@operands, undef, undef, undef, 0, $lang, { weighted_fields => 1 }); $template->param( search_query => $builtquery ) if C4::Context->preference('DumpSearchQueryTemplate'); diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/advsearch.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/advsearch.tt index 33ec5241cf..7c53869460 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/advsearch.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/advsearch.tt @@ -90,9 +90,13 @@ <!-- BOOLEAN SEARCH OPTIONS --> <fieldset id="searchterms"> <legend>Search for </legend> - [% IF Koha.Preference('ElasticsearchMARCFormat') == 'ARRAY' %] - <input type="checkbox" name="whole_record"> - <label for="whole_record">Search entire MARC record</label> + [% IF Koha.Preference('SearchEngine') == 'Elasticsearch' %] + [% IF Koha.Preference('ElasticsearchMARCFormat') == 'ARRAY' %] + <input type="checkbox" name="whole_record"> + <label for="whole_record">Search entire MARC record</label> + [% END %] + <input type="checkbox" name="weight_search" checked> + <label for="weight_search">Apply field weightings to search</label> [% END %] [% FOREACH search_box IN search_boxes_loop %] [% IF ( search_boxes_label ) %]<div style="text-indent: 4.5em;">[% ELSE %]<div>[% END %] diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/masthead.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/masthead.inc index 6be6e8b8f1..9da1a0fbc1 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/masthead.inc +++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/masthead.inc @@ -170,6 +170,7 @@ [% END %] [% IF Koha.Preference('OpacCustomSearch') == '' %] <form name="searchform" method="get" action="/cgi-bin/koha/opac-search.pl" id="searchform" class="form-inline"> + <input type="hidden" name="weight_search" value="1"> <label for="masthead_search"> Search [% UNLESS ( Koha.Preference( 'OpacAddMastheadLibraryPulldown' ) == 1 ) %] [% IF ( mylibraryfirst ) %] diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-advsearch.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-advsearch.tt index 6248b360b6..06229d2b6d 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-advsearch.tt +++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-advsearch.tt @@ -24,6 +24,10 @@ <div id="booleansearch" class="maincontent"> <fieldset> <legend>Search for:</legend> + [% IF Koha.Preference('SearchEngine') == 'Elasticsearch' %] + <input type="checkbox" name="weight_search" checked> + <label for="weighted_search">Apply field weightings to search</label> + [% END %] [% FOREACH search_box IN search_boxes_loop %] <p> [% IF ( expanded_options ) %] diff --git a/opac/opac-search.pl b/opac/opac-search.pl index a3a766ac7d..ceb6c96c90 100755 --- a/opac/opac-search.pl +++ b/opac/opac-search.pl @@ -530,6 +530,7 @@ $offset = 0 if $offset < 0; my $page = $cgi->param('page') || 1; $offset = ($page-1)*$results_per_page if $page>1; my $hits; +my $weight_search = $cgi->param('weight_search') || 0; # Define some global variables my ($error,$query,$simple_query,$query_cgi,$query_desc,$limit,$limit_cgi,$limit_desc,$query_type); @@ -562,7 +563,7 @@ if (C4::Context->preference('OpacSuppression')) { { suppress => $suppress, is_opac => 1, - weighted_fields => !$cgi->param('advsearch') + weighted_fields => $weight_search } ); -- 2.11.0