Bug 5415 Let calls of SimpleSearch utilize considtent interface

Remove some unnecessary checks when check of error is
sufficient. Make the order in some cases more logical
Should remove some possibilities of runtime warning noise.
Although some calls belong to the 'Nothing could
ever go wrong' school have added some warnings

Signed-off-by: Christophe Croullebois <christophe.croullebois@biblibre.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
This commit is contained in:
Colin Campbell 2011-04-06 11:42:41 +02:00 committed by Chris Cormack
parent 5444413a4f
commit d8b362e0f9
12 changed files with 50 additions and 26 deletions

View file

@ -364,7 +364,12 @@ sub CountUsage {
my $query;
$query= "an=".$authid;
my ($err,$res,$result) = C4::Search::SimpleSearch($query,0,10);
return ($result);
if ($err) {
warn "Error: $err from search $query";
$result = 0;
}
return $result;
}
}
@ -917,7 +922,7 @@ sub FindDuplicateAuthority {
}
my ($error, $results, $total_hits) = C4::Search::SimpleSearch( $query, 0, 1, [ "authorityserver" ] );
# there is at least 1 result => return the 1st one
if (@$results>0) {
if (!defined $error && @{$results} ) {
my $marcrecord = MARC::File::USMARC::decode($results->[0]);
return $marcrecord->field('001')->data,BuildSummary($marcrecord,$marcrecord->field('001')->data,$authtypecode);
}

View file

@ -24,6 +24,7 @@ use MARC::Field;
use C4::Context;
use C4::Heading::MARC21;
use C4::Search;
use Carp;
our $VERSION = 3.00;
@ -109,6 +110,9 @@ sub authorities {
my $query = qq(Match-heading,do-not-truncate,ext="$self->{'search_form'}");
$query .= $self->_query_limiters();
my ($error, $results, $total_hits) = SimpleSearch( $query, undef, undef, [ "authorityserver" ] );
if (defined $error) {
carp "Error:$error from search $query";
}
return $results;
}
@ -126,6 +130,9 @@ sub preferred_authorities {
my $query = "Match-heading-see-from,do-not-truncate,ext='$self->{'search_form'}'";
$query .= $self->_query_limiters();
my ($error, $results, $total_hits) = SimpleSearch( $query, undef, undef, [ "authorityserver" ] );
if (defined $error) {
carp "Error:$error from search $query";
}
return $results;
}

View file

@ -606,9 +606,12 @@ sub get_matches {
# FIXME only searching biblio index at the moment
my ($error, $searchresults, $total_hits) = SimpleSearch($query, 0, $max_matches);
warn "search failed ($query) $error" if $error;
foreach my $matched (@$searchresults) {
$matches{$matched} += $matchpoint->{'score'};
if (defined $error ) {
warn "search failed ($query) $error";
} else {
foreach my $matched (@{$searchresults}) {
$matches{$matched} += $matchpoint->{'score'};
}
}
}

View file

@ -112,16 +112,15 @@ if (defined $error) {
my @results;
if ($marcresults) {
foreach my $result ( @{$marcresults} ) {
my $marcrecord = MARC::File::USMARC::decode( $result );
my $biblio = TransformMarcToKoha( C4::Context->dbh, $marcrecord, '' );
foreach my $result ( @{$marcresults} ) {
my $marcrecord = MARC::File::USMARC::decode( $result );
my $biblio = TransformMarcToKoha( C4::Context->dbh, $marcrecord, '' );
$biblio->{booksellerid} = $booksellerid;
push @results, $biblio;
$biblio->{booksellerid} = $booksellerid;
push @results, $biblio;
}
}
$template->param(
basketno => $basketno,
booksellerid => $bookseller->{'id'},

View file

@ -25,6 +25,9 @@ foreach my $authority (@$dataauthorities){
$query= "an=".$authority->{'authid'};
# search for biblios mapped
my ($err,$res,$used) = C4::Search::SimpleSearch($query,0,10);
if (defined $err) {
$used = 0;
}
if ($marcauthority && $marcauthority->field($authtypes{$authority->{'authtypecode'}}->{'tag'})){
print qq("),$marcauthority->field($authtypes{$authority->{'authtypecode'}}->{"tag"})->as_string(),qq(";),qq($authority->{'authid'};"),$authtypes{$authority->{'authtypecode'}}->{'lib'},qq(";$used\n);
}

View file

@ -769,16 +769,16 @@ AND (authtypecode IS NOT NULL AND authtypecode<>\"\")|);
warn "BIBLIOADDSAUTHORITIES: $error";
return (0,0) ;
}
if ($results && scalar(@$results)==1) {
if ( @{$results} == 1) {
my $marcrecord = MARC::File::USMARC::decode($results->[0]);
$field->add_subfields('9'=>$marcrecord->field('001')->data);
$countlinked++;
} elsif (scalar(@$results)>1) {
} elsif (@{$results} > 1) {
#More than One result
#This can comes out of a lack of a subfield.
# my $marcrecord = MARC::File::USMARC::decode($results->[0]);
# $record->field($data->{tagfield})->add_subfields('9'=>$marcrecord->field('001')->data);
$countlinked++;
$countlinked++;
} else {
#There are no results, build authority record, add it to Authorities, get authid and add it to 9
###NOTICE : This is only valid if a subfield is linked to one and only one authtypecode

View file

@ -85,8 +85,8 @@ if ($query) {
# format output
# SimpleSearch() give the results per page we want, so 0 offet here
my $total = scalar @$marcresults;
my @newresults = searchResults( 'intranet', $query, $total, $results_per_page, 0, 0, @$marcresults );
my $total = @{$marcresults};
my @newresults = searchResults( 'intranet', $query, $total, $results_per_page, 0, 0, @{$marcresults} );
$template->param(
total => $total_hits,
query => $query,

View file

@ -335,7 +335,10 @@ sub plugin {
my $orderby;
$search = 'kw,wrdl='.$search.' and mc-itemtype='.$itype if $itype;
my ( $errors, $results, $total_hits ) = SimpleSearch($search, $startfrom * $resultsperpage, $resultsperpage );
my $total = scalar(@$results);
if (defined $errors ) {
$results = [];
}
my $total = @{$results};
# warn " biblio count : ".$total;

View file

@ -92,8 +92,8 @@ if ( $op eq "do_search" ) {
( $error, $marcresults, $total_hits ) =
SimpleSearch( $ccl_query, $offset, $resultsperpage );
if (scalar($marcresults) > 0) {
$show_results = scalar @$marcresults;
if (!defined $error && @{$marcresults} ) {
$show_results = @{$marcresults};
}
else {
$debug and warn "ERROR label-item-search: no results from SimpleSearch";

View file

@ -222,15 +222,15 @@ RECORD: while ( ) {
my ($error, $results,$totalhits)=C4::Search::SimpleSearch( $query, 0, 3, [$server] );
die "unable to search the database for duplicates : $error" if (defined $error);
#warn "$query $server : $totalhits";
if ($results && scalar(@$results)==1){
if ( @{$results} == 1 ){
my $marcrecord = MARC::File::USMARC::decode($results->[0]);
$id=GetRecordId($marcrecord,$tagid,$subfieldid);
}
elsif ($results && scalar(@$results)>1){
$debug && warn "more than one match for $query";
elsif ( @{$results} > 1){
$debug && warn "more than one match for $query";
}
else {
$debug && warn "nomatch for $query";
$debug && warn "nomatch for $query";
}
}
my $originalid;

View file

@ -62,6 +62,10 @@ while (my $data=$rqselect->fetchrow_hashref){
$query= "an=".$data->{'authid'};
# search for biblios mapped
my ($err,$res,$used) = C4::Search::SimpleSearch($query,0,10);
if (defined $err) {
warn "error: $err on search $query\n";
next;
}
print ".";
print "$counter\n" unless $counter++ % 100;
# if found, delete, otherwise, just count

View file

@ -590,8 +590,8 @@ sub add_biblios {
$self->reindex_marc();
my $query = 'Finn Test';
my ( $error, $results ) = SimpleSearch( $query );
if ( $param{'count'} <= scalar( @$results ) ) {
my ( $error, $results, undef ) = SimpleSearch( $query );
if ( !defined $error && $param{'count'} <= @{$results} ) {
pass( "found all $param{'count'} titles" );
} else {
fail( "we never found all $param{'count'} titles" );