- my ( $results, $total ) = SearchAuthorities( \@marclist, \@and_or, \@excluding, \@operator, \@value, $startfrom * $resultsperpage, $resultsperpage, $authtypecode, $orderby );
- foreach (@$results) {
- my ($value) = $_->{'summary'};
- # Removes new lines
- $value =~ s/<br \/>/ /g;
- $value =~ s/\n//g;
- print nsb_clean($value) . "\n";
+ my $builder = Koha::SearchEngine::QueryBuilder->new(
+ { index => $Koha::SearchEngine::AUTHORITIES_INDEX } );
+ my $searcher = Koha::SearchEngine::Search->new(
+ { index => $Koha::SearchEngine::AUTHORITIES_INDEX } );
+ my $search_query = $builder->build_authorities_query_compat(
+ \@marclist, \@and_or, \@excluding, \@operator,
+ \@value, $authtypecode, $orderby
+ );
+ my $offset = $startfrom * $resultsperpage;
+ my ( $results, $total ) =
+ $searcher->search_auth_compat( $search_query, $offset,
+ $resultsperpage );
+
+ my %used_summaries; # hash to avoid duplicates
+ my @summaries;
+ foreach my $result (@$results) {
+ my $authorized = $result->{'summary'}->{'authorized'};
+ my $summary = join(
+ ' ',
+ map {
+ ( $searchtype eq 'mainmainentry' )
+ ? $_->{'hemain'}
+ : $_->{'heading'}
+ } @$authorized
+ );
+ $summary =~ s/^\s+//;
+ $summary =~ s/\s+$//;
+ $summary = nsb_clean($summary);
+ # test if already added ignoring case
+ unless ( exists $used_summaries{ lc($summary) } ) {
+ push @summaries, { 'summary' => $summary };
+ $used_summaries{ lc($summary) } = 1;
+ }