Nick Clemens
e474df6402
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 Signed-off-by: Myka Kennedy Stephens <mkstephens@lancasterseminary.edu> Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com> Signed-off-by: Bob Bennhoff <bbennhoff@clicweb.org> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
158 lines
4.8 KiB
Perl
Executable file
158 lines
4.8 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
|
|
# Copyright 2000-2002 Katipo Communications
|
|
#
|
|
# This file is part of Koha.
|
|
#
|
|
# Koha is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# Koha is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with Koha; if not, see <http://www.gnu.org/licenses>.
|
|
|
|
=head1 cataloguing:addbooks.pl
|
|
|
|
TODO
|
|
|
|
=cut
|
|
|
|
use Modern::Perl;
|
|
|
|
use CGI qw ( -utf8 );
|
|
use URI::Escape;
|
|
use C4::Auth;
|
|
use C4::Biblio;
|
|
use C4::Breeding;
|
|
use C4::Output;
|
|
use C4::Koha;
|
|
use C4::Languages qw(getlanguage);
|
|
use C4::Search;
|
|
|
|
use Koha::BiblioFrameworks;
|
|
use Koha::SearchEngine::Search;
|
|
use Koha::SearchEngine::QueryBuilder;
|
|
use Koha::Z3950Servers;
|
|
|
|
my $input = new CGI;
|
|
|
|
my $success = $input->param('biblioitem');
|
|
my $query = $input->param('q');
|
|
my @value = $input->multi_param('value');
|
|
my $page = $input->param('page') || 1;
|
|
my $results_per_page = 20;
|
|
my $lang = C4::Languages::getlanguage($input);
|
|
|
|
|
|
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
|
|
{
|
|
template_name => "cataloguing/addbooks.tt",
|
|
query => $input,
|
|
type => "intranet",
|
|
flagsrequired => { editcatalogue => '*' },
|
|
debug => 1,
|
|
}
|
|
);
|
|
|
|
# Searching the catalog.
|
|
if ($query) {
|
|
|
|
# build query
|
|
my @operands = $query;
|
|
|
|
my $builtquery;
|
|
my $query_cgi;
|
|
my $builder = Koha::SearchEngine::QueryBuilder->new(
|
|
{ index => $Koha::SearchEngine::BIBLIOS_INDEX } );
|
|
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, { weighted_fields => 1 });
|
|
|
|
$template->param( search_query => $builtquery ) if C4::Context->preference('DumpSearchQueryTemplate');
|
|
|
|
# find results
|
|
my ( $error, $marcresults, $total_hits ) = $searcher->simple_search_compat($builtquery, $results_per_page * ($page - 1), $results_per_page);
|
|
|
|
if ( defined $error ) {
|
|
$template->param( error => $error );
|
|
warn "error: " . $error;
|
|
output_html_with_http_headers $input, $cookie, $template->output;
|
|
exit;
|
|
}
|
|
|
|
# format output
|
|
# SimpleSearch() give the results per page we want, so 0 offet here
|
|
my $total = @{$marcresults};
|
|
my @newresults = searchResults( {'interface' => 'intranet'}, $query, $total, $results_per_page, 0, 0, $marcresults );
|
|
foreach my $line (@newresults) {
|
|
if ( not exists $line->{'size'} ) { $line->{'size'} = "" }
|
|
}
|
|
$template->param(
|
|
total => $total_hits,
|
|
query => $query,
|
|
resultsloop => \@newresults,
|
|
pagination_bar => pagination_bar( "/cgi-bin/koha/cataloguing/addbooks.pl?$query_cgi&", getnbpages( $total_hits, $results_per_page ), $page, 'page' ),
|
|
);
|
|
}
|
|
|
|
# fill with books in breeding farm
|
|
|
|
my $countbr = 0;
|
|
my @resultsbr;
|
|
if ($query) {
|
|
# fill isbn or title, depending on what has been entered
|
|
#u must do check on isbn because u can find number in beginning of title
|
|
#check is on isbn legnth 13 for new isbn and 10 for old isbn
|
|
my ( $title, $isbn );
|
|
if ($query=~/\d/) {
|
|
my $clean_query = $query;
|
|
$clean_query =~ s/-//g; # remove hyphens
|
|
my $querylength = length $clean_query;
|
|
if ( $querylength == 13 || $querylength == 10 ) {
|
|
$isbn = $query;
|
|
}
|
|
}
|
|
if (!$isbn) {
|
|
$title = $query;
|
|
}
|
|
( $countbr, @resultsbr ) = BreedingSearch( $title, $isbn );
|
|
}
|
|
my $breeding_loop = [];
|
|
for my $resultsbr (@resultsbr) {
|
|
push @{$breeding_loop}, {
|
|
id => $resultsbr->{import_record_id},
|
|
isbn => $resultsbr->{isbn},
|
|
copyrightdate => $resultsbr->{copyrightdate},
|
|
editionstatement => $resultsbr->{editionstatement},
|
|
file => $resultsbr->{file_name},
|
|
title => $resultsbr->{title},
|
|
author => $resultsbr->{author},
|
|
};
|
|
}
|
|
|
|
my $servers = Koha::Z3950Servers->search(
|
|
{
|
|
recordtype => 'biblio',
|
|
servertype => ['zed','sru'],
|
|
}
|
|
);
|
|
|
|
my $frameworks = Koha::BiblioFrameworks->search({}, { order_by => ['frameworktext'] });
|
|
$template->param(
|
|
servers => $servers,
|
|
frameworks => $frameworks,
|
|
breeding_count => $countbr,
|
|
breeding_loop => $breeding_loop,
|
|
z3950_search_params => C4::Search::z3950_search_args($query),
|
|
);
|
|
|
|
output_html_with_http_headers $input, $cookie, $template->output;
|
|
|