Bug 9219 - Show damaged and lost statuses for issues on circulation.pl as they are...
[koha.git] / C4 / Matcher.pm
index c0634ec..6a7c4f2 100644 (file)
@@ -626,6 +626,8 @@ sub get_matches {
 
     my %matches = ();
 
+    my $QParser;
+    $QParser = C4::Context->queryparser if (C4::Context->preference('UseQueryParser'));
     foreach my $matchpoint (@{ $self->{'matchpoints'} }) {
         my @source_keys = _get_match_keys($source_record, $matchpoint);
         next if scalar(@source_keys) == 0;
@@ -634,31 +636,36 @@ sub get_matches {
         my $error;
         my $searchresults;
         my $total_hits;
-        if ($self->{'record_type'} eq 'biblio') {
-            $query = join(" or ", map { "$matchpoint->{'index'}=$_" } @source_keys);
-# FIXME only searching biblio index at the moment
+        if ($QParser) {
+            $query = join(" || ", 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'};
+            ($error, $searchresults, $total_hits) = C4::Search::SimpleSearch($query, 0, $max_matches, [ $self->{'record_type'} . 'server' ] );
+        } else {
+            if ($self->{'record_type'} eq 'biblio') {
+                $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'};
+                }
             }
         }