|
Lines 628-678
sub get_matches {
Link Here
|
| 628 |
|
628 |
|
| 629 |
my $QParser; |
629 |
my $QParser; |
| 630 |
$QParser = C4::Context->queryparser if (C4::Context->preference('UseQueryParser')); |
630 |
$QParser = C4::Context->queryparser if (C4::Context->preference('UseQueryParser')); |
| 631 |
foreach my $matchpoint (@{ $self->{'matchpoints'} }) { |
631 |
foreach my $matchpoint ( @{ $self->{'matchpoints'} } ) { |
| 632 |
my @source_keys = _get_match_keys($source_record, $matchpoint); |
632 |
my @source_keys = _get_match_keys( $source_record, $matchpoint ); |
| 633 |
next if scalar(@source_keys) == 0; |
633 |
next if scalar(@source_keys) == 0; |
|
|
634 |
|
| 634 |
# build query |
635 |
# build query |
| 635 |
my $query; |
636 |
my $query; |
| 636 |
my $error; |
637 |
my $error; |
| 637 |
my $searchresults; |
638 |
my $searchresults; |
| 638 |
my $total_hits; |
639 |
my $total_hits; |
| 639 |
if ($QParser) { |
640 |
if ( $self->{'record_type'} eq 'biblio' ) { |
| 640 |
$query = join(" || ", map { "$matchpoint->{'index'}:$_" } @source_keys); |
641 |
if ($QParser) { |
|
|
642 |
$query = join( " || ", |
| 643 |
map { "$matchpoint->{'index'}:$_" } @source_keys ); |
| 644 |
} |
| 645 |
else { |
| 646 |
$query = join( " or ", |
| 647 |
map { "$matchpoint->{'index'}=$_" } @source_keys ); |
| 648 |
} |
| 641 |
require C4::Search; |
649 |
require C4::Search; |
| 642 |
($error, $searchresults, $total_hits) = C4::Search::SimpleSearch($query, 0, $max_matches, [ $self->{'record_type'} . 'server' ] ); |
650 |
( $error, $searchresults, $total_hits ) = |
| 643 |
} else { |
651 |
C4::Search::SimpleSearch( $query, 0, $max_matches ); |
| 644 |
if ($self->{'record_type'} eq 'biblio') { |
652 |
} |
| 645 |
$query = join(" or ", map { "$matchpoint->{'index'}=$_" } @source_keys); |
653 |
elsif ( $self->{'record_type'} eq 'authority' ) { |
| 646 |
require C4::Search; |
654 |
my $authresults; |
| 647 |
($error, $searchresults, $total_hits) = C4::Search::SimpleSearch($query, 0, $max_matches); |
655 |
my @marclist; |
| 648 |
} elsif ($self->{'record_type'} eq 'authority') { |
656 |
my @and_or; |
| 649 |
my $authresults; |
657 |
my @excluding = []; |
| 650 |
my @marclist; |
658 |
my @operator; |
| 651 |
my @and_or; |
659 |
my @value; |
| 652 |
my @excluding = []; |
660 |
foreach my $key (@source_keys) { |
| 653 |
my @operator; |
661 |
push @marclist, $matchpoint->{'index'}; |
| 654 |
my @value; |
662 |
push @and_or, 'or'; |
| 655 |
foreach my $key (@source_keys) { |
663 |
push @operator, 'exact'; |
| 656 |
push @marclist, $matchpoint->{'index'}; |
664 |
push @value, $key; |
| 657 |
push @and_or, 'or'; |
665 |
} |
| 658 |
push @operator, 'exact'; |
666 |
require C4::AuthoritiesMarc; |
| 659 |
push @value, $key; |
667 |
( $authresults, $total_hits ) = |
| 660 |
} |
668 |
C4::AuthoritiesMarc::SearchAuthorities( |
| 661 |
require C4::AuthoritiesMarc; |
669 |
\@marclist, \@and_or, \@excluding, \@operator, |
| 662 |
($authresults, $total_hits) = C4::AuthoritiesMarc::SearchAuthorities( |
670 |
\@value, 0, 20, undef, |
| 663 |
\@marclist, \@and_or, \@excluding, \@operator, |
671 |
'AuthidAsc', 1 |
| 664 |
\@value, 0, 20, undef, 'AuthidAsc', 1 |
672 |
); |
| 665 |
); |
673 |
foreach my $result (@$authresults) { |
| 666 |
foreach my $result (@$authresults) { |
674 |
push @$searchresults, $result->{'authid'}; |
| 667 |
push @$searchresults, $result->{'authid'}; |
|
|
| 668 |
} |
| 669 |
} |
675 |
} |
| 670 |
} |
676 |
} |
| 671 |
|
677 |
|
| 672 |
if (defined $error ) { |
678 |
if ( defined $error ) { |
| 673 |
warn "search failed ($query) $error"; |
679 |
warn "search failed ($query) $error"; |
| 674 |
} else { |
680 |
} |
| 675 |
foreach my $matched (@{$searchresults}) { |
681 |
else { |
|
|
682 |
foreach my $matched ( @{$searchresults} ) { |
| 676 |
$matches{$matched} += $matchpoint->{'score'}; |
683 |
$matches{$matched} += $matchpoint->{'score'}; |
| 677 |
} |
684 |
} |
| 678 |
} |
685 |
} |
| 679 |
- |
|
|