- my $query = join(" or ", map { "$matchpoint->{'index'}=$_" } @source_keys);
- # FIXME only searching biblio index at the moment
- my ($error, $searchresults, $total_hits) = SimpleSearch($query, 0, $max_matches);
+ my $query;
+ my $error;
+ my $searchresults;
+ my $total_hits;
+ if ( $self->{'record_type'} eq 'biblio' ) {
+ if ($QParser) {
+ $query = join( " || ",
+ map { "$matchpoint->{'index'}:$_" } @source_keys );
+ }
+ else {
+ $query = join( " or ",
+ map { "$matchpoint->{'index'}=$_" } @source_keys );
+ }
+ require C4::Search;
+ ( $error, $searchresults, $total_hits ) =
+ C4::Search::SimpleSearch( $query, 0, $max_matches );
+ }
+ elsif ( $self->{'record_type'} eq 'authority' ) {
+ my $authresults;
+ my @marclist;
+ my @and_or;
+ my @excluding = [];
+ my @operator;
+ my @value;
+ foreach my $key (@source_keys) {
+ push @marclist, $matchpoint->{'index'};
+ push @and_or, 'or';
+ push @operator, 'exact';
+ push @value, $key;
+ }
+ require C4::AuthoritiesMarc;
+ ( $authresults, $total_hits ) =
+ C4::AuthoritiesMarc::SearchAuthorities(
+ \@marclist, \@and_or, \@excluding, \@operator,
+ \@value, 0, 20, undef,
+ 'AuthidAsc', 1
+ );
+ foreach my $result (@$authresults) {
+ push @$searchresults, $result->{'authid'};
+ }
+ }