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:
parent
5444413a4f
commit
d8b362e0f9
12 changed files with 50 additions and 26 deletions
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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'};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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'},
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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" );
|
||||
|
|
Loading…
Reference in a new issue