From af1fb6f0b44d9ba67c2b6149b4b68e611c53bdeb Mon Sep 17 00:00:00 2001 From: Joe Atzberger Date: Wed, 1 Jul 2009 22:47:35 -0500 Subject: [PATCH] Bug 2539. Remove unintegrated "spsuggest" code from search scripts. The intent of kohaspsuggest is very confused. It wanted to simultaneously log every search query, and get spelling suggestions from a totally different database_host:db_user:db_password:database. The implementation seems never have really made it into 3.0, however, since the only trace of the tables it wants to query are in misc/migration_tools/22_to_30/phrase_log.sql The job misc/spellcheck_suggest/make_spellcheck_suggest.pl does not even target the same remote DB as the syspref tells the search code to do. Instead, it hits the local DB and, not finding the tables that have no way of existing in a 3.0 install, it CREATES its own tables spontaneously, using MyISAM storage, no less. This script should be drastically overhauled, or more likely just removed. Other fixes: Commented out unconditional warn! Also reduced bizarre whitespace amounts in catalogue/search.pl and fixed warning as recommended by perl -wc: Scalar value @newresults[0] better written as $newresults[0] Signed-off-by: Galen Charlton --- catalogue/search.pl | 76 ++++----------------------------------------- opac/opac-search.pl | 46 --------------------------- 2 files changed, 6 insertions(+), 116 deletions(-) diff --git a/catalogue/search.pl b/catalogue/search.pl index afc32a57ae..336e12fa2d 100755 --- a/catalogue/search.pl +++ b/catalogue/search.pl @@ -2,8 +2,6 @@ # Script to perform searching # For documentation try 'perldoc /path/to/search' # -# $Header$ -# # Copyright 2006 LibLime # # This file is part of Koha @@ -275,15 +273,12 @@ if ( $template_type eq 'advsearch' ) { # shouldn't appear on the first one, scan indexes should, adding a new # box should only appear on the last, etc. my @search_boxes_array; - my $search_boxes_count = C4::Context->preference("OPACAdvSearchInputCount") | 3; # FIXME: should be a syspref + my $search_boxes_count = C4::Context->preference("OPACAdvSearchInputCount") || 3; # FIXME: using OPAC sysprefs? + # FIXME: all this junk can be done in TMPL using __first__ and __last__ for (my $i=1;$i<=$search_boxes_count;$i++) { # if it's the first one, don't display boolean option, but show scan indexes if ($i==1) { - push @search_boxes_array, - { - scan_index => 1, - }; - + push @search_boxes_array, {scan_index => 1}; } # if it's the last one, show the 'add field' box elsif ($i==$search_boxes_count) { @@ -484,7 +479,7 @@ my $results_hashref; if (C4::Context->preference('NoZebra')) { $query=~s/yr(:|=)\s*([\d]{1,4})-([\d]{1,4})/(yr>=$2 and yr<=$3)/g; $simple_query=~s/yr\s*(:|=)([\d]{1,4})-([\d]{1,4})/(yr>=$2 and yr<=$3)/g; - warn $query; + # warn $query; eval { ($error, $results_hashref, $facets) = NZgetRecords($query,$simple_query,\@sort_by,\@servers,$results_per_page,$offset,$expanded_facet,$branches,$query_type,$scan); }; @@ -495,7 +490,6 @@ if (C4::Context->preference('NoZebra')) { } if ($@ || $error) { $template->param(query_error => $error.$@); - output_html_with_http_headers $cgi, $cookie, $template->output; exit; } @@ -512,7 +506,7 @@ for (my $i=0;$i<@servers;$i++) { $total = $total + $results_hashref->{$server}->{"hits"}; ## If there's just one result, redirect to the detail page if ($total == 1) { - my $biblionumber=@newresults[0]->{biblionumber}; + my $biblionumber = $newresults[0]->{biblionumber}; my $defaultview = C4::Context->preference('IntranetBiblioDefaultView'); my $views = { C4::Search::enabled_staff_search_views }; if ($defaultview eq 'isbd' && $views->{can_view_ISBD}) { @@ -528,7 +522,6 @@ for (my $i=0;$i<@servers;$i++) { } - if ($hits) { $template->param(total => $hits); my $limit_cgi_not_availablity = $limit_cgi; @@ -577,8 +570,6 @@ for (my $i=0;$i<@servers;$i++) { } - - # now, show twenty pages, with the current one smack in the middle else { for (my $i=$current_page_number; $i<=($current_page_number + 20 );$i++) { @@ -589,7 +580,6 @@ for (my $i=0;$i<@servers;$i++) { push @page_numbers, { offset => $this_offset, pg => $this_page_number, highlight => $highlight, sort_by => join " ",@sort_by }; } } - } # FIXME: no previous_page_offset when pages < 2 $template->param( PAGE_NUMBERS => \@page_numbers, @@ -598,19 +588,12 @@ for (my $i=0;$i<@servers;$i++) { } - - - # no hits else { $template->param(searchdesc => 1,query_desc => $query_desc,limit_desc => $limit_desc); $template->param (z3950_search_params => C4::Search::z3950_search_args($z3950par || $query_desc)); } - - - - } # end of the if local # asynchronously search the authority server @@ -624,8 +607,7 @@ for (my $i=0;$i<@servers;$i++) { 'link' => "&idx=an&q=".$marc_record_object->field('001')->as_string(), }; } - my $servername = $server; - push @sup_results_array, { servername => $servername, + push @sup_results_array, { servername => $server, inner_sup_results_loop => \@inner_sup_results_array} if @inner_sup_results_array; } # FIXME: can add support for other targets as needed here @@ -647,51 +629,5 @@ if ($query_desc || $limit_desc) { $template->param(searchdesc => 1); } -## Now let's find out if we have any supplemental data to show the user -# and in the meantime, save the current query for statistical purposes, etc. -my $koha_spsuggest; # a flag to tell if we've got suggestions coming from Koha -my @koha_spsuggest; # place we store the suggestions to be returned to the template as LOOP -my $phrases = $query_desc; -my $ipaddress; - -if ( C4::Context->preference("kohaspsuggest") ) { - my ($suggest_host, $suggest_dbname, $suggest_user, $suggest_pwd) = split(':', C4::Context->preference("kohaspsuggest")); - eval { - my $koha_spsuggest_dbh; - # FIXME: this needs to be moved to Context.pm - eval { - $koha_spsuggest_dbh=DBI->connect("DBI:mysql:$suggest_dbname:$suggest_host","$suggest_user","$suggest_pwd"); - }; - if ($@) { - warn "can't connect to spsuggest db"; - } - else { - my $koha_spsuggest_insert = "INSERT INTO phrase_log(phr_phrase,phr_resultcount,phr_ip) VALUES(?,?,?)"; - my $koha_spsuggest_query = "SELECT display FROM distincts WHERE strcmp(soundex(suggestion), soundex(?)) = 0 order by soundex(suggestion) limit 0,5"; - my $koha_spsuggest_sth = $koha_spsuggest_dbh->prepare($koha_spsuggest_query); - $koha_spsuggest_sth->execute($phrases); - while (my $spsuggestion = $koha_spsuggest_sth->fetchrow_array) { - $spsuggestion =~ s/(:|\/)//g; - my %line; - $line{spsuggestion} = $spsuggestion; - push @koha_spsuggest,\%line; - $koha_spsuggest = 1; - } - - # Now save the current query - $koha_spsuggest_sth=$koha_spsuggest_dbh->prepare($koha_spsuggest_insert); - #$koha_spsuggest_sth->execute($phrases,$results_per_page,$ipaddress); - $koha_spsuggest_sth->finish; - - $template->param( koha_spsuggest => $koha_spsuggest ) unless $hits; - $template->param( SPELL_SUGGEST => \@koha_spsuggest, - ); - } - }; - if ($@) { - warn "Kohaspsuggest failure:".$@; - } -} - # VI. BUILD THE TEMPLATE output_html_with_http_headers $cgi, $cookie, $template->output; diff --git a/opac/opac-search.pl b/opac/opac-search.pl index 9f291ec9d9..798a253e66 100755 --- a/opac/opac-search.pl +++ b/opac/opac-search.pl @@ -547,52 +547,6 @@ if ($query_desc || $limit_desc) { $template->param(searchdesc => 1); } -## Now let's find out if we have any supplemental data to show the user -# and in the meantime, save the current query for statistical purposes, etc. -my $koha_spsuggest; # a flag to tell if we've got suggestions coming from Koha -my @koha_spsuggest; # place we store the suggestions to be returned to the template as LOOP -my $phrases = $query_desc; -my $ipaddress; - -if ( C4::Context->preference("kohaspsuggest") ) { - my ($suggest_host, $suggest_dbname, $suggest_user, $suggest_pwd) = split(':', C4::Context->preference("kohaspsuggest")); - eval { - my $koha_spsuggest_dbh; - # FIXME: this needs to be moved to Context.pm - eval { - $koha_spsuggest_dbh=DBI->connect("DBI:mysql:$suggest_dbname:$suggest_host","$suggest_user","$suggest_pwd"); - }; - if ($@) { - warn "can't connect to spsuggest db"; - } - else { - my $koha_spsuggest_insert = "INSERT INTO phrase_log(phr_phrase,phr_resultcount,phr_ip) VALUES(?,?,?)"; - my $koha_spsuggest_query = "SELECT display FROM distincts WHERE strcmp(soundex(suggestion), soundex(?)) = 0 order by soundex(suggestion) limit 0,5"; - my $koha_spsuggest_sth = $koha_spsuggest_dbh->prepare($koha_spsuggest_query); - $koha_spsuggest_sth->execute($phrases); - while (my $spsuggestion = $koha_spsuggest_sth->fetchrow_array) { - $spsuggestion =~ s/(:|\/)//g; - my %line; - $line{spsuggestion} = $spsuggestion; - push @koha_spsuggest,\%line; - $koha_spsuggest = 1; - } - - # Now save the current query - $koha_spsuggest_sth=$koha_spsuggest_dbh->prepare($koha_spsuggest_insert); - #$koha_spsuggest_sth->execute($phrases,$results_per_page,$ipaddress); - $koha_spsuggest_sth->finish; - - $template->param( koha_spsuggest => $koha_spsuggest ) unless $hits; - $template->param( SPELL_SUGGEST => \@koha_spsuggest, - ); - } - }; - if ($@) { - warn "Kohaspsuggest failure:".$@; - } -} - # VI. BUILD THE TEMPLATE # Build drop-down list for 'Add To:' menu... my $session = get_session($cgi->cookie("CGISESSID")); -- 2.39.5